ellf-cli 20.0.4__tar.gz → 20.0.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ellf_cli-20.0.4/ellf_cli.egg-info → ellf_cli-20.0.6}/PKG-INFO +1 -1
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/README.md +1 -1
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/publish_code.py +27 -3
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf.json +3 -3
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/messages.py +10 -0
- ellf_cli-20.0.6/ellf_cli/version/20.0.4_2026-10-14-16-20-24_patch_c6672844-8227-4e0a-9fb5-36af7e7141dc +3 -0
- ellf_cli-20.0.6/ellf_cli/version/20.0.5_2026-10-15-08-53-28_patch_10154146-8afd-4632-b250-9b4b9f5bf67c +3 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6/ellf_cli.egg-info}/PKG-INFO +1 -1
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli.egg-info/SOURCES.txt +3 -0
- ellf_cli-20.0.6/tests/test_publish_versions.py +90 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/LICENSE +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/MANIFEST.in +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/__init__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/__main__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/about.json +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/about.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/agents.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/appdirs.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/auth.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/cli.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/cloud/__init__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/cloud/gcp.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/cluster_config.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/__init__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/_cluster_select.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/_org_select.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/_project_scope.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/_recipe_file.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/_recipe_subcommand.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/_state.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/_usage.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/actions.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/agents.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/assets.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/auth.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/clusters.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/config.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/datasets.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/files/__init__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/files/cp.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/files/ls.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/files/rm.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/files/rsync.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/files/stats.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/general.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/import_export.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/__init__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/_config_io.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/_helpers.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/configure.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/deploy.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/hibernate.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/init.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/init_values.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/pause.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/provision.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/register.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/setup.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/start.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/terraform.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/infra/tls.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/jobs.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/mcp.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/packages.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/paths.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/plans.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/projects.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/publish_data.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/recipes.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/secrets.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/services.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/sessions.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/support.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/tasks.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/todos.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/commands/users.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/config.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/.gitignore +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/render.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/SKILL.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/SKILL.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/references/annotation_audit.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/references/annotation_audit.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/references/builtin_ellf_annotation_recipes.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/references/builtin_ellf_annotation_recipes.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/references/builtin_prodigy_recipes.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/references/label_schemes.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/references/label_schemes.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-monitor/SKILL.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-monitor/SKILL.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-monitor/references/annotation_metrics.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-monitor/references/annotation_metrics.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-monitor/references/training_monitoring.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-monitor/references/training_monitoring.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-monitor/scripts.coding/check_training.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-ops/SKILL.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-ops/SKILL.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-ops/references.coding/data_infra_cli.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-ops/scripts.coding/run_job.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_service_recipe.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-project/SKILL.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-project/SKILL.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-project/references/annotation_agents.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-project/references/consulting_patterns.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-project/references/explosion_strategy.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-project/references/label_schemes.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-project/references/label_schemes.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-support/SKILL.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-support/SKILL.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/SKILL.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/SKILL.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/config_advanced.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/config_architectures.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/config_training.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/diagnostics.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/evaluation_guide.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/experiment_patterns.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/model_selection.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/training_paradigms.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/training_troubleshooting.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/workflow.assistant.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/workflow.coding.md +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/scripts.coding/ellf_logger.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/errors.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/helm.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/interactivity.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/key_pair.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/main.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/mcp_proxy.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/pypi_auth.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/query.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/testing/__init__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ty.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ui.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/url.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/util.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.114_2026-08-19-08-36-57__1a4e37c1-471e-4a81-b4d5-1ffe7dec3a61 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.114_2026-08-19-09-25-21_patch_33ff1e26-0e5e-46d8-8052-ab1d032e8b6c +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.115_2026-08-19-09-27-13_patch_4ac728c3-0342-4a36-adbc-e28d2d99b1ba +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.116_2026-08-19-09-30-47_patch_c706fef6-6813-4183-b268-12e7b00d7d0b +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.117_2026-08-19-09-39-14_patch_c6b0495f-2f88-4aa8-9ebf-0a235b4c407e +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.118_2026-08-19-09-52-00_patch_b395655a-8d78-4344-9266-6901c20f6517 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.119_2026-08-19-10-22-38_patch_8f95c49d-aedc-41b8-816d-ccb95f048831 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.120_2026-08-19-10-26-58_patch_7fbf35e6-cc01-4b75-8c9a-f5d054bcaf93 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.121_2026-08-19-10-42-02_patch_31a81b02-a886-4dea-84e0-67cc6ca412d5 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.122_2026-08-19-11-16-49_patch_1c4d7307-48d4-493e-936d-80af799d644b +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.123_2026-08-19-11-47-32_patch_d3d78d04-9989-45b1-91b1-93b571d8814a +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.124_2026-08-20-08-03-17_patch_57f4c389-2d19-41ce-aca4-13b61c62f387 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.125_2026-08-20-08-25-05_patch_7f368148-0d1c-4525-bbdf-c6d257ad861a +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.126_2026-08-20-14-51-36_patch_a99abcc8-3371-4c63-a759-bb7ea5b32432 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.127_2026-08-21-05-48-58_patch_34b4ccee-7596-4f57-93e9-774973cca58e +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.128_2026-08-21-10-47-20_patch_693112b9-927c-4a8f-8553-b06eef86079d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.129_2026-08-21-11-16-54_patch_7a981666-01d9-4d1b-9ba3-2129744e3bd5 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.130_2026-08-21-13-09-36_patch_b7ad1a76-ce70-4d70-9d1a-7c414eba5bb4 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.131_2026-08-21-14-31-10_patch_9128ef66-193e-4caf-8710-afd86128e638 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.132_2026-08-24-08-59-34_patch_c600fc14-86a5-460f-9c4e-f0177056f756 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.133_2026-08-24-10-28-29_patch_b6ce3e32-9d7b-48ac-981a-270c22c180dd +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.134_2026-08-24-11-00-51_patch_a4fc0484-4a64-46a2-94f8-aa805254c7b0 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.135_2026-08-24-12-12-41_patch_a870a56f-9a65-49eb-92da-f572b26667d8 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.136_2026-08-24-12-42-46_patch_9b399356-6482-4291-8da7-e748a99c4b53 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.137_2026-08-24-12-53-57_patch_f7979348-1910-40cd-a535-90299eca84ee +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.138_2026-08-24-14-36-30_patch_ed0f8750-f663-498b-85e7-0d3f2213fcfe +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.139_2026-08-25-08-37-26_patch_3ba87e19-902b-4f76-b64c-90e5c0ca1fc6 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.140_2026-08-25-09-52-45_patch_abc830f2-df15-4385-b797-cdaf72c10752 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.141_2026-08-25-11-37-20_patch_1d9ec01e-06f6-4c8e-b095-af17d5b62b00 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.142_2026-08-26-07-38-49_patch_3dd23e36-e7df-494c-986f-a412861a8d40 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.143_2026-08-26-09-32-32_patch_7b7ebd34-de27-4b73-98a7-3e1501e16cd5 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.144_2026-08-26-10-56-43_patch_166064f2-2208-4c9b-9e25-25dc4cd32084 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.145_2026-08-26-11-37-29_patch_b997f3ee-d7d3-4408-9f2f-c8b6d08bdb3b +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.146_2026-08-26-12-15-20_patch_afbbb893-25db-468c-81db-2663ca373068 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.147_2026-08-26-14-10-50_patch_fd753b1f-2fa1-4ddb-a9e7-de690da85254 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.148_2026-08-27-09-08-35_patch_23814c0b-7f77-489c-b4a8-ceadd18146e3 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.149_2026-08-27-09-40-17_patch_8879d72e-a3d8-4abc-a16a-d9dcf75f0fa1 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.150_2026-08-27-10-57-25_patch_afbe60ed-3e23-4d88-be3c-f800d7002a7d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.151_2026-08-28-09-02-46_patch_1d4ca23b-aeae-4ea8-96b1-8cf57371f29d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.152_2026-08-28-15-37-24_patch_c9d0bdc1-a7e1-432b-92b9-92dc76fe0c78 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.153_2026-08-29-09-03-27_patch_7531573a-1b33-4092-aa9c-0e65f47b201f +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.154_2026-08-29-11-56-35_patch_919f5787-39c8-4dc1-ae6a-f27c28380f21 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.155_2026-08-29-15-15-59_patch_822f9ed8-c366-4e5f-9791-dee8467cf3ce +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.156_2026-08-29-16-19-01_patch_3ac2bf36-20f7-4c9f-9fdb-295d4466d59e +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.157_2026-08-30-17-32-17_patch_4302354c-c9c5-4be7-acd3-542872a748d8 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.158_2026-08-31-09-28-33_patch_3523774f-c25d-4102-8c1a-92fff046a48d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.159_2026-08-31-10-31-01_patch_fe3e6290-2553-4154-a0a0-8b8a418280ed +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.160_2026-08-31-11-23-39_patch_e701a085-3d23-4212-b0af-73b1d419a4c1 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.161_2026-08-31-12-41-01_patch_074d7bde-c493-44db-bc15-e81fd91e2921 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.162_2026-08-31-13-58-06_patch_84db1d60-4280-433b-bd3a-22e5611cd315 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.163_2026-08-31-15-25-54_patch_1931c5ba-73df-48cb-8dcb-555ace0af267 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.163_2026-08-31-15-44-37_patch_3962e805-2a92-494a-a87b-b6e6d66c40a0 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.165_2026-08-31-19-48-59_patch_86e5b923-2b99-4b86-b542-469b197614be +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.166_2026-09-01-07-39-57_patch_c344892f-d542-4e7b-8f27-02365a411e15 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.167_2026-09-01-08-21-53_patch_e199d419-282a-4dbb-8756-cf98b7037e2b +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.168_2026-09-01-09-12-31_patch_235c9fe0-da15-431d-bb56-01e2b9b15f4b +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.169_2026-09-01-11-54-19_patch_98b617ab-d130-42b5-93f2-19cae56d4c4c +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.170_2026-09-02-09-27-28_patch_e448d2e6-b7ec-4235-96bf-0173b3623c87 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.171_2026-09-02-12-52-44_patch_e6a241c2-1d62-482c-a9eb-9e3373395c50 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.172_2026-09-04-08-47-04_patch_daae079f-c104-4fcd-bb57-7bff68e80ad9 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.173_2026-09-04-12-34-42_patch_399c4cbd-0c28-4dfd-a4ec-e569420a36e4 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.174_2026-09-04-13-08-48_patch_f5cfe3d5-808e-45e4-bafc-00d0554838ee +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.175_2026-09-04-17-20-46_patch_1ef542fa-5d8e-4d90-aa15-9fc4cea3dfec +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.176_2026-09-05-08-25-05_patch_ced5521f-f9da-4640-a921-95fcb5cd2e6d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.177_2026-09-05-09-00-16_patch_803c1ad4-a9af-4953-92c5-d882dec03ea2 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.178_2026-09-05-09-30-34_patch_012f6259-2e3f-4591-9806-1920fd06cb1f +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.179_2026-09-05-09-33-43_patch_f4bdf28c-d584-47a5-b699-8c883330162c +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.180_2026-09-05-12-02-21_patch_34a14b01-d22d-44a8-ac63-be0370a61422 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.181_2026-09-05-12-47-46_patch_56b18867-99f6-4d5c-8215-7b9d60d34010 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.182_2026-09-05-13-35-18_patch_61b7d4d1-73c8-4603-9b0c-593e7405587f +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.183_2026-09-06-07-27-09_patch_d76331b2-e3a3-4c0b-8412-ecd131b6ac02 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.184_2026-09-06-10-21-47_patch_7680b7a1-49f0-4eef-b12e-4c854407448c +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.185_2026-09-06-10-30-40_patch_e56c2183-77f8-44ef-a92e-7377ea6ce8c1 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.186_2026-09-07-10-00-51_patch_67de5683-d208-4bc0-8fb6-7677377908e7 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.187_2026-09-07-10-18-13_patch_2086cee2-276b-48f7-80ce-6a17397b9541 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.188_2026-09-07-12-51-28_patch_d6590822-068f-4a19-814d-34bbf204ba6e +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.189_2026-09-07-12-55-23_patch_7e0fb04b-4d40-4490-974f-c74ba2ae55a1 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.190_2026-09-08-08-58-03_patch_15e3ac1e-4475-4272-bdd8-d00bb0db8f17 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.191_2026-09-08-09-55-58_patch_3d350e50-ee53-4282-bc75-d2251142c46e +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.192_2026-09-08-11-12-21_patch_0733223b-1ae2-4b5b-897f-dfc57574ff83 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.193_2026-09-08-21-48-17_patch_8d07d4e6-3555-4720-85c9-9452570fae2d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.194_2026-09-09-07-53-43_patch_69559429-aa42-4b62-9bd7-cdfded1c00d0 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.195_2026-09-09-09-55-40_patch_bbf67f1d-3b9a-43a2-b1bc-22df3fed8a34 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.196_2026-09-09-09-59-47_patch_70d76812-7b3c-4192-ad49-fcaccc29b0da +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.197_2026-09-09-13-06-06_patch_d455be0b-5421-492a-b952-fab0fd8110f8 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.198_2026-09-09-13-14-34_patch_267f54e5-311e-435e-882f-8e19191325ea +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.199_2026-09-09-22-24-18_patch_81e3e453-ca0e-42fa-9c21-8f94d43c05f2 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.200_2026-09-10-07-19-50_patch_911714fa-1fa3-4165-bfe6-d10c650bf5bf +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.201_2026-09-10-10-14-19_patch_864015f2-b0b0-4563-a1c8-155629cb9126 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.202_2026-09-10-11-00-05_patch_18270ecf-e770-4e69-8bcf-e5143c39929b +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.203_2026-09-10-11-10-41_patch_ff273ab1-44f3-4bc0-b184-3396e943df04 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.204_2026-09-10-13-02-02_patch_d4ee41e2-d13c-4941-8605-3f1a42b56b22 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.205_2026-09-10-13-57-50_patch_284df67e-5957-4b0c-bc64-5581db6ddecc +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.206_2026-09-11-10-18-50_patch_1ac7e410-0e62-4eef-bbe4-ebf93c9d0869 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/17.0.207_2026-09-11-15-26-02_major_3f1b3ed7-eaac-41f5-b740-0af3331595d9 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.0_2026-09-12-10-01-10_patch_8995783a-a9fa-4c4e-90b3-6386a4c481eb +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.10_2026-09-14-16-09-38_patch_9403d562-eed0-4125-a8b3-09cd92a13298 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.11_2026-09-15-09-05-57_patch_8b22dba2-d931-4c4d-ae60-db3238d5e73d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.12_2026-09-15-11-18-52_patch_81314afa-e70d-4ad8-b45b-3f8d62b983e7 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.13_2026-09-16-08-00-55_patch_bfa30fc0-3281-4de6-bb56-d7290c98d1c3 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.14_2026-09-16-14-38-26_patch_aae6e9b0-88f4-4bcf-b611-3308c7fcd6eb +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.15_2026-09-17-07-58-54_patch_43d40582-effd-4925-a8bd-e70fecf1faab +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.16_2026-09-17-08-12-37_patch_b4db2d23-88f1-45c1-82d9-78d38014fcb6 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.17_2026-09-18-09-38-19_patch_25697fc3-e9a8-4980-962b-e6cb0a4760c5 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.18_2026-09-18-09-54-33_patch_d37d9c71-c469-4d94-90d7-4898915ee991 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.19_2026-09-18-10-47-33_patch_47607b3c-d1b6-4864-b9b0-00a2a8d2ac32 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.1_2026-09-12-17-33-30_patch_f6ea2c99-a715-4c4d-876a-23ed8c62a83d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.20_2026-09-18-11-07-21_patch_5a336f91-63a6-4877-97ed-da89395cc8f5 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.21_2026-09-18-13-34-52_patch_c56462e1-63d9-498f-a912-c80c5f0171d1 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.22_2026-09-20-08-10-45_patch_6afa2c20-bcef-4b7d-8685-2c9815d8683f +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.23_2026-09-20-08-38-35_patch_a7f169e5-37ab-4ec0-bf89-d14770181303 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.24_2026-09-20-15-49-27_patch_c1222081-ff44-4f20-aea2-5840b6d76efd +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.25_2026-09-21-06-11-40_patch_6df46dd9-e7d3-4e71-bec4-e5c93b4ac863 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.26_2026-09-21-07-54-11_patch_cc52dd36-5eba-4094-a1b0-d6f79f103441 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.27_2026-09-21-08-36-49_patch_a25fa125-9bcd-4317-8da5-851c1c329631 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.28_2026-09-21-09-44-01_patch_4430a721-0b3c-4f6a-b9bc-a53e667161bb +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.29_2026-09-21-10-58-07_patch_83b2b942-60a4-4bef-afd1-99690ba52b69 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.2_2026-09-13-06-36-33_patch_176bb944-1c49-4dd3-a001-8fce908825a0 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.30_2026-09-21-12-51-16_patch_519b9a65-d400-4234-b113-36b46e315507 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.31_2026-09-22-06-53-35_patch_5c45a235-81b6-4d05-801a-07dc7db61400 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.32_2026-09-22-07-42-04_patch_f12c6415-8166-4063-9e5d-26601b929d63 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.33_2026-09-22-08-12-32_patch_cec31bb0-a6cb-43e6-8407-25aba322b54c +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.34_2026-09-23-07-09-16_patch_659fccbb-c0a0-4f6f-bc87-e6abaa8815a7 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.35_2026-09-23-09-38-52_patch_023f904d-807a-4833-8a40-570365e8ec06 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.36_2026-09-23-10-05-33_patch_846fb491-2b1b-47ed-ac1f-ba40e744e199 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.37_2026-09-23-13-08-30_patch_8e4b1d24-156e-4ffe-8e4a-b8740ec18588 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.38_2026-09-24-06-41-37_patch_67adb1d6-3f49-4357-a67f-b1d48f23a972 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.39_2026-09-24-15-24-32_patch_e5dd375d-5643-4514-9b65-8d877c4a2bb2 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.3_2026-09-13-12-32-46_patch_58e5ce3a-f2a7-4789-b2cd-5cc75c72b6ec +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.40_2026-09-24-19-58-14_patch_ff18824b-be51-4a3d-a621-e96279e53c3e +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.41_2026-09-26-09-24-52_patch_b9979267-30f9-440a-a4ce-c611991d4886 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.42_2026-09-28-12-39-34_patch_dda535d9-8922-4eb9-ab51-6ecff0650c10 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.43_2026-09-28-13-35-27_minor_aca1168a-1286-4326-9d0c-2f2587c9fe92 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.4_2026-09-13-12-45-14_patch_b6c79d55-8f85-4f47-a304-df52b122c38c +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.5_2026-09-13-14-11-18_patch_9b111116-5e62-472a-b72c-d1bbafa22c97 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.5_2026-09-13-17-01-11_patch_d4bf61c0-83ac-4dd3-b512-a65805d298c8 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.6_2026-09-14-11-31-04_patch_fd2ebda6-22cb-4e7d-9452-2f6f2640e828 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.7_2026-09-13-17-06-08_patch_428af161-0b27-43c2-8751-e5f7874df120 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.0.9_2026-09-14-12-37-42_patch_b2ca0529-4b67-4fa4-8fdc-5f5e9f5d5166 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.1.0_2026-09-28-14-27-54_patch_324444f7-d24e-4189-b21f-1188894a3109 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/18.1.1_2026-09-28-21-03-07_major_e266a14a-7d96-4ece-92a3-8f34e64438a5 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.0_2026-09-29-11-05-31_patch_77d6f9f8-ead3-4d79-a4b2-b084b2dffc98 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.10_2026-10-02-12-56-52_patch_14e97576-73ca-44b8-82c9-7dad6f1789ab +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.11_2026-10-04-10-31-19_patch_088eb371-1799-4949-a119-286cf1cd55d1 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.12_2026-10-06-18-00-25_patch_36554bed-49c5-41cb-9fd4-48cc6af74c09 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.13_2026-10-07-12-24-08_patch_a540a364-3a0d-4960-b278-06ba2c7cc258 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.14_2026-10-07-12-52-39_patch_e3a6fc5c-2ee4-414c-a2dd-4910a655a7dd +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.15_2026-10-09-04-15-56_patch_bd7a9b06-867b-4fea-9678-973a05e3022d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.16_2026-10-09-16-11-56_patch_a1135435-7dea-4f00-8c98-203ba3974382 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.17_2026-10-09-17-44-55_patch_faeacad8-541a-40f2-ab9c-abcd66fcd00e +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.18_2026-10-10-07-29-38_major_02601a1e-9bdb-45bf-ad67-a07b7dcd0002 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.1_2026-09-29-11-59-38_patch_bbf4753c-d641-4c2f-ac7c-02be6bd8e7c2 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.2_2026-09-29-12-44-07_patch_19fdaa94-60dc-464b-93b8-c17607ebc7b6 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.3_2026-09-29-14-16-00_patch_3cb60272-95cf-4311-8897-721e1b5c2c88 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.4_2026-09-29-16-24-53_patch_9fe8ad2b-e3ec-4558-a5fc-9c44c5c266dc +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.5_2026-09-29-17-13-16_patch_e48d2dd2-f41a-402e-a441-756b23c01dcb +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.6_2026-09-29-17-22-11_patch_3b1c79e9-9002-4e96-ba78-10668c33be6a +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.7_2026-09-30-07-50-58_patch_e8b1f046-d819-499c-9cd5-3e1a20fc9acf +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.8_2026-10-01-13-41-44_patch_7d63af18-e0af-4127-ab58-aede2407490f +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/19.0.9_2026-10-01-15-57-35_patch_143863cb-8f63-4ef7-bd78-c1114fc93a2d +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/20.0.0_2026-10-10-09-36-17_patch_d2618f39-cdc9-4d3a-ba40-1a0ad6265f3b +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/20.0.1_2026-10-11-10-24-33_patch_e29a8713-eecb-4eb1-9641-789d3cfab21a +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/20.0.2_2026-10-12-07-22-24_patch_f4053ad1-8fcd-4591-a68d-bf1e23485ba7 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/20.0.3_2026-10-14-14-29-16_patch_070af1c4-f9d9-4f97-8112-058de90d3ea8 +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/__init__.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/version/read_version.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli.egg-info/dependency_links.txt +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli.egg-info/entry_points.txt +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli.egg-info/not-zip-safe +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli.egg-info/requires.txt +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli.egg-info/top_level.txt +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/pyproject.toml +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/setup.cfg +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/setup.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_agents.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_agents_info_stats.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_appdirs.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_auth.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_clusters_info_stats.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_config.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_datasets_export.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_errors.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_files_cp.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_files_cp_helpers.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_helm.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_import_export.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_info.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_config_io.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_configure.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_deploy_node_labels.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_destroy.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_get_terraform.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_hibernate.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_init.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_pause.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_provision.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_start_fixes.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_start_validation.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_state_bucket.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_infra_terraform_init.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_invalid_secrets.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_job_list_project_filter.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_jobs_info_hides_creator.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_jobs_list_unmatched.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_key_pair.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_login.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_logout.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_main.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_mcp_proxy.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_org_select.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_plans.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_projects.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_projects_delete_confirm.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_publish_build_poll.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_publish_data.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_publish_import_root.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_publish_requirements.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_pypi_auth.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_query.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_recipe_file.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_recipe_required_args.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_recipes.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_sessions.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_state.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_support.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_todos.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_ty.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_ui.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_ui_extras.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_usage_counts.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_users_assign.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_users_info_stats.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_users_list.py +0 -0
- {ellf_cli-20.0.4 → ellf_cli-20.0.6}/tests/test_util.py +0 -0
|
@@ -1647,7 +1647,7 @@ Upload and advertise a recipes package from your Python environment.
|
|
|
1647
1647
|
| `name_or_path` | `str` | Path or name of importable module with the recipes | |
|
|
1648
1648
|
| `--is-module`, `-m` | `bool` | Code to publish is an importable module | `False` |
|
|
1649
1649
|
| `--is-path`, `-p` | `bool` | Code to publish is a path | `False` |
|
|
1650
|
-
| `--package-version` | `str` | Version identifier for
|
|
1650
|
+
| `--package-version` | `str` | Version identifier for a module or loose source files (a built package or package directory uses its own version) | `None` |
|
|
1651
1651
|
| `--requirements`, `-r` | `str` | Path to a requirements.txt to install into the image (default: auto-detected from the package's own metadata) | `None` |
|
|
1652
1652
|
|
|
1653
1653
|
#### `ellf publish data`
|
|
@@ -455,7 +455,11 @@ def _run_image_build(
|
|
|
455
455
|
"--is-module", short="-m", help="Code to publish is an importable module"
|
|
456
456
|
),
|
|
457
457
|
is_path=Arg("--is-path", short="-p", help="Code to publish is a path"),
|
|
458
|
-
package_version=Arg(
|
|
458
|
+
package_version=Arg(
|
|
459
|
+
"--package-version",
|
|
460
|
+
help="Version identifier for a module or loose source files "
|
|
461
|
+
"(a built package or package directory uses its own version)",
|
|
462
|
+
),
|
|
459
463
|
requirements=Arg(
|
|
460
464
|
"--requirements",
|
|
461
465
|
short="-r",
|
|
@@ -485,16 +489,27 @@ def publish_code(
|
|
|
485
489
|
source_dir: Path | None = None
|
|
486
490
|
if is_path:
|
|
487
491
|
path = Path(name_or_path)
|
|
492
|
+
is_built = (path.is_dir() and _is_package_dir(path)) or (
|
|
493
|
+
path.is_file() and not path.name.endswith(".py")
|
|
494
|
+
)
|
|
495
|
+
if is_built and package_version is not None:
|
|
496
|
+
raise CLIError(Messages.E196.format(path=name_or_path))
|
|
488
497
|
if path.is_dir() and _is_package_dir(path):
|
|
489
498
|
msg.info(f"Building sdist from {name_or_path}")
|
|
490
499
|
source_dir = path
|
|
491
500
|
package = DistPackage(_make_sdist_if_dir(path))
|
|
492
501
|
elif not path.is_file():
|
|
493
502
|
msg.info(f"Interpreting {name_or_path} as directory of code")
|
|
494
|
-
package = FilesPackage(
|
|
503
|
+
package = FilesPackage(
|
|
504
|
+
name=path.name, path=path, version_arg=package_version
|
|
505
|
+
)
|
|
495
506
|
elif path.name.endswith(".py"):
|
|
496
507
|
msg.info(f"Interpreting {name_or_path} as Python source file")
|
|
497
|
-
package = FilesPackage(
|
|
508
|
+
package = FilesPackage(
|
|
509
|
+
name=path.name.replace(".py", ""),
|
|
510
|
+
path=path,
|
|
511
|
+
version_arg=package_version,
|
|
512
|
+
)
|
|
498
513
|
else:
|
|
499
514
|
package = DistPackage(_make_sdist_if_dir(Path(name_or_path)))
|
|
500
515
|
contents = package.get_bytes()
|
|
@@ -525,6 +540,15 @@ def publish_code(
|
|
|
525
540
|
+ ", ".join(package_requirements)
|
|
526
541
|
)
|
|
527
542
|
|
|
543
|
+
# The image tag is name-version, so building an already-published
|
|
544
|
+
# version would overwrite the image its tasks run before PAM refuses it.
|
|
545
|
+
if auth.client.package.exists(
|
|
546
|
+
name=package.name.replace("_", "-"),
|
|
547
|
+
version=package.version,
|
|
548
|
+
cluster_id=auth.cluster_id,
|
|
549
|
+
):
|
|
550
|
+
raise CLIError(Messages.E197.format(name=package.name, version=package.version))
|
|
551
|
+
|
|
528
552
|
# Look up the base container from the latest ellf-recipes package
|
|
529
553
|
with loading("Resolving base container image"):
|
|
530
554
|
base_package = auth.client.package.latest(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"prog": "ellf",
|
|
3
3
|
"help": "Ellf Command Line Interface.",
|
|
4
|
-
"version": "20.0.
|
|
4
|
+
"version": "20.0.6",
|
|
5
5
|
"extra_key": "_extra",
|
|
6
6
|
"commands": {
|
|
7
7
|
"actions": {
|
|
@@ -6450,9 +6450,9 @@
|
|
|
6450
6450
|
"id": "package_version",
|
|
6451
6451
|
"option": "--package-version",
|
|
6452
6452
|
"short": null,
|
|
6453
|
-
"orig_help": "Version identifier for
|
|
6453
|
+
"orig_help": "Version identifier for a module or loose source files (a built package or package directory uses its own version)",
|
|
6454
6454
|
"default": null,
|
|
6455
|
-
"help": "Version identifier for
|
|
6455
|
+
"help": "Version identifier for a module or loose source files (a built package or package directory uses its own version) (str)",
|
|
6456
6456
|
"action": null,
|
|
6457
6457
|
"choices": null,
|
|
6458
6458
|
"has_converter": false,
|
|
@@ -319,6 +319,16 @@ ellf secret create my-credentials OPENAI_API_KEY="sk-..." CUSTOM_SECRET=-
|
|
|
319
319
|
E193 = "Deleting a project has to be confirmed via a terminal. Run `ellf projects delete {name}` again in an interactive terminal session."
|
|
320
320
|
E194 = "Wrong project name, so {name} was not deleted"
|
|
321
321
|
E195 = "Login failed: the login was cancelled in the browser, or its code has expired. Run `ellf login` to try again."
|
|
322
|
+
E196 = (
|
|
323
|
+
"--package-version can't override the version of a built package: "
|
|
324
|
+
"{path} takes its version from its own metadata. Change the version "
|
|
325
|
+
"there, or drop --package-version."
|
|
326
|
+
)
|
|
327
|
+
E197 = (
|
|
328
|
+
"{name} {version} is already published on this cluster. Bump the "
|
|
329
|
+
"package version to publish new code: the image is only rebuilt for "
|
|
330
|
+
"a new version."
|
|
331
|
+
)
|
|
322
332
|
|
|
323
333
|
|
|
324
334
|
# fmt: on
|
|
@@ -333,6 +333,8 @@ ellf_cli/version/20.0.0_2026-10-10-09-36-17_patch_d2618f39-cdc9-4d3a-ba40-1a0ad6
|
|
|
333
333
|
ellf_cli/version/20.0.1_2026-10-11-10-24-33_patch_e29a8713-eecb-4eb1-9641-789d3cfab21a
|
|
334
334
|
ellf_cli/version/20.0.2_2026-10-12-07-22-24_patch_f4053ad1-8fcd-4591-a68d-bf1e23485ba7
|
|
335
335
|
ellf_cli/version/20.0.3_2026-10-14-14-29-16_patch_070af1c4-f9d9-4f97-8112-058de90d3ea8
|
|
336
|
+
ellf_cli/version/20.0.4_2026-10-14-16-20-24_patch_c6672844-8227-4e0a-9fb5-36af7e7141dc
|
|
337
|
+
ellf_cli/version/20.0.5_2026-10-15-08-53-28_patch_10154146-8afd-4632-b250-9b4b9f5bf67c
|
|
336
338
|
ellf_cli/version/__init__.py
|
|
337
339
|
ellf_cli/version/read_version.py
|
|
338
340
|
tests/test_agents.py
|
|
@@ -378,6 +380,7 @@ tests/test_publish_build_poll.py
|
|
|
378
380
|
tests/test_publish_data.py
|
|
379
381
|
tests/test_publish_import_root.py
|
|
380
382
|
tests/test_publish_requirements.py
|
|
383
|
+
tests/test_publish_versions.py
|
|
381
384
|
tests/test_pypi_auth.py
|
|
382
385
|
tests/test_query.py
|
|
383
386
|
tests/test_recipe_file.py
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"""Version handling in `ellf publish code`.
|
|
2
|
+
|
|
3
|
+
The image is tagged name-version, so building a version that's already
|
|
4
|
+
published would overwrite the image its tasks run before PAM refuses it.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import contextlib
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from types import SimpleNamespace
|
|
10
|
+
from uuid import uuid4
|
|
11
|
+
|
|
12
|
+
import pytest
|
|
13
|
+
|
|
14
|
+
from ellf_cli.commands import publish_code
|
|
15
|
+
from ellf_cli.errors import CLIError
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class FakePackages:
|
|
19
|
+
def __init__(self, published: set[tuple[str, str]]):
|
|
20
|
+
self.published = published
|
|
21
|
+
self.queries: list[dict] = []
|
|
22
|
+
|
|
23
|
+
def exists(self, **query):
|
|
24
|
+
self.queries.append(query)
|
|
25
|
+
return object() if (query["name"], query["version"]) in self.published else None
|
|
26
|
+
|
|
27
|
+
def latest(self, body):
|
|
28
|
+
return SimpleNamespace(
|
|
29
|
+
container="reg.example/recipes:pt-recipes.ellf-recipes.1"
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@pytest.fixture
|
|
34
|
+
def publish(monkeypatch):
|
|
35
|
+
def run(path: Path, *, published=(), package_version=None):
|
|
36
|
+
packages = FakePackages(set(published))
|
|
37
|
+
auth = SimpleNamespace(
|
|
38
|
+
broker_host="https://cluster.example",
|
|
39
|
+
cluster_id=uuid4(),
|
|
40
|
+
client=SimpleNamespace(package=packages),
|
|
41
|
+
)
|
|
42
|
+
builds: list[dict] = []
|
|
43
|
+
monkeypatch.setattr(publish_code, "get_auth_state", lambda: auth)
|
|
44
|
+
monkeypatch.setattr(
|
|
45
|
+
publish_code, "_import_root", lambda *_: contextlib.nullcontext(None)
|
|
46
|
+
)
|
|
47
|
+
monkeypatch.setattr(
|
|
48
|
+
publish_code, "_run_create_meta", lambda *_a, **_k: '[{"name": "r"}]'
|
|
49
|
+
)
|
|
50
|
+
monkeypatch.setattr(publish_code, "_extract_requirements", lambda *_: [])
|
|
51
|
+
|
|
52
|
+
def _build(_auth, **kwargs):
|
|
53
|
+
builds.append(kwargs)
|
|
54
|
+
raise RuntimeError("stop after build")
|
|
55
|
+
|
|
56
|
+
monkeypatch.setattr(publish_code, "_run_image_build", _build)
|
|
57
|
+
try:
|
|
58
|
+
publish_code.publish_code(
|
|
59
|
+
str(path), is_path=True, package_version=package_version
|
|
60
|
+
)
|
|
61
|
+
except RuntimeError:
|
|
62
|
+
pass
|
|
63
|
+
return packages, builds
|
|
64
|
+
|
|
65
|
+
return run
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _write_package_dir(tmp_path: Path) -> Path:
|
|
69
|
+
(tmp_path / "setup.py").write_text("from setuptools import setup\nsetup()\n")
|
|
70
|
+
return tmp_path
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def test_package_version_is_rejected_for_a_built_package(publish, tmp_path):
|
|
74
|
+
with pytest.raises(CLIError, match="can't override the version"):
|
|
75
|
+
publish(_write_package_dir(tmp_path), package_version="0.1.1")
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def test_package_version_applies_to_a_source_file(publish, tmp_path):
|
|
79
|
+
recipe = tmp_path / "my_recipes.py"
|
|
80
|
+
recipe.write_text("")
|
|
81
|
+
packages, builds = publish(recipe, package_version="0.1.1")
|
|
82
|
+
assert packages.queries[0]["version"] == "0.1.1"
|
|
83
|
+
assert builds[0]["package_version"] == "0.1.1"
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def test_published_version_is_refused_before_building(publish, tmp_path):
|
|
87
|
+
recipe = tmp_path / "my_recipes.py"
|
|
88
|
+
recipe.write_text("")
|
|
89
|
+
with pytest.raises(CLIError, match="already published"):
|
|
90
|
+
publish(recipe, package_version="0.1.0", published={("my-recipes", "0.1.0")})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/SKILL.assistant.md
RENAMED
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-annotate/SKILL.coding.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.assistant.md
RENAMED
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-monitor/SKILL.assistant.md
RENAMED
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-monitor/SKILL.coding.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-ops/scripts.coding/run_job.py
RENAMED
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.coding.md
RENAMED
|
File without changes
|
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.coding.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-project/SKILL.assistant.md
RENAMED
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-project/SKILL.coding.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-support/SKILL.assistant.md
RENAMED
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-support/SKILL.coding.md
RENAMED
|
File without changes
|
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/SKILL.assistant.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ellf_cli-20.0.4 → ellf_cli-20.0.6}/ellf_cli/ellf_skills/skills/ellf-train/references/diagnostics.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|