ellf-cli 19.0.0__tar.gz → 19.0.3__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-19.0.0/ellf_cli.egg-info → ellf_cli-19.0.3}/PKG-INFO +1 -1
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/README.md +8 -8
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/datasets.py +3 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/sessions.py +20 -17
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf.json +14 -14
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +1 -1
- {ellf_cli-19.0.0/ellf_cli/ellf_skills/skills/ellf-annotate.coding → ellf_cli-19.0.3/ellf_cli/ellf_skills/skills/ellf-annotate.assistant}/references/annotation_audit.md +3 -1
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/builtin_ellf_annotation_recipes.md +5 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/label_schemes.md +13 -3
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md +1 -1
- {ellf_cli-19.0.0/ellf_cli/ellf_skills/skills/ellf-annotate.assistant → ellf_cli-19.0.3/ellf_cli/ellf_skills/skills/ellf-annotate.coding}/references/annotation_audit.md +3 -1
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_ellf_annotation_recipes.md +5 -0
- {ellf_cli-19.0.0/ellf_cli/ellf_skills/skills/ellf-project.coding → ellf_cli-19.0.3/ellf_cli/ellf_skills/skills/ellf-annotate.coding}/references/label_schemes.md +13 -3
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-ops.coding/references/data_infra_cli.md +2 -1
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md +4 -2
- {ellf_cli-19.0.0/ellf_cli/ellf_skills/skills/ellf-project.coding → ellf_cli-19.0.3/ellf_cli/ellf_skills/skills/ellf-project.assistant}/references/explosion_strategy.md +4 -3
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/label_schemes.md +13 -3
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/prodigy_llm_bot.md +6 -4
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md +4 -2
- {ellf_cli-19.0.0/ellf_cli/ellf_skills/skills/ellf-project.assistant → ellf_cli-19.0.3/ellf_cli/ellf_skills/skills/ellf-project.coding}/references/explosion_strategy.md +4 -3
- {ellf_cli-19.0.0/ellf_cli/ellf_skills/skills/ellf-annotate.coding → ellf_cli-19.0.3/ellf_cli/ellf_skills/skills/ellf-project.coding}/references/label_schemes.md +13 -3
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/prodigy_llm_bot.md +6 -4
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/messages.py +3 -2
- ellf_cli-19.0.3/ellf_cli/version/19.0.0_2026-09-29-11-05-31_patch_77d6f9f8-ead3-4d79-a4b2-b084b2dffc98 +3 -0
- ellf_cli-19.0.3/ellf_cli/version/19.0.1_2026-09-29-11-59-38_patch_bbf4753c-d641-4c2f-ac7c-02be6bd8e7c2 +3 -0
- ellf_cli-19.0.3/ellf_cli/version/19.0.2_2026-09-29-12-44-07_patch_19fdaa94-60dc-464b-93b8-c17607ebc7b6 +3 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3/ellf_cli.egg-info}/PKG-INFO +1 -1
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli.egg-info/SOURCES.txt +4 -0
- ellf_cli-19.0.3/tests/test_datasets_export.py +42 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_sessions.py +9 -8
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/LICENSE +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/MANIFEST.in +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/__init__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/__main__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/about.json +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/about.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/appdirs.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/auth.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/cli.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/cloud/__init__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/cloud/gcp.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/cluster_config.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/__init__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/_cluster_select.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/_org_select.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/_project_scope.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/_recipe_file.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/_recipe_subcommand.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/_state.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/_usage.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/actions.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/agents.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/assets.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/auth.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/clusters.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/config.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/files/__init__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/files/cp.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/files/ls.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/files/rm.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/files/rsync.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/files/stats.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/general.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/import_export.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/__init__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/_config_io.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/_helpers.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/configure.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/deploy.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/init.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/init_values.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/provision.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/register.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/setup.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/start.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/terraform.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/infra/tls.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/jobs.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/packages.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/paths.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/plans.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/projects.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/publish_code.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/publish_data.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/recipes.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/secrets.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/services.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/support.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/tasks.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/todos.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/commands/users.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/config.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/.claude-plugin/plugin.json +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/.gitignore +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skill_variants.json +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_prodigy_recipes.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/annotation_metrics.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/training_monitoring.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/annotation_metrics.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/training_monitoring.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/scripts/check_training.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-ops.coding/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/consulting_patterns.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/consulting_patterns.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/diagnostics.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/evaluation_guide.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/model_selection.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/training_paradigms.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/workflow.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/SKILL.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_advanced.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_architectures.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_training.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/diagnostics.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/evaluation_guide.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/experiment_patterns.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/model_selection.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_paradigms.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_troubleshooting.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/workflow.md +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-train.coding/scripts/ellf_logger.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/errors.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/helm.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/interactivity.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/key_pair.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/main.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/pypi_auth.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/query.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/testing/__init__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ty.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ui.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/url.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/util.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.114_2026-08-19-08-36-57__1a4e37c1-471e-4a81-b4d5-1ffe7dec3a61 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.114_2026-08-19-09-25-21_patch_33ff1e26-0e5e-46d8-8052-ab1d032e8b6c +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.115_2026-08-19-09-27-13_patch_4ac728c3-0342-4a36-adbc-e28d2d99b1ba +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.116_2026-08-19-09-30-47_patch_c706fef6-6813-4183-b268-12e7b00d7d0b +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.117_2026-08-19-09-39-14_patch_c6b0495f-2f88-4aa8-9ebf-0a235b4c407e +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.118_2026-08-19-09-52-00_patch_b395655a-8d78-4344-9266-6901c20f6517 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.119_2026-08-19-10-22-38_patch_8f95c49d-aedc-41b8-816d-ccb95f048831 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.120_2026-08-19-10-26-58_patch_7fbf35e6-cc01-4b75-8c9a-f5d054bcaf93 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.121_2026-08-19-10-42-02_patch_31a81b02-a886-4dea-84e0-67cc6ca412d5 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.122_2026-08-19-11-16-49_patch_1c4d7307-48d4-493e-936d-80af799d644b +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.123_2026-08-19-11-47-32_patch_d3d78d04-9989-45b1-91b1-93b571d8814a +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.124_2026-08-20-08-03-17_patch_57f4c389-2d19-41ce-aca4-13b61c62f387 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.125_2026-08-20-08-25-05_patch_7f368148-0d1c-4525-bbdf-c6d257ad861a +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.126_2026-08-20-14-51-36_patch_a99abcc8-3371-4c63-a759-bb7ea5b32432 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.127_2026-08-21-05-48-58_patch_34b4ccee-7596-4f57-93e9-774973cca58e +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.128_2026-08-21-10-47-20_patch_693112b9-927c-4a8f-8553-b06eef86079d +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.129_2026-08-21-11-16-54_patch_7a981666-01d9-4d1b-9ba3-2129744e3bd5 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.130_2026-08-21-13-09-36_patch_b7ad1a76-ce70-4d70-9d1a-7c414eba5bb4 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.131_2026-08-21-14-31-10_patch_9128ef66-193e-4caf-8710-afd86128e638 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.132_2026-08-24-08-59-34_patch_c600fc14-86a5-460f-9c4e-f0177056f756 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.133_2026-08-24-10-28-29_patch_b6ce3e32-9d7b-48ac-981a-270c22c180dd +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.134_2026-08-24-11-00-51_patch_a4fc0484-4a64-46a2-94f8-aa805254c7b0 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.135_2026-08-24-12-12-41_patch_a870a56f-9a65-49eb-92da-f572b26667d8 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.136_2026-08-24-12-42-46_patch_9b399356-6482-4291-8da7-e748a99c4b53 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.137_2026-08-24-12-53-57_patch_f7979348-1910-40cd-a535-90299eca84ee +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.138_2026-08-24-14-36-30_patch_ed0f8750-f663-498b-85e7-0d3f2213fcfe +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.139_2026-08-25-08-37-26_patch_3ba87e19-902b-4f76-b64c-90e5c0ca1fc6 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.140_2026-08-25-09-52-45_patch_abc830f2-df15-4385-b797-cdaf72c10752 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.141_2026-08-25-11-37-20_patch_1d9ec01e-06f6-4c8e-b095-af17d5b62b00 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.142_2026-08-26-07-38-49_patch_3dd23e36-e7df-494c-986f-a412861a8d40 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.143_2026-08-26-09-32-32_patch_7b7ebd34-de27-4b73-98a7-3e1501e16cd5 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.144_2026-08-26-10-56-43_patch_166064f2-2208-4c9b-9e25-25dc4cd32084 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.145_2026-08-26-11-37-29_patch_b997f3ee-d7d3-4408-9f2f-c8b6d08bdb3b +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.146_2026-08-26-12-15-20_patch_afbbb893-25db-468c-81db-2663ca373068 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.147_2026-08-26-14-10-50_patch_fd753b1f-2fa1-4ddb-a9e7-de690da85254 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.148_2026-08-27-09-08-35_patch_23814c0b-7f77-489c-b4a8-ceadd18146e3 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.149_2026-08-27-09-40-17_patch_8879d72e-a3d8-4abc-a16a-d9dcf75f0fa1 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.150_2026-08-27-10-57-25_patch_afbe60ed-3e23-4d88-be3c-f800d7002a7d +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.151_2026-08-28-09-02-46_patch_1d4ca23b-aeae-4ea8-96b1-8cf57371f29d +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.152_2026-08-28-15-37-24_patch_c9d0bdc1-a7e1-432b-92b9-92dc76fe0c78 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.153_2026-08-29-09-03-27_patch_7531573a-1b33-4092-aa9c-0e65f47b201f +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.154_2026-08-29-11-56-35_patch_919f5787-39c8-4dc1-ae6a-f27c28380f21 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.155_2026-08-29-15-15-59_patch_822f9ed8-c366-4e5f-9791-dee8467cf3ce +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.156_2026-08-29-16-19-01_patch_3ac2bf36-20f7-4c9f-9fdb-295d4466d59e +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.157_2026-08-30-17-32-17_patch_4302354c-c9c5-4be7-acd3-542872a748d8 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.158_2026-08-31-09-28-33_patch_3523774f-c25d-4102-8c1a-92fff046a48d +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.159_2026-08-31-10-31-01_patch_fe3e6290-2553-4154-a0a0-8b8a418280ed +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.160_2026-08-31-11-23-39_patch_e701a085-3d23-4212-b0af-73b1d419a4c1 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.161_2026-08-31-12-41-01_patch_074d7bde-c493-44db-bc15-e81fd91e2921 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.162_2026-08-31-13-58-06_patch_84db1d60-4280-433b-bd3a-22e5611cd315 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.163_2026-08-31-15-25-54_patch_1931c5ba-73df-48cb-8dcb-555ace0af267 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.163_2026-08-31-15-44-37_patch_3962e805-2a92-494a-a87b-b6e6d66c40a0 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.165_2026-08-31-19-48-59_patch_86e5b923-2b99-4b86-b542-469b197614be +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.166_2026-09-01-07-39-57_patch_c344892f-d542-4e7b-8f27-02365a411e15 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.167_2026-09-01-08-21-53_patch_e199d419-282a-4dbb-8756-cf98b7037e2b +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.168_2026-09-01-09-12-31_patch_235c9fe0-da15-431d-bb56-01e2b9b15f4b +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.169_2026-09-01-11-54-19_patch_98b617ab-d130-42b5-93f2-19cae56d4c4c +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.170_2026-09-02-09-27-28_patch_e448d2e6-b7ec-4235-96bf-0173b3623c87 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.171_2026-09-02-12-52-44_patch_e6a241c2-1d62-482c-a9eb-9e3373395c50 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.172_2026-09-04-08-47-04_patch_daae079f-c104-4fcd-bb57-7bff68e80ad9 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.173_2026-09-04-12-34-42_patch_399c4cbd-0c28-4dfd-a4ec-e569420a36e4 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.174_2026-09-04-13-08-48_patch_f5cfe3d5-808e-45e4-bafc-00d0554838ee +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.175_2026-09-04-17-20-46_patch_1ef542fa-5d8e-4d90-aa15-9fc4cea3dfec +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.176_2026-09-05-08-25-05_patch_ced5521f-f9da-4640-a921-95fcb5cd2e6d +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.177_2026-09-05-09-00-16_patch_803c1ad4-a9af-4953-92c5-d882dec03ea2 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.178_2026-09-05-09-30-34_patch_012f6259-2e3f-4591-9806-1920fd06cb1f +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.179_2026-09-05-09-33-43_patch_f4bdf28c-d584-47a5-b699-8c883330162c +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.180_2026-09-05-12-02-21_patch_34a14b01-d22d-44a8-ac63-be0370a61422 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.181_2026-09-05-12-47-46_patch_56b18867-99f6-4d5c-8215-7b9d60d34010 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.182_2026-09-05-13-35-18_patch_61b7d4d1-73c8-4603-9b0c-593e7405587f +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.183_2026-09-06-07-27-09_patch_d76331b2-e3a3-4c0b-8412-ecd131b6ac02 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.184_2026-09-06-10-21-47_patch_7680b7a1-49f0-4eef-b12e-4c854407448c +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.185_2026-09-06-10-30-40_patch_e56c2183-77f8-44ef-a92e-7377ea6ce8c1 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.186_2026-09-07-10-00-51_patch_67de5683-d208-4bc0-8fb6-7677377908e7 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.187_2026-09-07-10-18-13_patch_2086cee2-276b-48f7-80ce-6a17397b9541 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.188_2026-09-07-12-51-28_patch_d6590822-068f-4a19-814d-34bbf204ba6e +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.189_2026-09-07-12-55-23_patch_7e0fb04b-4d40-4490-974f-c74ba2ae55a1 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.190_2026-09-08-08-58-03_patch_15e3ac1e-4475-4272-bdd8-d00bb0db8f17 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.191_2026-09-08-09-55-58_patch_3d350e50-ee53-4282-bc75-d2251142c46e +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.192_2026-09-08-11-12-21_patch_0733223b-1ae2-4b5b-897f-dfc57574ff83 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.193_2026-09-08-21-48-17_patch_8d07d4e6-3555-4720-85c9-9452570fae2d +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.194_2026-09-09-07-53-43_patch_69559429-aa42-4b62-9bd7-cdfded1c00d0 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.195_2026-09-09-09-55-40_patch_bbf67f1d-3b9a-43a2-b1bc-22df3fed8a34 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.196_2026-09-09-09-59-47_patch_70d76812-7b3c-4192-ad49-fcaccc29b0da +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.197_2026-09-09-13-06-06_patch_d455be0b-5421-492a-b952-fab0fd8110f8 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.198_2026-09-09-13-14-34_patch_267f54e5-311e-435e-882f-8e19191325ea +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.199_2026-09-09-22-24-18_patch_81e3e453-ca0e-42fa-9c21-8f94d43c05f2 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.200_2026-09-10-07-19-50_patch_911714fa-1fa3-4165-bfe6-d10c650bf5bf +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.201_2026-09-10-10-14-19_patch_864015f2-b0b0-4563-a1c8-155629cb9126 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.202_2026-09-10-11-00-05_patch_18270ecf-e770-4e69-8bcf-e5143c39929b +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.203_2026-09-10-11-10-41_patch_ff273ab1-44f3-4bc0-b184-3396e943df04 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.204_2026-09-10-13-02-02_patch_d4ee41e2-d13c-4941-8605-3f1a42b56b22 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.205_2026-09-10-13-57-50_patch_284df67e-5957-4b0c-bc64-5581db6ddecc +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.206_2026-09-11-10-18-50_patch_1ac7e410-0e62-4eef-bbe4-ebf93c9d0869 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/17.0.207_2026-09-11-15-26-02_major_3f1b3ed7-eaac-41f5-b740-0af3331595d9 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.0_2026-09-12-10-01-10_patch_8995783a-a9fa-4c4e-90b3-6386a4c481eb +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.10_2026-09-14-16-09-38_patch_9403d562-eed0-4125-a8b3-09cd92a13298 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.11_2026-09-15-09-05-57_patch_8b22dba2-d931-4c4d-ae60-db3238d5e73d +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.12_2026-09-15-11-18-52_patch_81314afa-e70d-4ad8-b45b-3f8d62b983e7 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.13_2026-09-16-08-00-55_patch_bfa30fc0-3281-4de6-bb56-d7290c98d1c3 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.14_2026-09-16-14-38-26_patch_aae6e9b0-88f4-4bcf-b611-3308c7fcd6eb +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.15_2026-09-17-07-58-54_patch_43d40582-effd-4925-a8bd-e70fecf1faab +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.16_2026-09-17-08-12-37_patch_b4db2d23-88f1-45c1-82d9-78d38014fcb6 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.17_2026-09-18-09-38-19_patch_25697fc3-e9a8-4980-962b-e6cb0a4760c5 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.18_2026-09-18-09-54-33_patch_d37d9c71-c469-4d94-90d7-4898915ee991 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.19_2026-09-18-10-47-33_patch_47607b3c-d1b6-4864-b9b0-00a2a8d2ac32 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.1_2026-09-12-17-33-30_patch_f6ea2c99-a715-4c4d-876a-23ed8c62a83d +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.20_2026-09-18-11-07-21_patch_5a336f91-63a6-4877-97ed-da89395cc8f5 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.21_2026-09-18-13-34-52_patch_c56462e1-63d9-498f-a912-c80c5f0171d1 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.22_2026-09-20-08-10-45_patch_6afa2c20-bcef-4b7d-8685-2c9815d8683f +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.23_2026-09-20-08-38-35_patch_a7f169e5-37ab-4ec0-bf89-d14770181303 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.24_2026-09-20-15-49-27_patch_c1222081-ff44-4f20-aea2-5840b6d76efd +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.25_2026-09-21-06-11-40_patch_6df46dd9-e7d3-4e71-bec4-e5c93b4ac863 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.26_2026-09-21-07-54-11_patch_cc52dd36-5eba-4094-a1b0-d6f79f103441 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.27_2026-09-21-08-36-49_patch_a25fa125-9bcd-4317-8da5-851c1c329631 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.28_2026-09-21-09-44-01_patch_4430a721-0b3c-4f6a-b9bc-a53e667161bb +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.29_2026-09-21-10-58-07_patch_83b2b942-60a4-4bef-afd1-99690ba52b69 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.2_2026-09-13-06-36-33_patch_176bb944-1c49-4dd3-a001-8fce908825a0 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.30_2026-09-21-12-51-16_patch_519b9a65-d400-4234-b113-36b46e315507 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.31_2026-09-22-06-53-35_patch_5c45a235-81b6-4d05-801a-07dc7db61400 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.32_2026-09-22-07-42-04_patch_f12c6415-8166-4063-9e5d-26601b929d63 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.33_2026-09-22-08-12-32_patch_cec31bb0-a6cb-43e6-8407-25aba322b54c +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.34_2026-09-23-07-09-16_patch_659fccbb-c0a0-4f6f-bc87-e6abaa8815a7 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.35_2026-09-23-09-38-52_patch_023f904d-807a-4833-8a40-570365e8ec06 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.36_2026-09-23-10-05-33_patch_846fb491-2b1b-47ed-ac1f-ba40e744e199 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.37_2026-09-23-13-08-30_patch_8e4b1d24-156e-4ffe-8e4a-b8740ec18588 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.38_2026-09-24-06-41-37_patch_67adb1d6-3f49-4357-a67f-b1d48f23a972 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.39_2026-09-24-15-24-32_patch_e5dd375d-5643-4514-9b65-8d877c4a2bb2 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.3_2026-09-13-12-32-46_patch_58e5ce3a-f2a7-4789-b2cd-5cc75c72b6ec +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.40_2026-09-24-19-58-14_patch_ff18824b-be51-4a3d-a621-e96279e53c3e +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.41_2026-09-26-09-24-52_patch_b9979267-30f9-440a-a4ce-c611991d4886 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.42_2026-09-28-12-39-34_patch_dda535d9-8922-4eb9-ab51-6ecff0650c10 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.43_2026-09-28-13-35-27_minor_aca1168a-1286-4326-9d0c-2f2587c9fe92 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.4_2026-09-13-12-45-14_patch_b6c79d55-8f85-4f47-a304-df52b122c38c +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.5_2026-09-13-14-11-18_patch_9b111116-5e62-472a-b72c-d1bbafa22c97 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.5_2026-09-13-17-01-11_patch_d4bf61c0-83ac-4dd3-b512-a65805d298c8 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.6_2026-09-14-11-31-04_patch_fd2ebda6-22cb-4e7d-9452-2f6f2640e828 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.7_2026-09-13-17-06-08_patch_428af161-0b27-43c2-8751-e5f7874df120 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.0.9_2026-09-14-12-37-42_patch_b2ca0529-4b67-4fa4-8fdc-5f5e9f5d5166 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.1.0_2026-09-28-14-27-54_patch_324444f7-d24e-4189-b21f-1188894a3109 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/18.1.1_2026-09-28-21-03-07_major_e266a14a-7d96-4ece-92a3-8f34e64438a5 +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/__init__.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/version/read_version.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli.egg-info/dependency_links.txt +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli.egg-info/entry_points.txt +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli.egg-info/not-zip-safe +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli.egg-info/requires.txt +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli.egg-info/top_level.txt +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/pyproject.toml +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/setup.cfg +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/setup.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_agents_info_stats.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_appdirs.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_auth.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_clusters_info_stats.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_config.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_errors.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_files_cp.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_files_cp_helpers.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_helm.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_import_export.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_info.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_config_io.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_configure.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_deploy_node_labels.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_get_terraform.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_init.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_provision.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_start_fixes.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_start_validation.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_state_bucket.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_infra_terraform_init.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_invalid_secrets.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_job_list_project_filter.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_jobs_info_hides_creator.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_jobs_list_unmatched.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_key_pair.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_login.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_logout.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_main.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_org_select.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_plans.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_projects.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_projects_delete_confirm.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_publish_build_poll.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_publish_data.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_publish_import_root.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_publish_requirements.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_pypi_auth.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_query.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_recipe_file.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_recipes.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_state.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_support.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_todos.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_ty.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_ui.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_ui_extras.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_usage_counts.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_users_assign.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_users_info_stats.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_users_list.py +0 -0
- {ellf_cli-19.0.0 → ellf_cli-19.0.3}/tests/test_util.py +0 -0
|
@@ -1307,23 +1307,23 @@ Mint a fresh 90-day token for an existing service. Issuing a new token does not
|
|
|
1307
1307
|
|
|
1308
1308
|
### `ellf sessions`
|
|
1309
1309
|
|
|
1310
|
-
View,
|
|
1310
|
+
View, exclude and activate a task's annotation sessions
|
|
1311
1311
|
|
|
1312
1312
|
#### `ellf sessions list`
|
|
1313
1313
|
|
|
1314
|
-
List a task's annotation sessions, with how much each annotated and whether it was
|
|
1314
|
+
List a task's annotation sessions, with how much each annotated, how much of that the dataset still holds, and whether it was excluded
|
|
1315
1315
|
|
|
1316
1316
|
| Argument | Type | Description | Default |
|
|
1317
1317
|
| --- | --- | --- | --- |
|
|
1318
1318
|
| `name_or_id` | `Union[str, UUID]` | Name or ID of the task | |
|
|
1319
1319
|
| `--project` | `str` | Name, slug, or ID of task's project or the last project if not set | `None` |
|
|
1320
1320
|
| `--cluster` | `str` | Name, slug, or ID of the cluster to search for task name (or the last cluster if not set) | `None` |
|
|
1321
|
-
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'annotator', 'started', '
|
|
1321
|
+
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'annotator', 'started', 'annotated', 'active', 'status'] | `['id', 'annotator', 'started', 'annotated', 'active', 'status']` |
|
|
1322
1322
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
1323
1323
|
|
|
1324
|
-
#### `ellf sessions
|
|
1324
|
+
#### `ellf sessions exclude`
|
|
1325
1325
|
|
|
1326
|
-
|
|
1326
|
+
Exclude an annotation session: take its examples out of the task's dataset, so training and exports leave them out and their tasks are served again. They still count as the annotator's work
|
|
1327
1327
|
|
|
1328
1328
|
| Argument | Type | Description | Default |
|
|
1329
1329
|
| --- | --- | --- | --- |
|
|
@@ -1332,7 +1332,7 @@ Disable an annotation session: take its examples out of the task's dataset, so t
|
|
|
1332
1332
|
|
|
1333
1333
|
#### `ellf sessions activate`
|
|
1334
1334
|
|
|
1335
|
-
Activate
|
|
1335
|
+
Activate an excluded annotation session: put its examples back into the task's dataset
|
|
1336
1336
|
|
|
1337
1337
|
| Argument | Type | Description | Default |
|
|
1338
1338
|
| --- | --- | --- | --- |
|
|
@@ -1383,7 +1383,7 @@ List the tasks in a project. Uses your default project unless --project is given
|
|
|
1383
1383
|
| Argument | Type | Description | Default |
|
|
1384
1384
|
| --- | --- | --- | --- |
|
|
1385
1385
|
| `--project` | `str` | Name, slug, or ID of task's project or the last project if not set | `None` |
|
|
1386
|
-
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'created_by_user', 'state'] | `['id', 'name', 'state']` |
|
|
1386
|
+
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'last_execution_started', 'created_by_user', 'state'] | `['id', 'name', 'state']` |
|
|
1387
1387
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
1388
1388
|
|
|
1389
1389
|
#### `ellf tasks info`
|
|
@@ -1395,7 +1395,7 @@ Print information about a task on the cluster
|
|
|
1395
1395
|
| `name_or_id` | `Union[str, UUID]` | Name or ID of the task | |
|
|
1396
1396
|
| `--project` | `str` | Name, slug, or ID of task's project or the last project if not set | `None` |
|
|
1397
1397
|
| `--cluster` | `str` | Name, slug, or ID of the cluster to search for task name (or the last cluster if not set) | `None` |
|
|
1398
|
-
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'created_by_user', 'last_execution_id', 'related_actions', 'url_logs', 'url'] | `None` |
|
|
1398
|
+
| `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'last_execution_started', 'created_by_user', 'last_execution_id', 'related_actions', 'url_logs', 'url'] | `None` |
|
|
1399
1399
|
| `--json` | `bool` | Output the result as JSON | `False` |
|
|
1400
1400
|
|
|
1401
1401
|
#### `ellf tasks logs`
|
|
@@ -164,6 +164,9 @@ def export(
|
|
|
164
164
|
cluster_id = auth.cluster_id
|
|
165
165
|
|
|
166
166
|
dataset = resolve_dataset(name_or_id, cluster_id=cluster_id)
|
|
167
|
+
legacy = auth.broker_client.datasets.total_example_count(dataset.name).legacy
|
|
168
|
+
if legacy:
|
|
169
|
+
raise CLIError(Messages.E066.format(name=dataset.name, count=legacy))
|
|
167
170
|
|
|
168
171
|
def get_examples_page(page: int):
|
|
169
172
|
return auth.broker_client.datasets.read_examples(
|
|
@@ -2,7 +2,7 @@
|
|
|
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
|
-
``{dataset}-{task_id}-{annotator_id}-{session_id}``.
|
|
5
|
+
``{dataset}-{task_id}-{annotator_id}-{session_id}``. Excluding a session
|
|
6
6
|
takes its examples out of the task's dataset while keeping them in that
|
|
7
7
|
session dataset.
|
|
8
8
|
"""
|
|
@@ -20,7 +20,7 @@ from ..query import resolve_task
|
|
|
20
20
|
from ..ui import print_mutation_result, print_table_with_select
|
|
21
21
|
from ._state import get_auth_state
|
|
22
22
|
|
|
23
|
-
SESSION_FIELDS = ["id", "annotator", "started", "
|
|
23
|
+
SESSION_FIELDS = ["id", "annotator", "started", "annotated", "active", "status"]
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def _sitting_name(
|
|
@@ -45,31 +45,34 @@ def list(
|
|
|
45
45
|
select: builtins.list[str] = SESSION_FIELDS,
|
|
46
46
|
as_json: bool = False,
|
|
47
47
|
) -> Sequence[dict[str, Any]]:
|
|
48
|
-
"""List a task's annotation sessions, with how much each annotated
|
|
49
|
-
whether it was
|
|
48
|
+
"""List a task's annotation sessions, with how much each annotated, how
|
|
49
|
+
much of that the dataset still holds, and whether it was excluded"""
|
|
50
50
|
auth = get_auth_state()
|
|
51
51
|
task = resolve_task(name_or_id, cluster_id=cluster_id, project_id=project_id)
|
|
52
52
|
dataset = auth.client.task.dataset(task.id)
|
|
53
53
|
summary = auth.broker_client.datasets.session_counts(dataset.name)
|
|
54
54
|
removed = set(summary.removed or [])
|
|
55
55
|
rows = []
|
|
56
|
+
counts = summary.counts or {}
|
|
56
57
|
for session in auth.client.session.all(task_id=task.id):
|
|
57
58
|
name = _sitting_name(dataset.name, task.id, session.annotator_id, session.id)
|
|
59
|
+
count = counts.get(name)
|
|
58
60
|
rows.append(
|
|
59
61
|
{
|
|
60
62
|
"id": str(session.id),
|
|
61
63
|
"annotator": session.annotator_name,
|
|
62
64
|
"started": session.created.isoformat(timespec="seconds"),
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
+
"annotated": count.annotated if count else 0,
|
|
66
|
+
"active": count.active if count else 0,
|
|
67
|
+
"status": "excluded" if name in removed else "active",
|
|
65
68
|
}
|
|
66
69
|
)
|
|
67
70
|
print_table_with_select(rows, select=select, as_json=as_json)
|
|
68
71
|
return rows
|
|
69
72
|
|
|
70
73
|
|
|
71
|
-
def
|
|
72
|
-
session_id: UUID,
|
|
74
|
+
def _set_session_excluded(
|
|
75
|
+
session_id: UUID, excluded: bool, as_json: bool
|
|
73
76
|
) -> dict[str, Any]:
|
|
74
77
|
auth = get_auth_state()
|
|
75
78
|
session = auth.client.session.read(id=session_id)
|
|
@@ -80,11 +83,11 @@ def _set_session_disabled(
|
|
|
80
83
|
datasets = auth.broker_client.datasets
|
|
81
84
|
change = (
|
|
82
85
|
datasets.remove_session(dataset.name, name)
|
|
83
|
-
if
|
|
86
|
+
if excluded
|
|
84
87
|
else datasets.restore_session(dataset.name, name)
|
|
85
88
|
)
|
|
86
89
|
result = {"session": str(session_id), "examples": change.examples}
|
|
87
|
-
message = Messages.T072 if
|
|
90
|
+
message = Messages.T072 if excluded else Messages.T073
|
|
88
91
|
print_mutation_result(
|
|
89
92
|
result, message.format(id=session_id, count=change.examples), as_json=as_json
|
|
90
93
|
)
|
|
@@ -93,15 +96,15 @@ def _set_session_disabled(
|
|
|
93
96
|
|
|
94
97
|
@cli.subcommand(
|
|
95
98
|
"sessions",
|
|
96
|
-
"
|
|
99
|
+
"exclude",
|
|
97
100
|
session_id=Arg(help=Messages.session_id),
|
|
98
101
|
as_json=Arg("--json", help=Messages.as_json),
|
|
99
102
|
)
|
|
100
|
-
def
|
|
101
|
-
"""
|
|
103
|
+
def exclude(session_id: UUID, as_json: bool = False) -> dict[str, Any]:
|
|
104
|
+
"""Exclude an annotation session: take its examples out of the task's
|
|
102
105
|
dataset, so training and exports leave them out and their tasks are served
|
|
103
106
|
again. They still count as the annotator's work"""
|
|
104
|
-
return
|
|
107
|
+
return _set_session_excluded(session_id, True, as_json)
|
|
105
108
|
|
|
106
109
|
|
|
107
110
|
@cli.subcommand(
|
|
@@ -111,6 +114,6 @@ def disable(session_id: UUID, as_json: bool = False) -> dict[str, Any]:
|
|
|
111
114
|
as_json=Arg("--json", help=Messages.as_json),
|
|
112
115
|
)
|
|
113
116
|
def activate(session_id: UUID, as_json: bool = False) -> dict[str, Any]:
|
|
114
|
-
"""Activate
|
|
115
|
-
task's dataset"""
|
|
116
|
-
return
|
|
117
|
+
"""Activate an excluded annotation session: put its examples back into
|
|
118
|
+
the task's dataset"""
|
|
119
|
+
return _set_session_excluded(session_id, False, as_json)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"prog": "ellf",
|
|
3
3
|
"help": "Ellf Command Line Interface.",
|
|
4
|
-
"version": "19.0.
|
|
4
|
+
"version": "19.0.3",
|
|
5
5
|
"extra_key": "_extra",
|
|
6
6
|
"commands": {
|
|
7
7
|
"actions": {
|
|
@@ -159,7 +159,7 @@
|
|
|
159
159
|
"sessions": {
|
|
160
160
|
"name": "sessions",
|
|
161
161
|
"args": [],
|
|
162
|
-
"description": "View,
|
|
162
|
+
"description": "View, exclude and activate a task's annotation sessions",
|
|
163
163
|
"allow_extra": false,
|
|
164
164
|
"parent": null,
|
|
165
165
|
"is_placeholder": true
|
|
@@ -7459,9 +7459,9 @@
|
|
|
7459
7459
|
"id": "select",
|
|
7460
7460
|
"option": "--select",
|
|
7461
7461
|
"short": null,
|
|
7462
|
-
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'annotator', 'started', '
|
|
7463
|
-
"default": "['id', 'annotator', 'started', '
|
|
7464
|
-
"help": "Comma-separated fields to select and show in output. Available: ['id', 'annotator', 'started', '
|
|
7462
|
+
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'annotator', 'started', 'annotated', 'active', 'status']",
|
|
7463
|
+
"default": "['id', 'annotator', 'started', 'annotated', 'active', 'status']",
|
|
7464
|
+
"help": "Comma-separated fields to select and show in output. Available: ['id', 'annotator', 'started', 'annotated', 'active', 'status'] (list[str])",
|
|
7465
7465
|
"action": null,
|
|
7466
7466
|
"choices": null,
|
|
7467
7467
|
"has_converter": true,
|
|
@@ -7482,13 +7482,13 @@
|
|
|
7482
7482
|
"orig_type": "bool"
|
|
7483
7483
|
}
|
|
7484
7484
|
],
|
|
7485
|
-
"description": "List a task's annotation sessions, with how much each annotated
|
|
7485
|
+
"description": "List a task's annotation sessions, with how much each annotated, how\nmuch of that the dataset still holds, and whether it was excluded",
|
|
7486
7486
|
"allow_extra": false,
|
|
7487
7487
|
"parent": "sessions",
|
|
7488
7488
|
"is_placeholder": false
|
|
7489
7489
|
},
|
|
7490
|
-
"
|
|
7491
|
-
"name": "
|
|
7490
|
+
"exclude": {
|
|
7491
|
+
"name": "exclude",
|
|
7492
7492
|
"args": [
|
|
7493
7493
|
{
|
|
7494
7494
|
"id": "session_id",
|
|
@@ -7517,7 +7517,7 @@
|
|
|
7517
7517
|
"orig_type": "bool"
|
|
7518
7518
|
}
|
|
7519
7519
|
],
|
|
7520
|
-
"description": "
|
|
7520
|
+
"description": "Exclude an annotation session: take its examples out of the task's\ndataset, so training and exports leave them out and their tasks are served\nagain. They still count as the annotator's work",
|
|
7521
7521
|
"allow_extra": false,
|
|
7522
7522
|
"parent": "sessions",
|
|
7523
7523
|
"is_placeholder": false
|
|
@@ -7552,7 +7552,7 @@
|
|
|
7552
7552
|
"orig_type": "bool"
|
|
7553
7553
|
}
|
|
7554
7554
|
],
|
|
7555
|
-
"description": "Activate
|
|
7555
|
+
"description": "Activate an excluded annotation session: put its examples back into\nthe task's dataset",
|
|
7556
7556
|
"allow_extra": false,
|
|
7557
7557
|
"parent": "sessions",
|
|
7558
7558
|
"is_placeholder": false
|
|
@@ -7797,9 +7797,9 @@
|
|
|
7797
7797
|
"id": "select",
|
|
7798
7798
|
"option": "--select",
|
|
7799
7799
|
"short": null,
|
|
7800
|
-
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'created_by_user', 'state']",
|
|
7800
|
+
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'last_execution_started', 'created_by_user', 'state']",
|
|
7801
7801
|
"default": "['id', 'name', 'state']",
|
|
7802
|
-
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'created_by_user', 'state'] (list[str])",
|
|
7802
|
+
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'last_execution_started', 'created_by_user', 'state'] (list[str])",
|
|
7803
7803
|
"action": null,
|
|
7804
7804
|
"choices": null,
|
|
7805
7805
|
"has_converter": true,
|
|
@@ -7871,9 +7871,9 @@
|
|
|
7871
7871
|
"id": "select",
|
|
7872
7872
|
"option": "--select",
|
|
7873
7873
|
"short": null,
|
|
7874
|
-
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'created_by_user', 'last_execution_id', 'related_actions', 'url_logs', 'url']",
|
|
7874
|
+
"orig_help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'last_execution_started', 'created_by_user', 'last_execution_id', 'related_actions', 'url_logs', 'url']",
|
|
7875
7875
|
"default": null,
|
|
7876
|
-
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'created_by_user', 'last_execution_id', 'related_actions', 'url_logs', 'url'] (list[str])",
|
|
7876
|
+
"help": "Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'project_id', 'cluster_id', 'name', 'recipe_name', 'recipe_title', 'project_name', 'error', 'plan', 'job_type', 'cli_command', 'last_execution_started', 'created_by_user', 'last_execution_id', 'related_actions', 'url_logs', 'url'] (list[str])",
|
|
7877
7877
|
"action": null,
|
|
7878
7878
|
"choices": null,
|
|
7879
7879
|
"has_converter": true,
|
{ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md
RENAMED
|
@@ -168,4 +168,4 @@ When you finish:
|
|
|
168
168
|
|------|---------------|--------------|
|
|
169
169
|
| `${CLAUDE_SKILL_DIR}/references/annotation_audit.md` | Readiness checklist: objective, schema, recipe fit, data, dataset | Before every launch |
|
|
170
170
|
| `${CLAUDE_SKILL_DIR}/references/builtin_ellf_annotation_recipes.md` | Built-in Ellf task and agent recipes with supported workflows | Recipe selection |
|
|
171
|
-
| `${CLAUDE_SKILL_DIR}/references/label_schemes.md` | Label scheme (`labels` asset) format, design and use by tasks and agents | Labels need definitions, or writing guidelines |
|
|
171
|
+
| `${CLAUDE_SKILL_DIR}/references/label_schemes.md` | Label scheme (`labels` asset) format, design and use by tasks and agents. Built-in `ner`, `spans` and `textcat` only | Labels need definitions, or writing guidelines |
|
|
@@ -41,7 +41,9 @@ passes.
|
|
|
41
41
|
Labels that aren't self-evident need a written definition before launch: what the
|
|
42
42
|
label covers, which look-alikes not to mark, and a few boundary examples. Keep them
|
|
43
43
|
in a label scheme (a `labels` asset, see `label_schemes.md`) used by the task, so
|
|
44
|
-
annotators see the descriptions and LLM agents get them in every prompt.
|
|
44
|
+
annotators see the descriptions and LLM agents get them in every prompt. Only the
|
|
45
|
+
built-in `ner`, `spans` and `textcat` recipes (and custom recipes that implement it)
|
|
46
|
+
take a scheme; for any other recipe, keep the definitions in the annotation guidelines. If a label
|
|
45
47
|
can't be defined without "it depends", the schema isn't ready.
|
|
46
48
|
|
|
47
49
|
### Task complexity
|
|
@@ -44,6 +44,11 @@ workflows.
|
|
|
44
44
|
|
|
45
45
|
## Label schemes
|
|
46
46
|
|
|
47
|
+
Only `ner`, `spans` and `textcat` take a label scheme. No other built-in recipe accepts
|
|
48
|
+
a `labels` asset, so don't suggest one for them: put the label definitions in the
|
|
49
|
+
annotation instructions instead, or hand a custom recipe that takes a scheme off
|
|
50
|
+
to the coding agent (`/ellf-handoff`).
|
|
51
|
+
|
|
47
52
|
`ner`, `spans` and `textcat` take their labels as the **Labels** field, switched between **List** (typed labels) and **Asset** (a
|
|
48
53
|
scheme): an asset of kind
|
|
49
54
|
`labels` holding one JSON file with the labels in order and an optional definition
|
|
@@ -8,6 +8,15 @@ Read this when designing labels for a project, when turning an agreed label set
|
|
|
8
8
|
into something a task can use, or when writing annotation guidelines for labels
|
|
9
9
|
that already exist.
|
|
10
10
|
|
|
11
|
+
**Only some recipes take a scheme.** A scheme is a recipe argument, and the only
|
|
12
|
+
built-in recipes that have it are `ner`, `spans` and `textcat` (`--label-scheme`, or
|
|
13
|
+
**Asset** on the **Labels** field). A custom recipe can take one too, if it implements
|
|
14
|
+
it with `props.label_scheme` (hand a new one off to the coding agent with `/ellf-handoff`). No other built-in recipe accepts a
|
|
15
|
+
`labels` asset, so never suggest a scheme or `--label-scheme` for one of them. For
|
|
16
|
+
those, write the label definitions into the annotation guidelines (an `instructions`
|
|
17
|
+
asset) instead, or build a custom recipe if the definitions need to reach annotators
|
|
18
|
+
and agents label by label.
|
|
19
|
+
|
|
11
20
|
## Format
|
|
12
21
|
|
|
13
22
|
The file is a JSON object that maps each label to an object. The key order is the
|
|
@@ -89,13 +98,14 @@ Show it to the user and settle the labels before publishing.
|
|
|
89
98
|
previewed from the Assets page and from the asset picker in recipe forms.
|
|
90
99
|
- **Reuse:** check for an existing `labels` asset (`ellf assets list`, or the Assets
|
|
91
100
|
page) before writing a new one. Use one scheme per label set, not one per task.
|
|
92
|
-
- **Tasks:** the built-in `ner`, `spans` and `textcat` recipes
|
|
93
|
-
|
|
101
|
+
- **Tasks:** only the built-in `ner`, `spans` and `textcat` recipes (and custom recipes
|
|
102
|
+
that implement it) take a scheme. They accept either a typed list of labels
|
|
103
|
+
(`--label A,B`) or a scheme (`--label-scheme <asset>`). In the web form, the
|
|
94
104
|
**Labels** field switches between **List** and **Asset**. Prefer a scheme whenever
|
|
95
105
|
the labels need explaining, are reused across tasks, or agents will annotate.
|
|
96
106
|
- **Annotators** see a label's description when they hover the label in the annotation
|
|
97
107
|
app (and on choice options for text classification).
|
|
98
|
-
- **Agents:** a task passes its label definitions on to every LLM agent assigned to it
|
|
108
|
+
- **Agents:** a task with a scheme passes its label definitions on to every LLM agent assigned to it
|
|
99
109
|
(`gemini_agent`, `hf_llm_agent`), and they're included in each prompt: description,
|
|
100
110
|
`do_not_mark` and the examples that fit the task type. An agent can have its own
|
|
101
111
|
scheme on top (`--labels.scheme`), whose definitions replace the task's for the
|
{ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md
RENAMED
|
@@ -199,4 +199,4 @@ When you finish:
|
|
|
199
199
|
| `${CLAUDE_SKILL_DIR}/references/annotation_audit.md` | Readiness checklist: objective, schema, recipe fit, data, dataset | Before every launch |
|
|
200
200
|
| `${CLAUDE_SKILL_DIR}/references/builtin_ellf_annotation_recipes.md` | Built-in Ellf task and agent recipes with supported workflows | Recipe selection for cluster |
|
|
201
201
|
| `${CLAUDE_SKILL_DIR}/references/builtin_prodigy_recipes.md` | Built-in standalone Prodigy recipes | Recipe selection for local |
|
|
202
|
-
| `${CLAUDE_SKILL_DIR}/references/label_schemes.md` | Label scheme (`labels` asset) format, design and use by tasks and agents | Labels need definitions, building them from annotated data, or writing guidelines |
|
|
202
|
+
| `${CLAUDE_SKILL_DIR}/references/label_schemes.md` | Label scheme (`labels` asset) format, design and use by tasks and agents. Built-in `ner`, `spans` and `textcat` only | Labels need definitions, building them from annotated data, or writing guidelines |
|
|
@@ -41,7 +41,9 @@ passes.
|
|
|
41
41
|
Labels that aren't self-evident need a written definition before launch: what the
|
|
42
42
|
label covers, which look-alikes not to mark, and a few boundary examples. Keep them
|
|
43
43
|
in a label scheme (a `labels` asset, see `label_schemes.md`) used by the task, so
|
|
44
|
-
annotators see the descriptions and LLM agents get them in every prompt.
|
|
44
|
+
annotators see the descriptions and LLM agents get them in every prompt. Only the
|
|
45
|
+
built-in `ner`, `spans` and `textcat` recipes (and custom recipes that implement it)
|
|
46
|
+
take a scheme; for any other recipe, keep the definitions in the annotation guidelines. If a label
|
|
45
47
|
can't be defined without "it depends", the schema isn't ready.
|
|
46
48
|
|
|
47
49
|
### Task complexity
|
|
@@ -44,6 +44,11 @@ workflows.
|
|
|
44
44
|
|
|
45
45
|
## Label schemes
|
|
46
46
|
|
|
47
|
+
Only `ner`, `spans` and `textcat` take a label scheme. No other built-in recipe accepts
|
|
48
|
+
a `labels` asset, so don't suggest one for them: put the label definitions in the
|
|
49
|
+
annotation instructions instead, or build a custom recipe that takes a scheme
|
|
50
|
+
(`/ellf-prodigy`).
|
|
51
|
+
|
|
47
52
|
`ner`, `spans` and `textcat` take their labels as `--label A,B` for a typed list, or `--label-scheme <asset>` for a scheme: an asset of kind
|
|
48
53
|
`labels` holding one JSON file with the labels in order and an optional definition
|
|
49
54
|
for each (description, look-alikes not to mark, examples). Prefer a scheme when the
|
|
@@ -8,6 +8,15 @@ Read this when designing labels for a project, when turning an agreed label set
|
|
|
8
8
|
into something a task can use, or when writing annotation guidelines for labels
|
|
9
9
|
that already exist.
|
|
10
10
|
|
|
11
|
+
**Only some recipes take a scheme.** A scheme is a recipe argument, and the only
|
|
12
|
+
built-in recipes that have it are `ner`, `spans` and `textcat` (`--label-scheme`, or
|
|
13
|
+
**Asset** on the **Labels** field). A custom recipe can take one too, if it implements
|
|
14
|
+
it with `props.label_scheme` (see `/ellf-prodigy`). No other built-in recipe accepts a
|
|
15
|
+
`labels` asset, so never suggest a scheme or `--label-scheme` for one of them. For
|
|
16
|
+
those, write the label definitions into the annotation guidelines (an `instructions`
|
|
17
|
+
asset) instead, or build a custom recipe if the definitions need to reach annotators
|
|
18
|
+
and agents label by label.
|
|
19
|
+
|
|
11
20
|
## Format
|
|
12
21
|
|
|
13
22
|
The file is a JSON object that maps each label to an object. The key order is the
|
|
@@ -122,13 +131,14 @@ Show the draft to the user, settle it, then publish it and use it in the tasks.
|
|
|
122
131
|
previewed from the Assets page and from the asset picker in recipe forms.
|
|
123
132
|
- **Reuse:** check for an existing `labels` asset (`ellf assets list`, or the Assets
|
|
124
133
|
page) before writing a new one. Use one scheme per label set, not one per task.
|
|
125
|
-
- **Tasks:** the built-in `ner`, `spans` and `textcat` recipes
|
|
126
|
-
|
|
134
|
+
- **Tasks:** only the built-in `ner`, `spans` and `textcat` recipes (and custom recipes
|
|
135
|
+
that implement it) take a scheme. They accept either a typed list of labels
|
|
136
|
+
(`--label A,B`) or a scheme (`--label-scheme <asset>`). In the web form, the
|
|
127
137
|
**Labels** field switches between **List** and **Asset**. Prefer a scheme whenever
|
|
128
138
|
the labels need explaining, are reused across tasks, or agents will annotate.
|
|
129
139
|
- **Annotators** see a label's description when they hover the label in the annotation
|
|
130
140
|
app (and on choice options for text classification).
|
|
131
|
-
- **Agents:** a task passes its label definitions on to every LLM agent assigned to it
|
|
141
|
+
- **Agents:** a task with a scheme passes its label definitions on to every LLM agent assigned to it
|
|
132
142
|
(`gemini_agent`, `hf_llm_agent`), and they're included in each prompt: description,
|
|
133
143
|
`do_not_mark` and the examples that fit the task type. An agent can have its own
|
|
134
144
|
scheme on top (`--labels.scheme`), whose definitions replace the task's for the
|
|
@@ -131,7 +131,8 @@ This is the preferred way to upload local files to the cluster — it copies the
|
|
|
131
131
|
|
|
132
132
|
Asset kinds that hold a single document: `instructions` (one Markdown file of
|
|
133
133
|
annotation guidelines) and `labels` (one JSON label scheme, the labels of a task with
|
|
134
|
-
their definitions
|
|
134
|
+
their definitions; only the built-in `ner`, `spans` and `textcat` recipes, and custom
|
|
135
|
+
recipes that implement it, take one). A label scheme is checked when a task or agent loads it, so
|
|
135
136
|
validate the JSON locally before publishing:
|
|
136
137
|
|
|
137
138
|
```bash
|
{ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md
RENAMED
|
@@ -373,10 +373,12 @@ especially the annotation readiness checklist at the end of that section.
|
|
|
373
373
|
- Review the user's proposed labels (or propose your own) against the factoring
|
|
374
374
|
principle and schema design principles from the strategy reference. Challenge
|
|
375
375
|
labels that mix business logic with language understanding.
|
|
376
|
-
- Once the labels are settled,
|
|
376
|
+
- Once the labels are settled, and the task will use the built-in `ner`, `spans` or
|
|
377
|
+
`textcat` recipe (or a custom recipe that takes a scheme), write them down as a label scheme: a `labels` JSON
|
|
377
378
|
file with a description, `do_not_mark` look-alikes and a few boundary examples per
|
|
378
379
|
label (format and design advice in `${CLAUDE_SKILL_DIR}/references/label_schemes.md`).
|
|
379
|
-
Check for an existing `labels` asset first.
|
|
380
|
+
Check for an existing `labels` asset first. No other built-in recipe takes a scheme:
|
|
381
|
+
for those, the definitions go into the annotation guidelines instead. The scheme is a plan deliverable: tasks
|
|
380
382
|
take it as their labels, annotators see the descriptions, and the LLM agents get
|
|
381
383
|
the definitions in every prompt. The user uploads it on the cluster's Assets page as kind `labels`, or
|
|
382
384
|
hand publishing off with `/ellf-handoff`.
|
|
@@ -297,9 +297,10 @@ Use this to sanity-check an annotation plan before committing to it:
|
|
|
297
297
|
- Is training happening early, with diagnostics (train-curve) to validate
|
|
298
298
|
whether more data of the same kind will help?
|
|
299
299
|
- Has a pilot project been conducted and edge cases documented before scaling?
|
|
300
|
-
- Are the labels written down
|
|
301
|
-
|
|
302
|
-
|
|
300
|
+
- Are the labels written down with a description, look-alikes not to mark and
|
|
301
|
+
boundary examples per label, so annotators and agents share one definition of
|
|
302
|
+
each label? As a label scheme (a `labels` asset) for `ner`, `spans` and
|
|
303
|
+
`textcat` tasks, which take one, and in the annotation guidelines otherwise.
|
|
303
304
|
|
|
304
305
|
---
|
|
305
306
|
|
|
@@ -8,6 +8,15 @@ Read this when designing labels for a project, when turning an agreed label set
|
|
|
8
8
|
into something a task can use, or when writing annotation guidelines for labels
|
|
9
9
|
that already exist.
|
|
10
10
|
|
|
11
|
+
**Only some recipes take a scheme.** A scheme is a recipe argument, and the only
|
|
12
|
+
built-in recipes that have it are `ner`, `spans` and `textcat` (`--label-scheme`, or
|
|
13
|
+
**Asset** on the **Labels** field). A custom recipe can take one too, if it implements
|
|
14
|
+
it with `props.label_scheme` (hand a new one off to the coding agent with `/ellf-handoff`). No other built-in recipe accepts a
|
|
15
|
+
`labels` asset, so never suggest a scheme or `--label-scheme` for one of them. For
|
|
16
|
+
those, write the label definitions into the annotation guidelines (an `instructions`
|
|
17
|
+
asset) instead, or build a custom recipe if the definitions need to reach annotators
|
|
18
|
+
and agents label by label.
|
|
19
|
+
|
|
11
20
|
## Format
|
|
12
21
|
|
|
13
22
|
The file is a JSON object that maps each label to an object. The key order is the
|
|
@@ -89,13 +98,14 @@ Show it to the user and settle the labels before publishing.
|
|
|
89
98
|
previewed from the Assets page and from the asset picker in recipe forms.
|
|
90
99
|
- **Reuse:** check for an existing `labels` asset (`ellf assets list`, or the Assets
|
|
91
100
|
page) before writing a new one. Use one scheme per label set, not one per task.
|
|
92
|
-
- **Tasks:** the built-in `ner`, `spans` and `textcat` recipes
|
|
93
|
-
|
|
101
|
+
- **Tasks:** only the built-in `ner`, `spans` and `textcat` recipes (and custom recipes
|
|
102
|
+
that implement it) take a scheme. They accept either a typed list of labels
|
|
103
|
+
(`--label A,B`) or a scheme (`--label-scheme <asset>`). In the web form, the
|
|
94
104
|
**Labels** field switches between **List** and **Asset**. Prefer a scheme whenever
|
|
95
105
|
the labels need explaining, are reused across tasks, or agents will annotate.
|
|
96
106
|
- **Annotators** see a label's description when they hover the label in the annotation
|
|
97
107
|
app (and on choice options for text classification).
|
|
98
|
-
- **Agents:** a task passes its label definitions on to every LLM agent assigned to it
|
|
108
|
+
- **Agents:** a task with a scheme passes its label definitions on to every LLM agent assigned to it
|
|
99
109
|
(`gemini_agent`, `hf_llm_agent`), and they're included in each prompt: description,
|
|
100
110
|
`do_not_mark` and the examples that fit the task type. An agent can have its own
|
|
101
111
|
scheme on top (`--labels.scheme`), whose definitions replace the task's for the
|
|
@@ -74,12 +74,14 @@ The LLM agents include the task's annotation instructions in their prompts by de
|
|
|
74
74
|
so plan the guidelines as a Markdown `instructions` asset on the task: the same
|
|
75
75
|
document serves annotators and agents, and an agent can add its own on top.
|
|
76
76
|
|
|
77
|
-
They also annotate with the task's labels and use the task's label definitions.
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
They also annotate with the task's labels and use the task's label definitions. If the
|
|
78
|
+
task runs the built-in `ner`, `spans` or `textcat` recipe (the only built-ins that take
|
|
79
|
+
one), plan the labels as a label scheme (a `labels` asset, see `label_schemes.md`) used
|
|
80
|
+
by the task: every prompt then includes each label's description, what not to mark and the
|
|
80
81
|
examples that fit the task type. An agent can add its own scheme on top, whose
|
|
81
82
|
definitions replace the task's for the labels it defines, e.g. to correct a label the
|
|
82
83
|
model keeps confusing without changing what annotators see. `hf_model_agent` doesn't
|
|
83
|
-
use label definitions.
|
|
84
|
+
use label definitions. Tasks on any other recipe can't take a scheme: put the label
|
|
85
|
+
definitions in the instructions instead.
|
|
84
86
|
|
|
85
87
|
The plan implications above apply to all of them.
|
{ellf_cli-19.0.0 → ellf_cli-19.0.3}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md
RENAMED
|
@@ -388,10 +388,12 @@ especially the annotation readiness checklist at the end of that section.
|
|
|
388
388
|
- Review the user's proposed labels (or propose your own) against the factoring
|
|
389
389
|
principle and schema design principles from the strategy reference. Challenge
|
|
390
390
|
labels that mix business logic with language understanding.
|
|
391
|
-
- Once the labels are settled,
|
|
391
|
+
- Once the labels are settled, and the task will use the built-in `ner`, `spans` or
|
|
392
|
+
`textcat` recipe (or a custom recipe that takes a scheme), write them down as a label scheme: a `labels` JSON
|
|
392
393
|
file with a description, `do_not_mark` look-alikes and a few boundary examples per
|
|
393
394
|
label (format and design advice in `${CLAUDE_SKILL_DIR}/references/label_schemes.md`).
|
|
394
|
-
Check for an existing `labels` asset first.
|
|
395
|
+
Check for an existing `labels` asset first. No other built-in recipe takes a scheme:
|
|
396
|
+
for those, the definitions go into the annotation guidelines instead. The scheme is a plan deliverable: tasks
|
|
395
397
|
take it as their labels, annotators see the descriptions, and the LLM agents get
|
|
396
398
|
the definitions in every prompt. Publish it with `ellf publish data ... --kind labels` once the user agrees.
|
|
397
399
|
- Recommend the agile annotation workflow: pilot first, refine schema, train
|
|
@@ -297,9 +297,10 @@ Use this to sanity-check an annotation plan before committing to it:
|
|
|
297
297
|
- Is training happening early, with diagnostics (train-curve) to validate
|
|
298
298
|
whether more data of the same kind will help?
|
|
299
299
|
- Has a pilot project been conducted and edge cases documented before scaling?
|
|
300
|
-
- Are the labels written down
|
|
301
|
-
|
|
302
|
-
|
|
300
|
+
- Are the labels written down with a description, look-alikes not to mark and
|
|
301
|
+
boundary examples per label, so annotators and agents share one definition of
|
|
302
|
+
each label? As a label scheme (a `labels` asset) for `ner`, `spans` and
|
|
303
|
+
`textcat` tasks, which take one, and in the annotation guidelines otherwise.
|
|
303
304
|
|
|
304
305
|
---
|
|
305
306
|
|
|
@@ -8,6 +8,15 @@ Read this when designing labels for a project, when turning an agreed label set
|
|
|
8
8
|
into something a task can use, or when writing annotation guidelines for labels
|
|
9
9
|
that already exist.
|
|
10
10
|
|
|
11
|
+
**Only some recipes take a scheme.** A scheme is a recipe argument, and the only
|
|
12
|
+
built-in recipes that have it are `ner`, `spans` and `textcat` (`--label-scheme`, or
|
|
13
|
+
**Asset** on the **Labels** field). A custom recipe can take one too, if it implements
|
|
14
|
+
it with `props.label_scheme` (see `/ellf-prodigy`). No other built-in recipe accepts a
|
|
15
|
+
`labels` asset, so never suggest a scheme or `--label-scheme` for one of them. For
|
|
16
|
+
those, write the label definitions into the annotation guidelines (an `instructions`
|
|
17
|
+
asset) instead, or build a custom recipe if the definitions need to reach annotators
|
|
18
|
+
and agents label by label.
|
|
19
|
+
|
|
11
20
|
## Format
|
|
12
21
|
|
|
13
22
|
The file is a JSON object that maps each label to an object. The key order is the
|
|
@@ -122,13 +131,14 @@ Show the draft to the user, settle it, then publish it and use it in the tasks.
|
|
|
122
131
|
previewed from the Assets page and from the asset picker in recipe forms.
|
|
123
132
|
- **Reuse:** check for an existing `labels` asset (`ellf assets list`, or the Assets
|
|
124
133
|
page) before writing a new one. Use one scheme per label set, not one per task.
|
|
125
|
-
- **Tasks:** the built-in `ner`, `spans` and `textcat` recipes
|
|
126
|
-
|
|
134
|
+
- **Tasks:** only the built-in `ner`, `spans` and `textcat` recipes (and custom recipes
|
|
135
|
+
that implement it) take a scheme. They accept either a typed list of labels
|
|
136
|
+
(`--label A,B`) or a scheme (`--label-scheme <asset>`). In the web form, the
|
|
127
137
|
**Labels** field switches between **List** and **Asset**. Prefer a scheme whenever
|
|
128
138
|
the labels need explaining, are reused across tasks, or agents will annotate.
|
|
129
139
|
- **Annotators** see a label's description when they hover the label in the annotation
|
|
130
140
|
app (and on choice options for text classification).
|
|
131
|
-
- **Agents:** a task passes its label definitions on to every LLM agent assigned to it
|
|
141
|
+
- **Agents:** a task with a scheme passes its label definitions on to every LLM agent assigned to it
|
|
132
142
|
(`gemini_agent`, `hf_llm_agent`), and they're included in each prompt: description,
|
|
133
143
|
`do_not_mark` and the examples that fit the task type. An agent can have its own
|
|
134
144
|
scheme on top (`--labels.scheme`), whose definitions replace the task's for the
|
|
@@ -74,12 +74,14 @@ The LLM agents include the task's annotation instructions in their prompts by de
|
|
|
74
74
|
so plan the guidelines as a Markdown `instructions` asset on the task: the same
|
|
75
75
|
document serves annotators and agents, and an agent can add its own on top.
|
|
76
76
|
|
|
77
|
-
They also annotate with the task's labels and use the task's label definitions.
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
They also annotate with the task's labels and use the task's label definitions. If the
|
|
78
|
+
task runs the built-in `ner`, `spans` or `textcat` recipe (the only built-ins that take
|
|
79
|
+
one), plan the labels as a label scheme (a `labels` asset, see `label_schemes.md`) used
|
|
80
|
+
by the task: every prompt then includes each label's description, what not to mark and the
|
|
80
81
|
examples that fit the task type. An agent can add its own scheme on top, whose
|
|
81
82
|
definitions replace the task's for the labels it defines, e.g. to correct a label the
|
|
82
83
|
model keeps confusing without changing what annotators see. `hf_model_agent` doesn't
|
|
83
|
-
use label definitions.
|
|
84
|
+
use label definitions. Tasks on any other recipe can't take a scheme: put the label
|
|
85
|
+
definitions in the instructions instead.
|
|
84
86
|
|
|
85
87
|
The plan implications above apply to all of them.
|