invoke-toolkit 0.0.59__tar.gz → 0.0.61__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 (125) hide show
  1. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/PKG-INFO +1 -1
  2. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/program/program.py +10 -0
  3. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/script/test_script.py +33 -0
  4. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/.gitignore +0 -0
  5. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/LICENSE.txt +0 -0
  6. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/README.md +0 -0
  7. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/pyproject.toml +0 -0
  8. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/__init__.py +0 -0
  9. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/__main__.py +0 -0
  10. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/collections.py +0 -0
  11. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/completion.py +0 -0
  12. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/config/__init__.py +0 -0
  13. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/config/config.py +0 -0
  14. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/config/registry.py +0 -0
  15. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/config/schema.py +0 -0
  16. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/config/status_helper.py +0 -0
  17. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/context/__init__.py +0 -0
  18. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/context/context.py +0 -0
  19. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/context/types.py +0 -0
  20. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/executor.py +0 -0
  21. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/extensions/__init__.py +0 -0
  22. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/extensions/tasks/__init__.py +0 -0
  23. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/extensions/tasks/config.py +0 -0
  24. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/extensions/tasks/create.py +0 -0
  25. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/extensions/tasks/dist.py +0 -0
  26. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/extensions/tasks/shell.py +0 -0
  27. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/loader/entrypoint.py +0 -0
  28. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/log/__init__.py +0 -0
  29. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/log/logger.py +0 -0
  30. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/output/__init__.py +0 -0
  31. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/output/console.py +0 -0
  32. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/output/utils.py +0 -0
  33. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/parser.py +0 -0
  34. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/program/__init__.py +0 -0
  35. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/program/main.py +0 -0
  36. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/runners/__init__.py +0 -0
  37. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/runners/rich.py +0 -0
  38. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/scripts/__init__.py +0 -0
  39. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/scripts/loader.py +0 -0
  40. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/tasks/__init__.py +0 -0
  41. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/tasks/autocomplete.py +0 -0
  42. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/tasks/cache.py +0 -0
  43. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/tasks/tasks.py +0 -0
  44. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/tasks/types.py +0 -0
  45. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/testing.py +0 -0
  46. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/utils/__init__.py +0 -0
  47. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/utils/fzf.py +0 -0
  48. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/utils/inspection.py +0 -0
  49. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/utils/singleton.py +0 -0
  50. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/src/invoke_toolkit/utils/text.py +0 -0
  51. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/templates/package-template/.gitignore.jinja +0 -0
  52. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/templates/package-template/README.md.jinja +0 -0
  53. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/templates/package-template/copier.yml +0 -0
  54. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/templates/package-template/pyproject.toml.jinja +0 -0
  55. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/templates/package-template/src/{{package_slug}}/__init__.py.jinja +0 -0
  56. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/templates/package-template/src/{{package_slug}}/tasks.py.jinja +0 -0
  57. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/__init__.py +0 -0
  58. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/conftest.py +0 -0
  59. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/examples/cached_completion/tasks.py +0 -0
  60. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/examples/completion_with_config/.gitignore +0 -0
  61. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/examples/completion_with_config/tasks.py +0 -0
  62. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/examples/config_schema/tasks.py +0 -0
  63. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/examples/enum_select_size/tasks.py +0 -0
  64. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/examples/fzf_selector/tasks.py +0 -0
  65. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/examples/literal_set_level/tasks.py +0 -0
  66. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/extensions/conftest.py +0 -0
  67. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/extensions/test_config_tasks.py +0 -0
  68. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/extensions/test_create.py +0 -0
  69. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/extensions/test_package_template_entrypoint.py +0 -0
  70. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/extensions/test_shell_tasks.py +0 -0
  71. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/__init__.py +0 -0
  72. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/all-four/invoke.json +0 -0
  73. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/all-four/invoke.py +0 -0
  74. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/all-four/invoke.yml +0 -0
  75. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/collection.py +0 -0
  76. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/echo.yaml +0 -0
  77. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/json/invoke.json +0 -0
  78. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/json-and-python/invoke.json +0 -0
  79. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/json-and-python/invoke.py +0 -0
  80. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/no-dedupe.yaml +0 -0
  81. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/no-echo.yaml +0 -0
  82. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/package/invoke.yml +0 -0
  83. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/package/tasks/__init__.py +0 -0
  84. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/python/invoke.py +0 -0
  85. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/runtime.py +0 -0
  86. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/three-of-em/invoke.json +0 -0
  87. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/three-of-em/invoke.py +0 -0
  88. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/three-of-em/invoke.yml +0 -0
  89. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/underscores/tasks.py +0 -0
  90. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/yaml/explicit.py +0 -0
  91. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/yaml/tasks.py +0 -0
  92. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/yml/explicit.py +0 -0
  93. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/yml/invoke.yml +0 -0
  94. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/configs/yml/tasks.py +0 -0
  95. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/_support/has_modules.py +0 -0
  96. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/conftest.py +0 -0
  97. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/original_invoke/test_config.py +0 -0
  98. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/program/main.py +0 -0
  99. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/program/tasks/__init__.py +0 -0
  100. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/program/tasks/coll1.py +0 -0
  101. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/tasks/test_cache.py +0 -0
  102. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/tasks/test_extensions_config.py +0 -0
  103. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_annotated_help.py +0 -0
  104. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_cofig_class.py +0 -0
  105. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_collection.py +0 -0
  106. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_collection_configure.py +0 -0
  107. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_completion_with_choices.py +0 -0
  108. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_config_helper.py +0 -0
  109. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_config_registry.py +0 -0
  110. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_config_schema.py +0 -0
  111. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_console.py +0 -0
  112. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_context_class.py +0 -0
  113. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_disable_status_cli.py +0 -0
  114. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_enum_arguments.py +0 -0
  115. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_executor.py +0 -0
  116. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_file_completion.py +0 -0
  117. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_global_context.py +0 -0
  118. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_help_flags.py +0 -0
  119. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_invoke_compatibility.py +0 -0
  120. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_loader.py +0 -0
  121. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_parsing.py +0 -0
  122. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_proctitle.py +0 -0
  123. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_program_with_collection.py +0 -0
  124. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/test_toplevel.py +0 -0
  125. {invoke_toolkit-0.0.59 → invoke_toolkit-0.0.61}/tests/utils/test_fzf.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invoke-toolkit
3
- Version: 0.0.59
3
+ Version: 0.0.61
4
4
  Summary: A set of extended APIs for PyInvoke for composable scripts, plugins and richer output
5
5
  Project-URL: Documentation, https://github.com/D3f0/invoke-toolkit#readme
6
6
  Project-URL: Issues, https://github.com/D3f0/invoke-toolkit/issues
@@ -235,6 +235,16 @@ class ToolkitProgram(Program):
235
235
 
236
236
  .. versionadded:: 1.0
237
237
  """
238
+ # When namespace is provided (e.g., via script()), we still need to load
239
+ # the project configuration BEFORE calling super().parse_collection()
240
+ # because super() won't call load_collection() when namespace is provided
241
+ if self.namespace is not None:
242
+ debug("Namespace provided, ensuring project config is loaded")
243
+ # Use current working directory as the project location
244
+ # since we don't have a loader to determine it
245
+ self.config.set_project_location(".")
246
+ self.config.load_project()
247
+
238
248
  super().parse_collection()
239
249
 
240
250
  if self.args["internal-col"].value:
@@ -139,3 +139,36 @@ def test_script_multiple_prefixes(capsys):
139
139
  script(argv=["-l"], config_prefix="app2", exit=False)
140
140
  outerr2 = capsys.readouterr()
141
141
  assert "task-two" in outerr2.out
142
+
143
+
144
+ def test_script_loads_project_config(tmp_path: Path, capsys, monkeypatch):
145
+ """Test that script() loads project invoke.yml configuration"""
146
+ # Create a temporary directory with a script and config file
147
+ monkeypatch.chdir(tmp_path)
148
+
149
+ # Create invoke.yml config file with echo=true and pty=true
150
+ config_file = tmp_path / "invoke.yml"
151
+ config_file.write_text(
152
+ "run:\n echo: true\n pty: true\n",
153
+ encoding="utf-8",
154
+ )
155
+
156
+ # Create a task that checks the config values
157
+ @task()
158
+ def check_config(c):
159
+ # Check that config was loaded
160
+ assert c.config.run.echo is True, "echo should be True from invoke.yml"
161
+ assert c.config.run.pty is True, "pty should be True from invoke.yml"
162
+ c.run("echo 'Config loaded successfully'")
163
+
164
+ # Run script and verify config was loaded
165
+ # Note: need to pass script name as first arg for invoke
166
+ script(argv=["test_script.py", "check-config"], exit=False)
167
+ outerr = capsys.readouterr()
168
+
169
+ # If we got here without assertion errors, the config was loaded
170
+ assert (
171
+ "Config loaded successfully" in outerr.out
172
+ or "config.py" in outerr.err
173
+ or len(outerr.out) > 0
174
+ )