ellf-cli 4.0.65__tar.gz → 4.0.67__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 (181) hide show
  1. {ellf_cli-4.0.65/ellf_cli.egg-info → ellf_cli-4.0.67}/PKG-INFO +1 -1
  2. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/README.md +3 -0
  3. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/about.json +1 -1
  4. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/assets.py +8 -3
  5. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/datasets.py +8 -3
  6. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/secrets.py +6 -2
  7. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf.json +62 -23
  8. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/messages.py +2 -0
  9. {ellf_cli-4.0.65 → ellf_cli-4.0.67/ellf_cli.egg-info}/PKG-INFO +1 -1
  10. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/LICENSE +0 -0
  11. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/MANIFEST.in +0 -0
  12. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/__init__.py +0 -0
  13. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/__main__.py +0 -0
  14. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/about.py +0 -0
  15. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/appdirs.py +0 -0
  16. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/auth.py +0 -0
  17. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/cli.py +0 -0
  18. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/cloud/__init__.py +0 -0
  19. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/cloud/gcp.py +0 -0
  20. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/cluster_config.py +0 -0
  21. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/__init__.py +0 -0
  22. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/_recipe_file.py +0 -0
  23. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/_recipe_subcommand.py +0 -0
  24. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/_state.py +0 -0
  25. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/actions.py +0 -0
  26. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/agents.py +0 -0
  27. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/clusters.py +0 -0
  28. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/config.py +0 -0
  29. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/files/__init__.py +0 -0
  30. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/files/cp.py +0 -0
  31. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/files/ls.py +0 -0
  32. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/files/rm.py +0 -0
  33. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/files/rsync.py +0 -0
  34. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/files/stats.py +0 -0
  35. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/general.py +0 -0
  36. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/import_export.py +0 -0
  37. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/__init__.py +0 -0
  38. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/_helpers.py +0 -0
  39. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/deploy.py +0 -0
  40. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/init_values.py +0 -0
  41. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/provision.py +0 -0
  42. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/register.py +0 -0
  43. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/setup.py +0 -0
  44. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/start.py +0 -0
  45. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/terraform.py +0 -0
  46. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/infra/tls.py +0 -0
  47. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/jobs.py +0 -0
  48. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/packages.py +0 -0
  49. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/paths.py +0 -0
  50. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/plans.py +0 -0
  51. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/projects.py +0 -0
  52. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/publish_code.py +0 -0
  53. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/publish_data.py +0 -0
  54. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/recipes.py +0 -0
  55. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/support.py +0 -0
  56. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/tasks.py +0 -0
  57. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/commands/todos.py +0 -0
  58. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/config.py +0 -0
  59. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/.claude-plugin/plugin.json +0 -0
  60. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/.gitignore +0 -0
  61. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/bin/write-current-session.py +0 -0
  62. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/hooks/hooks.json +0 -0
  63. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skill_variants.json +0 -0
  64. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +0 -0
  65. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/annotation_audit.md +0 -0
  66. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/builtin_ellf_annotation_recipes.md +0 -0
  67. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md +0 -0
  68. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/annotation_audit.md +0 -0
  69. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_ellf_annotation_recipes.md +0 -0
  70. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_prodigy_recipes.md +0 -0
  71. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
  72. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.md +0 -0
  73. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md +0 -0
  74. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/annotation_metrics.md +0 -0
  75. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/training_monitoring.md +0 -0
  76. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md +0 -0
  77. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/annotation_metrics.md +0 -0
  78. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/training_monitoring.md +0 -0
  79. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/scripts/check_training.py +0 -0
  80. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +0 -0
  81. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-ops.coding/SKILL.md +0 -0
  82. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-ops.coding/references/data_infra_cli.md +0 -0
  83. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py +0 -0
  84. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.md +0 -0
  85. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
  86. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.md +0 -0
  87. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
  88. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +0 -0
  89. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
  90. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
  91. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
  92. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
  93. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
  94. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
  95. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
  96. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
  97. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
  98. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
  99. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
  100. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
  101. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
  102. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md +0 -0
  103. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/consulting_patterns.md +0 -0
  104. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/explosion_strategy.md +0 -0
  105. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/prodigy_llm_bot.md +0 -0
  106. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md +0 -0
  107. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/consulting_patterns.md +0 -0
  108. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/explosion_strategy.md +0 -0
  109. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/prodigy_llm_bot.md +0 -0
  110. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md +0 -0
  111. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md +0 -0
  112. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.md +0 -0
  113. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md +0 -0
  114. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/diagnostics.md +0 -0
  115. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/evaluation_guide.md +0 -0
  116. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/model_selection.md +0 -0
  117. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/training_paradigms.md +0 -0
  118. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/workflow.md +0 -0
  119. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/SKILL.md +0 -0
  120. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_advanced.md +0 -0
  121. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_architectures.md +0 -0
  122. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_training.md +0 -0
  123. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/diagnostics.md +0 -0
  124. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/evaluation_guide.md +0 -0
  125. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/experiment_patterns.md +0 -0
  126. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/model_selection.md +0 -0
  127. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_paradigms.md +0 -0
  128. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_troubleshooting.md +0 -0
  129. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/workflow.md +0 -0
  130. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ellf_skills/skills/ellf-train.coding/scripts/ellf_logger.py +0 -0
  131. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/errors.py +0 -0
  132. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/helm.py +0 -0
  133. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/key_pair.py +0 -0
  134. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/main.py +0 -0
  135. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/query.py +0 -0
  136. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
  137. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
  138. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
  139. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
  140. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
  141. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
  142. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
  143. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
  144. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
  145. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
  146. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/testing/__init__.py +0 -0
  147. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ty.py +0 -0
  148. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/ui.py +0 -0
  149. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/url.py +0 -0
  150. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli/util.py +0 -0
  151. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli.egg-info/SOURCES.txt +0 -0
  152. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli.egg-info/dependency_links.txt +0 -0
  153. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli.egg-info/entry_points.txt +0 -0
  154. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli.egg-info/not-zip-safe +0 -0
  155. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli.egg-info/requires.txt +0 -0
  156. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/ellf_cli.egg-info/top_level.txt +0 -0
  157. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/pyproject.toml +0 -0
  158. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/setup.cfg +0 -0
  159. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/setup.py +0 -0
  160. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_appdirs.py +0 -0
  161. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_auth.py +0 -0
  162. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_config.py +0 -0
  163. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_errors.py +0 -0
  164. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_files_cp.py +0 -0
  165. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_files_cp_helpers.py +0 -0
  166. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_info.py +0 -0
  167. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_invalid_secrets.py +0 -0
  168. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_key_pair.py +0 -0
  169. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_login.py +0 -0
  170. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_main.py +0 -0
  171. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_plans.py +0 -0
  172. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_projects.py +0 -0
  173. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_query.py +0 -0
  174. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_recipe_file.py +0 -0
  175. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_recipes.py +0 -0
  176. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_state.py +0 -0
  177. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_support.py +0 -0
  178. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_ty.py +0 -0
  179. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_ui.py +0 -0
  180. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_ui_extras.py +0 -0
  181. {ellf_cli-4.0.65 → ellf_cli-4.0.67}/tests/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ellf-cli
3
- Version: 4.0.65
3
+ Version: 4.0.67
4
4
  Summary: Ellf Command Line Interface
5
5
  Home-page: https://prodi.gy
6
6
  Author: ExplosionAI GmbH
@@ -272,6 +272,7 @@ List all assets on the cluster registered with Ellf
272
272
 
273
273
  | Argument | Type | Description | Default |
274
274
  | --- | --- | --- | --- |
275
+ | `--cluster-id` | `UUID` | ID of the cluster to search for asset name (or the last cluster if not set) | `None` |
275
276
  | `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'cluster_id', 'name', 'version', 'kind', 'path', 'meta'] | `['id', 'name', 'kind']` |
276
277
  | `--json` | `bool` | Output the result as JSON | `False` |
277
278
 
@@ -510,6 +511,7 @@ List all Datasets
510
511
 
511
512
  | Argument | Type | Description | Default |
512
513
  | --- | --- | --- | --- |
514
+ | `--cluster-id` | `UUID` | ID of the cluster to search for dataset name (or the last cluster if not set) | `None` |
513
515
  | `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'name', 'cluster_id', 'kind'] | `['id', 'name', 'kind']` |
514
516
  | `--json` | `bool` | Output the result as JSON | `False` |
515
517
 
@@ -898,6 +900,7 @@ List all named pointers to secrets on the cluster
898
900
 
899
901
  | Argument | Type | Description | Default |
900
902
  | --- | --- | --- | --- |
903
+ | `--cluster-id` | `UUID` | ID of the cluster to search for secret name (or the last cluster if not set) | `None` |
901
904
  | `--select` | `list[str]` | Comma-separated fields to select and show in output. Available: ['id', 'created', 'updated', 'name', 'cluster_id'] | `['created', 'id', 'name']` |
902
905
  | `--json` | `bool` | Output the result as JSON | `False` |
903
906
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "title": "Ellf CLI",
3
3
  "name": "ellf-cli",
4
- "version": "4.0.65",
4
+ "version": "4.0.67",
5
5
  "summary": "Ellf Command Line Interface",
6
6
  "uri": "https://prodi.gy",
7
7
  "prog": "ellf",
@@ -22,6 +22,7 @@ from ._state import get_auth_state
22
22
  "assets",
23
23
  "list",
24
24
  # fmt: off
25
+ cluster_id=Arg("--cluster-id", help=Messages.cluster_id.format(noun="asset")),
25
26
  select=Arg(
26
27
  "--select",
27
28
  help=Messages.select.format(opts=builtins.list(AssetSummary.model_fields)),
@@ -30,11 +31,15 @@ from ._state import get_auth_state
30
31
  # fmt: on
31
32
  )
32
33
  def list(
33
- select: builtins.list[str] = ["id", "name", "kind"], as_json: bool = False
34
+ cluster_id: Optional[UUID] = None,
35
+ select: builtins.list[str] = ["id", "name", "kind"],
36
+ as_json: bool = False,
34
37
  ) -> Sequence[AssetSummary]:
35
38
  """List all assets on the cluster registered with Ellf"""
36
- client = get_auth_state().client
37
- items = builtins.list(client.asset.all())
39
+ auth = get_auth_state()
40
+ items = builtins.list(
41
+ auth.client.asset.all(cluster_id=cluster_id or auth.cluster_id)
42
+ )
38
43
  print_table_with_select(items, select=select, as_json=as_json)
39
44
  return items
40
45
 
@@ -27,6 +27,7 @@ from ._state import get_auth_state
27
27
  "datasets",
28
28
  "list",
29
29
  # fmt: off
30
+ cluster_id=Arg("--cluster-id", help=Messages.cluster_id.format(noun="dataset")),
30
31
  select=Arg(
31
32
  "--select",
32
33
  help=Messages.select.format(opts=builtins.list(DatasetSummary.model_fields)),
@@ -35,11 +36,15 @@ from ._state import get_auth_state
35
36
  # fmt: on
36
37
  )
37
38
  def list(
38
- select: builtins.list[str] = ["id", "name", "kind"], as_json: bool = False
39
+ cluster_id: Optional[UUID] = None,
40
+ select: builtins.list[str] = ["id", "name", "kind"],
41
+ as_json: bool = False,
39
42
  ) -> Sequence[DatasetSummary]:
40
43
  """List all Datasets"""
41
- client = get_auth_state().client
42
- items = builtins.list(client.dataset.all())
44
+ auth = get_auth_state()
45
+ items = builtins.list(
46
+ auth.client.dataset.all(cluster_id=cluster_id or auth.cluster_id)
47
+ )
43
48
  print_table_with_select(items, select=select, as_json=as_json)
44
49
  return items
45
50
 
@@ -29,6 +29,7 @@ from ._state import get_auth_state
29
29
  "secrets",
30
30
  "list",
31
31
  # fmt: off
32
+ cluster_id=Arg("--cluster-id", help=Messages.cluster_id.format(noun="secret")),
32
33
  select=Arg(
33
34
  "--select",
34
35
  help=Messages.select.format(opts=builtins.list(SecretSummary.model_fields)),
@@ -37,12 +38,15 @@ from ._state import get_auth_state
37
38
  # fmt: on
38
39
  )
39
40
  def list(
41
+ cluster_id: Optional[UUID] = None,
40
42
  select: builtins.list[str] = ["created", "id", "name"],
41
43
  as_json: bool = False,
42
44
  ) -> Sequence[SecretSummary]:
43
45
  """List all named pointers to secrets on the cluster"""
44
- client = get_auth_state().client
45
- items = builtins.list(client.secret.all())
46
+ auth = get_auth_state()
47
+ items = builtins.list(
48
+ auth.client.secret.all(cluster_id=cluster_id or auth.cluster_id)
49
+ )
46
50
  print_table_with_select(items, select=select, as_json=as_json)
47
51
  return items
48
52
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "prog": "ellf",
3
3
  "help": "Ellf Command Line Interface.",
4
- "version": "4.0.64",
4
+ "version": "4.0.66",
5
5
  "extra_key": "_extra",
6
6
  "commands": {
7
7
  "actions": {
@@ -204,7 +204,7 @@
204
204
  "orig_type": "bool"
205
205
  }
206
206
  ],
207
- "description": "\n Log in to your Ellf account. You normally don't need to call this\n manually. It will automatically authenticate when needed.\n ",
207
+ "description": "\nLog in to your Ellf account. You normally don't need to call this\nmanually. It will automatically authenticate when needed.\n",
208
208
  "allow_extra": false,
209
209
  "parent": null,
210
210
  "is_placeholder": false
@@ -257,7 +257,7 @@
257
257
  "orig_type": "Literal[api, cluster, id, ci]"
258
258
  }
259
259
  ],
260
- "description": "\n Return an auth token for the current user\n ",
260
+ "description": "\nReturn an auth token for the current user\n",
261
261
  "allow_extra": false,
262
262
  "parent": null,
263
263
  "is_placeholder": false
@@ -333,7 +333,7 @@
333
333
  "orig_type": "list[Literal[tasks, actions, assets, datasets, paths]]"
334
334
  }
335
335
  ],
336
- "description": "\n Save the state of the current app JSON file. If an assets directory is\n provided, assets will be downloaded and referenced in the JSON accordingly.\n ",
336
+ "description": "\nSave the state of the current app JSON file. If an assets directory is\nprovided, assets will be downloaded and referenced in the JSON accordingly.\n",
337
337
  "allow_extra": false,
338
338
  "parent": null,
339
339
  "is_placeholder": false
@@ -368,7 +368,7 @@
368
368
  "orig_type": "bool"
369
369
  }
370
370
  ],
371
- "description": "\n Populate Ellf with data for projects, tasks, actions, assets and paths.\n ",
371
+ "description": "\nPopulate Ellf with data for projects, tasks, actions, assets and paths.\n",
372
372
  "allow_extra": false,
373
373
  "parent": null,
374
374
  "is_placeholder": false
@@ -445,7 +445,7 @@
445
445
  "orig_type": "List[str]"
446
446
  }
447
447
  ],
448
- "description": "\n Create a new action. The available action recipes are fetched from your\n cluster and are added as dynamic subcommands. You can see more details\n and available arguments by calling the subcommand with --help, e.g. create\n [name] --help\n ",
448
+ "description": "\nCreate a new action. The available action recipes are fetched from your\ncluster and are added as dynamic subcommands. You can see more details\nand available arguments by calling the subcommand with --help, e.g. create\n[name] --help\n",
449
449
  "allow_extra": true,
450
450
  "parent": "actions",
451
451
  "is_placeholder": false
@@ -480,7 +480,7 @@
480
480
  "orig_type": "bool"
481
481
  }
482
482
  ],
483
- "description": "\n List the actions on the cluster. By default, this includes their ID, name\n and current state, e.g. created or completed\n ",
483
+ "description": "\nList the actions on the cluster. By default, this includes their ID, name\nand current state, e.g. created or completed\n",
484
484
  "allow_extra": false,
485
485
  "parent": "actions",
486
486
  "is_placeholder": false
@@ -926,7 +926,7 @@
926
926
  "orig_type": "List[str]"
927
927
  }
928
928
  ],
929
- "description": "\n Create a new agent. The available agent recipes are fetched from your\n cluster and are added as dynamic subcommands. You can see more details\n and available arguments by calling the subcommand with --help, e.g. create\n [name] --help\n ",
929
+ "description": "\nCreate a new agent. The available agent recipes are fetched from your\ncluster and are added as dynamic subcommands. You can see more details\nand available arguments by calling the subcommand with --help, e.g. create\n[name] --help\n",
930
930
  "allow_extra": true,
931
931
  "parent": "agents",
932
932
  "is_placeholder": false
@@ -1035,7 +1035,7 @@
1035
1035
  "orig_type": "bool"
1036
1036
  }
1037
1037
  ],
1038
- "description": "\n List the agents on the cluster. By default, this includes their ID, name\n and current state, e.g. created or completed\n ",
1038
+ "description": "\nList the agents on the cluster. By default, this includes their ID, name\nand current state, e.g. created or completed\n",
1039
1039
  "allow_extra": false,
1040
1040
  "parent": "agents",
1041
1041
  "is_placeholder": false
@@ -1415,6 +1415,19 @@
1415
1415
  "list": {
1416
1416
  "name": "list",
1417
1417
  "args": [
1418
+ {
1419
+ "id": "cluster_id",
1420
+ "option": "--cluster-id",
1421
+ "short": null,
1422
+ "orig_help": "ID of the cluster to search for asset name (or the last cluster if not set)",
1423
+ "default": null,
1424
+ "help": "ID of the cluster to search for asset name (or the last cluster if not set) (UUID)",
1425
+ "action": null,
1426
+ "choices": null,
1427
+ "has_converter": true,
1428
+ "type": "convert_uuid",
1429
+ "orig_type": "UUID"
1430
+ },
1418
1431
  {
1419
1432
  "id": "select",
1420
1433
  "option": "--select",
@@ -1516,7 +1529,7 @@
1516
1529
  "orig_type": "bool"
1517
1530
  }
1518
1531
  ],
1519
- "description": "\n Get detailed info for an asset uploaded to the cluster and registered\n with Ellf\n ",
1532
+ "description": "\nGet detailed info for an asset uploaded to the cluster and registered\nwith Ellf\n",
1520
1533
  "allow_extra": false,
1521
1534
  "parent": "assets",
1522
1535
  "is_placeholder": false
@@ -1616,7 +1629,7 @@
1616
1629
  "orig_type": "bool"
1617
1630
  }
1618
1631
  ],
1619
- "description": "\n Create an asset on the cluster and register it with Ellf. Assets\n point to files or directories you control. The Ellf server only has\n a reference to them. This command doesn't transfer any data. See `ellf files`\n for utilities to transfer files to and from your cluster\n ",
1632
+ "description": "\nCreate an asset on the cluster and register it with Ellf. Assets\npoint to files or directories you control. The Ellf server only has\na reference to them. This command doesn't transfer any data. See `ellf files`\nfor utilities to transfer files to and from your cluster\n",
1620
1633
  "allow_extra": false,
1621
1634
  "parent": "assets",
1622
1635
  "is_placeholder": false
@@ -1845,7 +1858,7 @@
1845
1858
  "orig_type": "Union[str, UUID]"
1846
1859
  }
1847
1860
  ],
1848
- "description": "\n Delete a cluster from PAM. This only removes PAM's record\n of it. The cluster itself will continue to exist - you need\n to shut it down separately.\n ",
1861
+ "description": "\nDelete a cluster from PAM. This only removes PAM's record\nof it. The cluster itself will continue to exist - you need\nto shut it down separately.\n",
1849
1862
  "allow_extra": false,
1850
1863
  "parent": "clusters",
1851
1864
  "is_placeholder": false
@@ -1932,7 +1945,7 @@
1932
1945
  "orig_type": "bool"
1933
1946
  }
1934
1947
  ],
1935
- "description": "Check the health of a cluster deployment.\n\n Runs CLI-side connectivity checks against the cluster and PAM.\n Use --deep to also trigger cluster-side deployment checks (K8s API,\n NFS, database, etc.).\n ",
1948
+ "description": "Check the health of a cluster deployment.\n\nRuns CLI-side connectivity checks against the cluster and PAM.\nUse --deep to also trigger cluster-side deployment checks (K8s API,\nNFS, database, etc.).\n",
1936
1949
  "allow_extra": false,
1937
1950
  "parent": "clusters",
1938
1951
  "is_placeholder": false
@@ -2015,7 +2028,7 @@
2015
2028
  "orig_type": "str"
2016
2029
  }
2017
2030
  ],
2018
- "description": "Rotate the cluster RSA keypair.\n\n Generates a new keypair, updates the cluster record in PAM with the\n new public key, patches the K8s secret with the new private key,\n and restarts the cluster deployment.\n ",
2031
+ "description": "Rotate the cluster RSA keypair.\n\nGenerates a new keypair, updates the cluster record in PAM with the\nnew public key, patches the K8s secret with the new private key,\nand restarts the cluster deployment.\n",
2019
2032
  "allow_extra": false,
2020
2033
  "parent": "clusters",
2021
2034
  "is_placeholder": false
@@ -2555,6 +2568,19 @@
2555
2568
  "list": {
2556
2569
  "name": "list",
2557
2570
  "args": [
2571
+ {
2572
+ "id": "cluster_id",
2573
+ "option": "--cluster-id",
2574
+ "short": null,
2575
+ "orig_help": "ID of the cluster to search for dataset name (or the last cluster if not set)",
2576
+ "default": null,
2577
+ "help": "ID of the cluster to search for dataset name (or the last cluster if not set) (UUID)",
2578
+ "action": null,
2579
+ "choices": null,
2580
+ "has_converter": true,
2581
+ "type": "convert_uuid",
2582
+ "orig_type": "UUID"
2583
+ },
2558
2584
  {
2559
2585
  "id": "select",
2560
2586
  "option": "--select",
@@ -2787,7 +2813,7 @@
2787
2813
  "orig_type": "str"
2788
2814
  }
2789
2815
  ],
2790
- "description": "Export all the examples from a dataset and save it in the designated file as\n JSONL (newline-delimited JSON).\n ",
2816
+ "description": "Export all the examples from a dataset and save it in the designated file as\nJSONL (newline-delimited JSON).\n",
2791
2817
  "allow_extra": false,
2792
2818
  "parent": "datasets",
2793
2819
  "is_placeholder": false
@@ -3222,7 +3248,7 @@
3222
3248
  "orig_type": "bool"
3223
3249
  }
3224
3250
  ],
3225
- "description": "Deploy or upgrade the Ellf Helm chart.\n\n Creates the namespace, image pull secret, cluster keypair secret,\n then runs helm upgrade --install with the provided values.\n ",
3251
+ "description": "Deploy or upgrade the Ellf Helm chart.\n\nCreates the namespace, image pull secret, cluster keypair secret,\nthen runs helm upgrade --install with the provided values.\n",
3226
3252
  "allow_extra": false,
3227
3253
  "parent": "infra",
3228
3254
  "is_placeholder": false
@@ -3466,7 +3492,7 @@
3466
3492
  "orig_type": "str"
3467
3493
  }
3468
3494
  ],
3469
- "description": "Install cluster infrastructure prerequisites (Traefik, cert-manager).\n\n These operations are idempotent and safe to re-run.\n ",
3495
+ "description": "Install cluster infrastructure prerequisites (Traefik, cert-manager).\n\nThese operations are idempotent and safe to re-run.\n",
3470
3496
  "allow_extra": false,
3471
3497
  "parent": "infra",
3472
3498
  "is_placeholder": false
@@ -3749,7 +3775,7 @@
3749
3775
  "orig_type": "str"
3750
3776
  }
3751
3777
  ],
3752
- "description": "Manage TLS certificates for local cluster access.\n\n Use --self-signed when you have direct kubectl access to the cluster.\n Use --setup HOST to do everything from your laptop over SSH.\n Use --trust HOST to fetch and install an existing CA from a remote cluster.\n ",
3778
+ "description": "Manage TLS certificates for local cluster access.\n\nUse --self-signed when you have direct kubectl access to the cluster.\nUse --setup HOST to do everything from your laptop over SSH.\nUse --trust HOST to fetch and install an existing CA from a remote cluster.\n",
3753
3779
  "allow_extra": false,
3754
3780
  "parent": "infra",
3755
3781
  "is_placeholder": false
@@ -3773,7 +3799,7 @@
3773
3799
  "orig_type": "str"
3774
3800
  }
3775
3801
  ],
3776
- "description": "\n Run a job directly on the cluster from a YAML spec file, bypassing PAM.\n ",
3802
+ "description": "\nRun a job directly on the cluster from a YAML spec file, bypassing PAM.\n",
3777
3803
  "allow_extra": false,
3778
3804
  "parent": "jobs",
3779
3805
  "is_placeholder": false
@@ -4851,7 +4877,7 @@
4851
4877
  "orig_type": "str"
4852
4878
  }
4853
4879
  ],
4854
- "description": "\n Upload and advertise a recipes package from your Python environment.\n ",
4880
+ "description": "\nUpload and advertise a recipes package from your Python environment.\n",
4855
4881
  "allow_extra": false,
4856
4882
  "parent": "publish",
4857
4883
  "is_placeholder": false
@@ -4964,7 +4990,7 @@
4964
4990
  "orig_type": "bool"
4965
4991
  }
4966
4992
  ],
4967
- "description": "\n Transfer data to the cluster, and advertise it to Ellf.\n\n These steps can also be done separately. See `ellf files` to transfer\n data to the cluster without creating an Asset record for it, and\n `ellf assets create` to create an Asset without transfer.\n ",
4993
+ "description": "\nTransfer data to the cluster, and advertise it to Ellf.\n\nThese steps can also be done separately. See `ellf files` to transfer\ndata to the cluster without creating an Asset record for it, and\n`ellf assets create` to create an Asset without transfer.\n",
4968
4994
  "allow_extra": false,
4969
4995
  "parent": "publish",
4970
4996
  "is_placeholder": false
@@ -5220,6 +5246,19 @@
5220
5246
  "list": {
5221
5247
  "name": "list",
5222
5248
  "args": [
5249
+ {
5250
+ "id": "cluster_id",
5251
+ "option": "--cluster-id",
5252
+ "short": null,
5253
+ "orig_help": "ID of the cluster to search for secret name (or the last cluster if not set)",
5254
+ "default": null,
5255
+ "help": "ID of the cluster to search for secret name (or the last cluster if not set) (UUID)",
5256
+ "action": null,
5257
+ "choices": null,
5258
+ "has_converter": true,
5259
+ "type": "convert_uuid",
5260
+ "orig_type": "UUID"
5261
+ },
5223
5262
  {
5224
5263
  "id": "select",
5225
5264
  "option": "--select",
@@ -5624,7 +5663,7 @@
5624
5663
  "orig_type": "List[str]"
5625
5664
  }
5626
5665
  ],
5627
- "description": "\n Create a new task. The available task recipes are fetched from your\n cluster and are added as dynamic subcommands. You can see more details\n and available arguments by calling the subcommand with --help, e.g. create\n [name] --help\n ",
5666
+ "description": "\nCreate a new task. The available task recipes are fetched from your\ncluster and are added as dynamic subcommands. You can see more details\nand available arguments by calling the subcommand with --help, e.g. create\n[name] --help\n",
5628
5667
  "allow_extra": true,
5629
5668
  "parent": "tasks",
5630
5669
  "is_placeholder": false
@@ -5659,7 +5698,7 @@
5659
5698
  "orig_type": "bool"
5660
5699
  }
5661
5700
  ],
5662
- "description": "\n List the tasks on the cluster. By default, this includes their ID, name\n and current state, e.g. created or completed\n ",
5701
+ "description": "\nList the tasks on the cluster. By default, this includes their ID, name\nand current state, e.g. created or completed\n",
5663
5702
  "allow_extra": false,
5664
5703
  "parent": "tasks",
5665
5704
  "is_placeholder": false
@@ -62,6 +62,8 @@ E.g.
62
62
  ellf secret create my-credentials OPENAI_API_KEY="sk-..." CUSTOM_SECRET=-
63
63
  """
64
64
  E057 = "Could not import recipes from {package}"
65
+ E058 = "Could not get a Prodigy login token from the broker for task {name}"
66
+ E059 = "Could not fetch questions from the task server for {name}"
65
67
 
66
68
  T001 = "Not creating {noun} {name}: {noun} already exists"
67
69
  T002 = "Successfully created {noun} {name}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ellf-cli
3
- Version: 4.0.65
3
+ Version: 4.0.67
4
4
  Summary: Ellf Command Line Interface
5
5
  Home-page: https://prodi.gy
6
6
  Author: ExplosionAI GmbH
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