ellf-cli 4.0.41__tar.gz → 4.0.44__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 (179) hide show
  1. {ellf_cli-4.0.41/ellf_cli.egg-info → ellf_cli-4.0.44}/PKG-INFO +1 -1
  2. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/about.json +1 -1
  3. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/auth.py +19 -2
  4. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/tls.py +13 -3
  5. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf.json +1 -1
  6. {ellf_cli-4.0.41 → ellf_cli-4.0.44/ellf_cli.egg-info}/PKG-INFO +1 -1
  7. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/LICENSE +0 -0
  8. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/MANIFEST.in +0 -0
  9. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/README.md +0 -0
  10. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/__init__.py +0 -0
  11. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/__main__.py +0 -0
  12. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/about.py +0 -0
  13. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/appdirs.py +0 -0
  14. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/cli.py +0 -0
  15. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/cloud/__init__.py +0 -0
  16. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/cloud/gcp.py +0 -0
  17. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/cluster_config.py +0 -0
  18. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/__init__.py +0 -0
  19. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/_recipe_file.py +0 -0
  20. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/_recipe_subcommand.py +0 -0
  21. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/_state.py +0 -0
  22. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/actions.py +0 -0
  23. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/agents.py +0 -0
  24. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/assets.py +0 -0
  25. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/clusters.py +0 -0
  26. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/config.py +0 -0
  27. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/datasets.py +0 -0
  28. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/__init__.py +0 -0
  29. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/cp.py +0 -0
  30. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/ls.py +0 -0
  31. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/rm.py +0 -0
  32. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/rsync.py +0 -0
  33. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/files/stats.py +0 -0
  34. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/general.py +0 -0
  35. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/import_export.py +0 -0
  36. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/__init__.py +0 -0
  37. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/_helpers.py +0 -0
  38. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/deploy.py +0 -0
  39. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/init_values.py +0 -0
  40. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/provision.py +0 -0
  41. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/register.py +0 -0
  42. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/setup.py +0 -0
  43. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/start.py +0 -0
  44. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/infra/terraform.py +0 -0
  45. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/jobs.py +0 -0
  46. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/packages.py +0 -0
  47. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/paths.py +0 -0
  48. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/plans.py +0 -0
  49. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/projects.py +0 -0
  50. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/publish_code.py +0 -0
  51. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/publish_data.py +0 -0
  52. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/recipes.py +0 -0
  53. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/secrets.py +0 -0
  54. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/support.py +0 -0
  55. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/tasks.py +0 -0
  56. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/commands/todos.py +0 -0
  57. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/config.py +0 -0
  58. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/.claude-plugin/plugin.json +0 -0
  59. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/.gitignore +0 -0
  60. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/bin/write-current-session.py +0 -0
  61. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/hooks/hooks.json +0 -0
  62. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skill_variants.json +0 -0
  63. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +0 -0
  64. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/annotation_audit.md +0 -0
  65. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/builtin_ellf_annotation_recipes.md +0 -0
  66. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md +0 -0
  67. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/annotation_audit.md +0 -0
  68. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_ellf_annotation_recipes.md +0 -0
  69. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_prodigy_recipes.md +0 -0
  70. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
  71. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.md +0 -0
  72. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md +0 -0
  73. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/annotation_metrics.md +0 -0
  74. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/training_monitoring.md +0 -0
  75. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md +0 -0
  76. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/annotation_metrics.md +0 -0
  77. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/training_monitoring.md +0 -0
  78. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/scripts/check_training.py +0 -0
  79. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +0 -0
  80. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-ops.coding/SKILL.md +0 -0
  81. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py +0 -0
  82. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.md +0 -0
  83. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +0 -0
  84. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.md +0 -0
  85. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
  86. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +0 -0
  87. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
  88. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
  89. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
  90. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
  91. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
  92. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
  93. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
  94. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
  95. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
  96. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
  97. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
  98. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
  99. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
  100. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md +0 -0
  101. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/consulting_patterns.md +0 -0
  102. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/explosion_strategy.md +0 -0
  103. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/prodigy_llm_bot.md +0 -0
  104. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md +0 -0
  105. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/consulting_patterns.md +0 -0
  106. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/explosion_strategy.md +0 -0
  107. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/prodigy_llm_bot.md +0 -0
  108. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md +0 -0
  109. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md +0 -0
  110. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.md +0 -0
  111. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md +0 -0
  112. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/diagnostics.md +0 -0
  113. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/evaluation_guide.md +0 -0
  114. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/model_selection.md +0 -0
  115. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/training_paradigms.md +0 -0
  116. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/workflow.md +0 -0
  117. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/SKILL.md +0 -0
  118. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_advanced.md +0 -0
  119. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_architectures.md +0 -0
  120. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_training.md +0 -0
  121. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/diagnostics.md +0 -0
  122. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/evaluation_guide.md +0 -0
  123. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/experiment_patterns.md +0 -0
  124. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/model_selection.md +0 -0
  125. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_paradigms.md +0 -0
  126. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_troubleshooting.md +0 -0
  127. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/workflow.md +0 -0
  128. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ellf_skills/skills/ellf-train.coding/scripts/ellf_logger.py +0 -0
  129. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/errors.py +0 -0
  130. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/helm.py +0 -0
  131. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/key_pair.py +0 -0
  132. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/main.py +0 -0
  133. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/messages.py +0 -0
  134. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/query.py +0 -0
  135. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
  136. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
  137. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
  138. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
  139. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
  140. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
  141. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
  142. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
  143. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
  144. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
  145. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/testing/__init__.py +0 -0
  146. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ty.py +0 -0
  147. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/ui.py +0 -0
  148. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/url.py +0 -0
  149. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli/util.py +0 -0
  150. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/SOURCES.txt +0 -0
  151. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/dependency_links.txt +0 -0
  152. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/entry_points.txt +0 -0
  153. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/not-zip-safe +0 -0
  154. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/requires.txt +0 -0
  155. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/ellf_cli.egg-info/top_level.txt +0 -0
  156. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/pyproject.toml +0 -0
  157. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/setup.cfg +0 -0
  158. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/setup.py +0 -0
  159. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_appdirs.py +0 -0
  160. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_auth.py +0 -0
  161. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_config.py +0 -0
  162. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_errors.py +0 -0
  163. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_files_cp.py +0 -0
  164. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_files_cp_helpers.py +0 -0
  165. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_info.py +0 -0
  166. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_invalid_secrets.py +0 -0
  167. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_key_pair.py +0 -0
  168. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_login.py +0 -0
  169. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_main.py +0 -0
  170. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_projects.py +0 -0
  171. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_query.py +0 -0
  172. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_recipe_file.py +0 -0
  173. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_recipes.py +0 -0
  174. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_state.py +0 -0
  175. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_support.py +0 -0
  176. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_ty.py +0 -0
  177. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_ui.py +0 -0
  178. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/tests/test_ui_extras.py +0 -0
  179. {ellf_cli-4.0.41 → ellf_cli-4.0.44}/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.41
3
+ Version: 4.0.44
4
4
  Summary: Ellf Command Line Interface
5
5
  Home-page: https://prodi.gy
6
6
  Author: ExplosionAI GmbH
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "title": "Ellf CLI",
3
3
  "name": "ellf-cli",
4
- "version": "4.0.41",
4
+ "version": "4.0.44",
5
5
  "summary": "Ellf Command Line Interface",
6
6
  "uri": "https://prodi.gy",
7
7
  "prog": "ellf",
@@ -58,6 +58,12 @@ _R = TypeVar("_R")
58
58
  OIDC_SCOPE = "openid profile email"
59
59
  OIDC_DEVICE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code"
60
60
  AUTH_WAIT_TIME_SECONDS = 60 * 5
61
+ # httpx default is 5s — too tight for the auth round-trip when PAM's
62
+ # load balancer occasionally takes longer than that to respond. A
63
+ # transient network blip during login should not require the user to
64
+ # re-run; pick a value that comfortably outlasts any realistic single
65
+ # request without making a genuinely-down PAM hang noticeably.
66
+ AUTH_REQUEST_TIMEOUT_SECONDS = 15.0
61
67
 
62
68
 
63
69
  class Secrets(Protocol):
@@ -385,6 +391,7 @@ class AuthStateImpl:
385
391
  api_response = httpx.post(
386
392
  str(self.pam_url / "api/v1/login"),
387
393
  headers={"authorization": f"Bearer {id_token}"},
394
+ timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
388
395
  )
389
396
  if api_response.status_code != 200:
390
397
  err = _format_http_error(api_response)
@@ -426,6 +433,7 @@ class AuthStateImpl:
426
433
  str(self.pam_url / "api/v1/broker/token"),
427
434
  headers={"authorization": f"Bearer {api_token}"},
428
435
  json=body,
436
+ timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
429
437
  )
430
438
  if res.status_code != 200:
431
439
  err = _format_http_error(res)
@@ -440,6 +448,7 @@ class AuthStateImpl:
440
448
  exchange_res = httpx.post(
441
449
  str(self.broker_url / "api/v1/token/exchange"),
442
450
  json={"token": pam_broker_token},
451
+ timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
443
452
  )
444
453
  if exchange_res.status_code != 200:
445
454
  err = _format_http_error(exchange_res)
@@ -459,7 +468,10 @@ class AuthStateImpl:
459
468
 
460
469
  def _authenticate_device_and_get_id_token(self) -> str:
461
470
  try:
462
- config_response = httpx.get(str(self.pam_url / "api/v1/cli.json"))
471
+ config_response = httpx.get(
472
+ str(self.pam_url / "api/v1/cli.json"),
473
+ timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
474
+ )
463
475
  config_response.raise_for_status()
464
476
  except httpx.HTTPError as exc:
465
477
  err = Messages.E033.format(url=self.pam_url)
@@ -467,7 +479,11 @@ class AuthStateImpl:
467
479
  raise EllfError(err) from exc
468
480
  device_code_url = str(self.pam_url / "api/v1/device/code")
469
481
  token_url = str(self.pam_url / "api/v1/device/token")
470
- response = httpx.post(device_code_url, json={"scope": OIDC_SCOPE})
482
+ response = httpx.post(
483
+ device_code_url,
484
+ json={"scope": OIDC_SCOPE},
485
+ timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
486
+ )
471
487
  if response.status_code != 200:
472
488
  error_resp = response.json()
473
489
  raise CLIError(Messages.E101, error_resp)
@@ -489,6 +505,7 @@ class AuthStateImpl:
489
505
  "grant_type": OIDC_DEVICE_GRANT_TYPE,
490
506
  "device_code": device_code,
491
507
  },
508
+ timeout=AUTH_REQUEST_TIMEOUT_SECONDS,
492
509
  )
493
510
  last_check = time.time()
494
511
  token_data = token_response.json()
@@ -11,6 +11,7 @@ from radicli import Arg
11
11
  from wasabi.printer import Printer
12
12
 
13
13
  from ...cli import cli
14
+ from ...util import URL
14
15
 
15
16
 
16
17
  class FilePrinter(Printer):
@@ -284,10 +285,19 @@ def _print_trust_commands(ca_path: Path, output_format: str = "human") -> None:
284
285
 
285
286
 
286
287
  def _self_signed(fqdn: str, namespace: str) -> None:
287
- """Create a self-signed CA and leaf cert, update ingress."""
288
+ """Create a self-signed CA and leaf cert, update ingress.
289
+
290
+ Accept fqdn with or without a port (e.g. "localhost" or
291
+ "localhost:8443" for BYOC tunnel setups). K8s Ingress hosts and
292
+ cert dnsNames are RFC 1123 hostnames — the port has to be stripped
293
+ before they're used. Mirrors the chart's ``ellf.brokerHostname``
294
+ helper so the CLI accepts the same flag value users pass to
295
+ ``infra register --domain``.
296
+ """
297
+ hostname = URL.parse(fqdn, scheme="https").hostname
288
298
  _create_self_signed_ca()
289
- _issue_leaf_cert(fqdn, namespace)
290
- _update_ingress_tls(fqdn, namespace)
299
+ _issue_leaf_cert(hostname, namespace)
300
+ _update_ingress_tls(hostname, namespace)
291
301
 
292
302
 
293
303
  def _run_via_ssh(host: str, command: str) -> str:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "prog": "ellf",
3
3
  "help": "Ellf Command Line Interface.",
4
- "version": "4.0.40",
4
+ "version": "4.0.43",
5
5
  "extra_key": "_extra",
6
6
  "commands": {
7
7
  "actions": {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ellf-cli
3
- Version: 4.0.41
3
+ Version: 4.0.44
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