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.
Files changed (370) hide show
  1. {ellf_cli-18.1.0/ellf_cli.egg-info → ellf_cli-19.0.0}/PKG-INFO +1 -1
  2. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/README.md +4 -26
  3. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/cli.py +0 -1
  4. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/jobs.py +1 -0
  5. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/projects.py +31 -0
  6. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/sessions.py +3 -55
  7. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf.json +31 -111
  8. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/messages.py +0 -5
  9. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/query.py +1 -0
  10. 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
  11. 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
  12. {ellf_cli-18.1.0 → ellf_cli-19.0.0/ellf_cli.egg-info}/PKG-INFO +1 -1
  13. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/SOURCES.txt +2 -0
  14. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_projects.py +12 -0
  15. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_query.py +20 -0
  16. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_sessions.py +1 -28
  17. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/LICENSE +0 -0
  18. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/MANIFEST.in +0 -0
  19. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/__init__.py +0 -0
  20. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/__main__.py +0 -0
  21. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/about.json +0 -0
  22. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/about.py +0 -0
  23. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/appdirs.py +0 -0
  24. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/auth.py +0 -0
  25. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/cloud/__init__.py +0 -0
  26. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/cloud/gcp.py +0 -0
  27. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/cluster_config.py +0 -0
  28. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/__init__.py +0 -0
  29. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_cluster_select.py +0 -0
  30. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_org_select.py +0 -0
  31. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_project_scope.py +0 -0
  32. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_recipe_file.py +0 -0
  33. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_recipe_subcommand.py +0 -0
  34. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_state.py +0 -0
  35. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/_usage.py +0 -0
  36. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/actions.py +0 -0
  37. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/agents.py +0 -0
  38. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/assets.py +0 -0
  39. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/auth.py +0 -0
  40. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/clusters.py +0 -0
  41. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/config.py +0 -0
  42. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/datasets.py +0 -0
  43. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/__init__.py +0 -0
  44. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/cp.py +0 -0
  45. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/ls.py +0 -0
  46. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/rm.py +0 -0
  47. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/rsync.py +0 -0
  48. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/files/stats.py +0 -0
  49. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/general.py +0 -0
  50. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/import_export.py +0 -0
  51. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/__init__.py +0 -0
  52. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/_config_io.py +0 -0
  53. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/_helpers.py +0 -0
  54. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/configure.py +0 -0
  55. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/deploy.py +0 -0
  56. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/init.py +0 -0
  57. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/init_values.py +0 -0
  58. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/provision.py +0 -0
  59. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/register.py +0 -0
  60. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/setup.py +0 -0
  61. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/start.py +0 -0
  62. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/terraform.py +0 -0
  63. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/infra/tls.py +0 -0
  64. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/packages.py +0 -0
  65. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/paths.py +0 -0
  66. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/plans.py +0 -0
  67. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/publish_code.py +0 -0
  68. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/publish_data.py +0 -0
  69. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/recipes.py +0 -0
  70. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/secrets.py +0 -0
  71. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/services.py +0 -0
  72. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/support.py +0 -0
  73. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/tasks.py +0 -0
  74. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/todos.py +0 -0
  75. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/commands/users.py +0 -0
  76. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/config.py +0 -0
  77. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/.claude-plugin/plugin.json +0 -0
  78. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/.gitignore +0 -0
  79. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skill_variants.json +0 -0
  80. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +0 -0
  81. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/annotation_audit.md +0 -0
  82. {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
  83. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/label_schemes.md +0 -0
  84. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md +0 -0
  85. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/annotation_audit.md +0 -0
  86. {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
  87. {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
  88. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/label_schemes.md +0 -0
  89. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
  90. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.md +0 -0
  91. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md +0 -0
  92. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/annotation_metrics.md +0 -0
  93. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/training_monitoring.md +0 -0
  94. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md +0 -0
  95. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/annotation_metrics.md +0 -0
  96. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/training_monitoring.md +0 -0
  97. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/scripts/check_training.py +0 -0
  98. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +0 -0
  99. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-ops.coding/SKILL.md +0 -0
  100. {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
  101. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py +0 -0
  102. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.md +0 -0
  103. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
  104. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.md +0 -0
  105. {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
  106. {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
  107. {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
  108. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
  109. {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
  110. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
  111. {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
  112. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
  113. {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
  114. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
  115. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
  116. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
  117. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
  118. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
  119. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
  120. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md +0 -0
  121. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/consulting_patterns.md +0 -0
  122. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/explosion_strategy.md +0 -0
  123. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/label_schemes.md +0 -0
  124. {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
  125. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md +0 -0
  126. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/consulting_patterns.md +0 -0
  127. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/explosion_strategy.md +0 -0
  128. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/label_schemes.md +0 -0
  129. {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
  130. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md +0 -0
  131. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md +0 -0
  132. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.md +0 -0
  133. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md +0 -0
  134. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/diagnostics.md +0 -0
  135. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/evaluation_guide.md +0 -0
  136. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/model_selection.md +0 -0
  137. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/training_paradigms.md +0 -0
  138. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/workflow.md +0 -0
  139. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/SKILL.md +0 -0
  140. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_advanced.md +0 -0
  141. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_architectures.md +0 -0
  142. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_training.md +0 -0
  143. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/diagnostics.md +0 -0
  144. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/evaluation_guide.md +0 -0
  145. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/experiment_patterns.md +0 -0
  146. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/model_selection.md +0 -0
  147. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_paradigms.md +0 -0
  148. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_troubleshooting.md +0 -0
  149. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/workflow.md +0 -0
  150. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ellf_skills/skills/ellf-train.coding/scripts/ellf_logger.py +0 -0
  151. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/errors.py +0 -0
  152. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/helm.py +0 -0
  153. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/interactivity.py +0 -0
  154. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/key_pair.py +0 -0
  155. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/main.py +0 -0
  156. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/pypi_auth.py +0 -0
  157. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
  158. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
  159. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
  160. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
  161. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
  162. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
  163. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
  164. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
  165. {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
  166. {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
  167. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/testing/__init__.py +0 -0
  168. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ty.py +0 -0
  169. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/ui.py +0 -0
  170. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/url.py +0 -0
  171. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/util.py +0 -0
  172. {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
  173. {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
  174. {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
  175. {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
  176. {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
  177. {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
  178. {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
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {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
  190. {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
  191. {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
  192. {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
  193. {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
  194. {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
  195. {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
  196. {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
  197. {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
  198. {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
  199. {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
  200. {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
  201. {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
  202. {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
  203. {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
  204. {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
  205. {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
  206. {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
  207. {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
  208. {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
  209. {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
  210. {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
  211. {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
  212. {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
  213. {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
  214. {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
  215. {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
  216. {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
  217. {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
  218. {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
  219. {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
  220. {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
  221. {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
  222. {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
  223. {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
  224. {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
  225. {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
  226. {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
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {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
  233. {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
  234. {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
  235. {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
  236. {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
  237. {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
  238. {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
  239. {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
  240. {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
  241. {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
  242. {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
  243. {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
  244. {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
  245. {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
  246. {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
  247. {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
  248. {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
  249. {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
  250. {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
  251. {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
  252. {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
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {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
  262. {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
  263. {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
  264. {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
  265. {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
  266. {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
  267. {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
  268. {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
  269. {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
  270. {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
  271. {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
  272. {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
  273. {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
  274. {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
  275. {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
  276. {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
  277. {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
  278. {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
  279. {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
  280. {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
  281. {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
  282. {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
  283. {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
  284. {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
  285. {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
  286. {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
  287. {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
  288. {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
  289. {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
  290. {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
  291. {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
  292. {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
  293. {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
  294. {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
  295. {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
  296. {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
  297. {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
  298. {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
  299. {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
  300. {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
  301. {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
  302. {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
  303. {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
  304. {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
  305. {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
  306. {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
  307. {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
  308. {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
  309. {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
  310. {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
  311. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/__init__.py +0 -0
  312. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli/version/read_version.py +0 -0
  313. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/dependency_links.txt +0 -0
  314. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/entry_points.txt +0 -0
  315. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/not-zip-safe +0 -0
  316. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/requires.txt +0 -0
  317. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/ellf_cli.egg-info/top_level.txt +0 -0
  318. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/pyproject.toml +0 -0
  319. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/setup.cfg +0 -0
  320. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/setup.py +0 -0
  321. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_agents_info_stats.py +0 -0
  322. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_appdirs.py +0 -0
  323. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_auth.py +0 -0
  324. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_clusters_info_stats.py +0 -0
  325. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_config.py +0 -0
  326. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_errors.py +0 -0
  327. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_files_cp.py +0 -0
  328. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_files_cp_helpers.py +0 -0
  329. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_helm.py +0 -0
  330. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_import_export.py +0 -0
  331. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_info.py +0 -0
  332. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_config_io.py +0 -0
  333. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_configure.py +0 -0
  334. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_deploy_node_labels.py +0 -0
  335. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_get_terraform.py +0 -0
  336. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_init.py +0 -0
  337. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_provision.py +0 -0
  338. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_start_fixes.py +0 -0
  339. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_start_validation.py +0 -0
  340. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_state_bucket.py +0 -0
  341. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_infra_terraform_init.py +0 -0
  342. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_invalid_secrets.py +0 -0
  343. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_job_list_project_filter.py +0 -0
  344. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_jobs_info_hides_creator.py +0 -0
  345. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_jobs_list_unmatched.py +0 -0
  346. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_key_pair.py +0 -0
  347. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_login.py +0 -0
  348. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_logout.py +0 -0
  349. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_main.py +0 -0
  350. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_org_select.py +0 -0
  351. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_plans.py +0 -0
  352. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_projects_delete_confirm.py +0 -0
  353. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_publish_build_poll.py +0 -0
  354. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_publish_data.py +0 -0
  355. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_publish_import_root.py +0 -0
  356. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_publish_requirements.py +0 -0
  357. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_pypi_auth.py +0 -0
  358. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_recipe_file.py +0 -0
  359. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_recipes.py +0 -0
  360. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_state.py +0 -0
  361. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_support.py +0 -0
  362. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_todos.py +0 -0
  363. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_ty.py +0 -0
  364. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_ui.py +0 -0
  365. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_ui_extras.py +0 -0
  366. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_usage_counts.py +0 -0
  367. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_users_assign.py +0 -0
  368. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_users_info_stats.py +0 -0
  369. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_users_list.py +0 -0
  370. {ellf_cli-18.1.0 → ellf_cli-19.0.0}/tests/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ellf-cli
3
- Version: 18.1.0
3
+ Version: 19.0.0
4
4
  Summary: Ellf Command Line Interface
5
5
  Home-page: https://prodi.gy
6
6
  Author: ExplosionAI GmbH
@@ -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 and the examples in them.
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; disabling an example supersedes it with an ignored answer.
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, get_list_converter
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": "18.1.0",
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,
@@ -0,0 +1,3 @@
1
+ 18.1.0
2
+ patch
3
+ 324444f7-d24e-4189-b21f-1188894a3109
@@ -0,0 +1,3 @@
1
+ 18.1.1
2
+ major
3
+ e266a14a-7d96-4ece-92a3-8f34e64438a5
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ellf-cli
3
- Version: 18.1.0
3
+ Version: 19.0.0
4
4
  Summary: Ellf Command Line Interface
5
5
  Home-page: https://prodi.gy
6
6
  Author: ExplosionAI GmbH
@@ -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