orch-cli 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. orch_cli-0.1.0/.github/workflows/ci.yml +34 -0
  2. orch_cli-0.1.0/.github/workflows/publish.yml +38 -0
  3. orch_cli-0.1.0/.gitignore +130 -0
  4. orch_cli-0.1.0/LICENSE +21 -0
  5. orch_cli-0.1.0/PKG-INFO +210 -0
  6. orch_cli-0.1.0/README.md +197 -0
  7. orch_cli-0.1.0/RESUMEN.md +107 -0
  8. orch_cli-0.1.0/cli_orchestrator_design.md +247 -0
  9. orch_cli-0.1.0/implementation_plan.md +99 -0
  10. orch_cli-0.1.0/orch/__init__.py +1 -0
  11. orch_cli-0.1.0/orch/cli.py +384 -0
  12. orch_cli-0.1.0/orch/config.py +84 -0
  13. orch_cli-0.1.0/orch/manager.py +273 -0
  14. orch_cli-0.1.0/orch/state.py +115 -0
  15. orch_cli-0.1.0/pyproject.toml +23 -0
  16. orch_cli-0.1.0/task.md +8 -0
  17. orch_cli-0.1.0/test-project/backend/app.py +18 -0
  18. orch_cli-0.1.0/test-project/backend/test_running.txt +10 -0
  19. orch_cli-0.1.0/test-project/orch.yml +18 -0
  20. orch_cli-0.1.0/test-project/ui/package.json +7 -0
  21. orch_cli-0.1.0/test-project/ui/server.js +19 -0
  22. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/__init__.py +13 -0
  23. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/__main__.py +24 -0
  24. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/__pip-runner__.py +50 -0
  25. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/__init__.py +18 -0
  26. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/build_env.py +319 -0
  27. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cache.py +290 -0
  28. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/__init__.py +4 -0
  29. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/autocompletion.py +176 -0
  30. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/base_command.py +231 -0
  31. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/cmdoptions.py +1075 -0
  32. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/command_context.py +27 -0
  33. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/index_command.py +170 -0
  34. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/main.py +80 -0
  35. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/main_parser.py +134 -0
  36. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/parser.py +294 -0
  37. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/progress_bars.py +94 -0
  38. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/req_command.py +329 -0
  39. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/spinners.py +159 -0
  40. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/cli/status_codes.py +6 -0
  41. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/__init__.py +132 -0
  42. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/cache.py +225 -0
  43. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/check.py +67 -0
  44. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/completion.py +130 -0
  45. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/configuration.py +280 -0
  46. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/debug.py +201 -0
  47. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/download.py +146 -0
  48. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/freeze.py +109 -0
  49. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/hash.py +59 -0
  50. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/help.py +41 -0
  51. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/index.py +139 -0
  52. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/inspect.py +92 -0
  53. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/install.py +783 -0
  54. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/list.py +375 -0
  55. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/search.py +172 -0
  56. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/show.py +217 -0
  57. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/uninstall.py +114 -0
  58. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/commands/wheel.py +182 -0
  59. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/configuration.py +383 -0
  60. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/distributions/__init__.py +21 -0
  61. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/distributions/base.py +53 -0
  62. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/distributions/installed.py +29 -0
  63. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/distributions/sdist.py +158 -0
  64. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/distributions/wheel.py +42 -0
  65. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/exceptions.py +809 -0
  66. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/index/__init__.py +2 -0
  67. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/index/collector.py +494 -0
  68. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/index/package_finder.py +1020 -0
  69. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/index/sources.py +284 -0
  70. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/locations/__init__.py +456 -0
  71. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/locations/_distutils.py +172 -0
  72. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/locations/_sysconfig.py +214 -0
  73. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/locations/base.py +81 -0
  74. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/main.py +12 -0
  75. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/metadata/__init__.py +128 -0
  76. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/metadata/_json.py +84 -0
  77. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/metadata/base.py +688 -0
  78. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +6 -0
  79. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +85 -0
  80. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +221 -0
  81. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +189 -0
  82. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +301 -0
  83. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/__init__.py +2 -0
  84. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/candidate.py +25 -0
  85. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/direct_url.py +224 -0
  86. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/format_control.py +78 -0
  87. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/index.py +28 -0
  88. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/installation_report.py +56 -0
  89. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/link.py +590 -0
  90. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/scheme.py +25 -0
  91. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/search_scope.py +127 -0
  92. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/selection_prefs.py +53 -0
  93. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/target_python.py +121 -0
  94. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/models/wheel.py +118 -0
  95. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/network/__init__.py +2 -0
  96. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/network/auth.py +566 -0
  97. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/network/cache.py +106 -0
  98. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/network/download.py +187 -0
  99. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/network/lazy_wheel.py +210 -0
  100. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/network/session.py +522 -0
  101. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/network/utils.py +98 -0
  102. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/network/xmlrpc.py +62 -0
  103. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
  104. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/operations/check.py +181 -0
  105. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/operations/freeze.py +258 -0
  106. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/operations/install/__init__.py +2 -0
  107. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +47 -0
  108. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/operations/install/wheel.py +741 -0
  109. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/operations/prepare.py +732 -0
  110. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/pyproject.py +185 -0
  111. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/req/__init__.py +90 -0
  112. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/req/constructors.py +560 -0
  113. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/req/req_file.py +574 -0
  114. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/req/req_install.py +934 -0
  115. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/req/req_set.py +82 -0
  116. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/req/req_uninstall.py +633 -0
  117. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
  118. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/base.py +20 -0
  119. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  120. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +597 -0
  121. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  122. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +139 -0
  123. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +574 -0
  124. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +823 -0
  125. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +174 -0
  126. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +258 -0
  127. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +81 -0
  128. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +245 -0
  129. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +317 -0
  130. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/self_outdated_check.py +244 -0
  131. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
  132. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
  133. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/_log.py +38 -0
  134. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/appdirs.py +52 -0
  135. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/compat.py +79 -0
  136. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +188 -0
  137. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/datetime.py +11 -0
  138. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/deprecation.py +124 -0
  139. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
  140. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/egg_link.py +80 -0
  141. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/encoding.py +36 -0
  142. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/entrypoints.py +84 -0
  143. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/filesystem.py +149 -0
  144. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/filetypes.py +27 -0
  145. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/glibc.py +101 -0
  146. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/hashes.py +147 -0
  147. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/logging.py +347 -0
  148. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/misc.py +772 -0
  149. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/packaging.py +57 -0
  150. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/retry.py +42 -0
  151. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/setuptools_build.py +146 -0
  152. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/subprocess.py +245 -0
  153. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/temp_dir.py +296 -0
  154. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/unpacking.py +337 -0
  155. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/urls.py +55 -0
  156. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/virtualenv.py +104 -0
  157. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/utils/wheel.py +134 -0
  158. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
  159. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/vcs/bazaar.py +112 -0
  160. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/vcs/git.py +527 -0
  161. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/vcs/mercurial.py +163 -0
  162. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/vcs/subversion.py +324 -0
  163. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +688 -0
  164. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_internal/wheel_builder.py +354 -0
  165. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/__init__.py +116 -0
  166. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +28 -0
  167. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +70 -0
  168. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +161 -0
  169. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +74 -0
  170. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +8 -0
  171. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +182 -0
  172. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +48 -0
  173. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +499 -0
  174. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +119 -0
  175. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +154 -0
  176. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
  177. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +146 -0
  178. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +43 -0
  179. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/certifi/__init__.py +4 -0
  180. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  181. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/certifi/cacert.pem +4929 -0
  182. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/certifi/core.py +114 -0
  183. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
  184. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/__init__.py +33 -0
  185. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/compat.py +1137 -0
  186. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/database.py +1329 -0
  187. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/index.py +508 -0
  188. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/locators.py +1295 -0
  189. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/manifest.py +384 -0
  190. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/markers.py +162 -0
  191. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/metadata.py +1031 -0
  192. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/resources.py +358 -0
  193. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/scripts.py +447 -0
  194. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  195. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe +0 -0
  196. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  197. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/util.py +1984 -0
  198. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/version.py +750 -0
  199. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  200. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe +0 -0
  201. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  202. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distlib/wheel.py +1100 -0
  203. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distro/__init__.py +54 -0
  204. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distro/__main__.py +4 -0
  205. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distro/distro.py +1403 -0
  206. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
  207. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/idna/__init__.py +44 -0
  208. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/idna/codec.py +118 -0
  209. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/idna/compat.py +13 -0
  210. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/idna/core.py +395 -0
  211. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/idna/idnadata.py +4245 -0
  212. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/idna/intranges.py +54 -0
  213. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/idna/package_data.py +2 -0
  214. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
  215. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/idna/uts46data.py +8598 -0
  216. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/msgpack/__init__.py +55 -0
  217. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  218. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/msgpack/ext.py +168 -0
  219. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/msgpack/fallback.py +951 -0
  220. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/__init__.py +15 -0
  221. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/_elffile.py +110 -0
  222. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +262 -0
  223. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +85 -0
  224. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/_parser.py +354 -0
  225. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/_structures.py +61 -0
  226. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py +194 -0
  227. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/markers.py +325 -0
  228. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/metadata.py +804 -0
  229. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
  230. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/requirements.py +91 -0
  231. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/specifiers.py +1009 -0
  232. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/tags.py +627 -0
  233. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/utils.py +174 -0
  234. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/packaging/version.py +563 -0
  235. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3676 -0
  236. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +627 -0
  237. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +55 -0
  238. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/platformdirs/android.py +249 -0
  239. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/platformdirs/api.py +292 -0
  240. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/platformdirs/macos.py +130 -0
  241. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
  242. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/platformdirs/unix.py +275 -0
  243. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/platformdirs/version.py +16 -0
  244. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/platformdirs/windows.py +272 -0
  245. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/__init__.py +82 -0
  246. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/__main__.py +17 -0
  247. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/cmdline.py +668 -0
  248. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/console.py +70 -0
  249. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/filter.py +70 -0
  250. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
  251. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatter.py +129 -0
  252. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +157 -0
  253. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
  254. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py +108 -0
  255. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py +170 -0
  256. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/html.py +987 -0
  257. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/img.py +685 -0
  258. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py +154 -0
  259. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py +518 -0
  260. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/other.py +160 -0
  261. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py +83 -0
  262. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py +349 -0
  263. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py +185 -0
  264. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py +127 -0
  265. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py +338 -0
  266. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/lexer.py +963 -0
  267. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
  268. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +589 -0
  269. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +1198 -0
  270. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/modeline.py +43 -0
  271. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/plugin.py +72 -0
  272. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
  273. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/scanner.py +104 -0
  274. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +247 -0
  275. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/style.py +203 -0
  276. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +61 -0
  277. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py +54 -0
  278. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/token.py +214 -0
  279. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/unistring.py +153 -0
  280. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pygments/util.py +324 -0
  281. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +23 -0
  282. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pyproject_hooks/_compat.py +8 -0
  283. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +330 -0
  284. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +18 -0
  285. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +353 -0
  286. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/__init__.py +179 -0
  287. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
  288. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +50 -0
  289. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/adapters.py +719 -0
  290. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/api.py +157 -0
  291. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/auth.py +314 -0
  292. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/certs.py +24 -0
  293. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/compat.py +78 -0
  294. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/cookies.py +561 -0
  295. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/exceptions.py +151 -0
  296. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/help.py +127 -0
  297. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/hooks.py +33 -0
  298. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/models.py +1037 -0
  299. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/packages.py +25 -0
  300. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/sessions.py +831 -0
  301. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/status_codes.py +128 -0
  302. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/structures.py +99 -0
  303. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/requests/utils.py +1096 -0
  304. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +26 -0
  305. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
  306. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +6 -0
  307. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/resolvelib/providers.py +133 -0
  308. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
  309. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +43 -0
  310. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +547 -0
  311. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/resolvelib/structs.py +170 -0
  312. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/__init__.py +177 -0
  313. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/__main__.py +273 -0
  314. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +454 -0
  315. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
  316. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
  317. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_export_format.py +76 -0
  318. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_extension.py +10 -0
  319. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_fileno.py +24 -0
  320. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_inspect.py +270 -0
  321. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_log_render.py +94 -0
  322. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_loop.py +43 -0
  323. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_null_file.py +69 -0
  324. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_palettes.py +309 -0
  325. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_pick.py +17 -0
  326. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_ratio.py +159 -0
  327. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_spinners.py +482 -0
  328. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_stack.py +16 -0
  329. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_timer.py +19 -0
  330. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_win32_console.py +662 -0
  331. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_windows.py +71 -0
  332. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
  333. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/_wrap.py +93 -0
  334. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/abc.py +33 -0
  335. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/align.py +311 -0
  336. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/ansi.py +240 -0
  337. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/bar.py +93 -0
  338. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/box.py +480 -0
  339. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/cells.py +167 -0
  340. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/color.py +621 -0
  341. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
  342. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/columns.py +187 -0
  343. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/console.py +2633 -0
  344. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/constrain.py +37 -0
  345. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/containers.py +167 -0
  346. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/control.py +225 -0
  347. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/default_styles.py +190 -0
  348. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/diagnose.py +37 -0
  349. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/emoji.py +96 -0
  350. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/errors.py +34 -0
  351. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
  352. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/filesize.py +89 -0
  353. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/highlighter.py +232 -0
  354. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/json.py +139 -0
  355. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/jupyter.py +101 -0
  356. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/layout.py +442 -0
  357. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/live.py +375 -0
  358. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/live_render.py +112 -0
  359. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/logging.py +289 -0
  360. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/markup.py +251 -0
  361. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/measure.py +151 -0
  362. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/padding.py +141 -0
  363. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/pager.py +34 -0
  364. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/palette.py +100 -0
  365. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/panel.py +312 -0
  366. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/pretty.py +995 -0
  367. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/progress.py +1699 -0
  368. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/progress_bar.py +223 -0
  369. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/prompt.py +375 -0
  370. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/protocol.py +42 -0
  371. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
  372. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/region.py +10 -0
  373. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/repr.py +149 -0
  374. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/rule.py +130 -0
  375. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/scope.py +86 -0
  376. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/screen.py +54 -0
  377. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/segment.py +738 -0
  378. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/spinner.py +137 -0
  379. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/status.py +131 -0
  380. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/style.py +796 -0
  381. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/styled.py +42 -0
  382. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/syntax.py +958 -0
  383. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/table.py +1000 -0
  384. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
  385. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/text.py +1357 -0
  386. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/theme.py +115 -0
  387. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/themes.py +5 -0
  388. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/traceback.py +753 -0
  389. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/rich/tree.py +249 -0
  390. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/tomli/__init__.py +11 -0
  391. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/tomli/_parser.py +691 -0
  392. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/tomli/_re.py +107 -0
  393. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/tomli/_types.py +10 -0
  394. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
  395. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/truststore/__init__.py +36 -0
  396. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/truststore/_api.py +316 -0
  397. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/truststore/_macos.py +571 -0
  398. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/truststore/_openssl.py +66 -0
  399. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py +31 -0
  400. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/truststore/_windows.py +567 -0
  401. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
  402. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/typing_extensions.py +3641 -0
  403. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/__init__.py +102 -0
  404. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
  405. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
  406. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/connection.py +572 -0
  407. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1140 -0
  408. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  409. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
  410. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  411. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
  412. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
  413. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
  414. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
  415. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +518 -0
  416. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
  417. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
  418. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
  419. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
  420. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
  421. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  422. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  423. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
  424. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +155 -0
  425. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1076 -0
  426. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +540 -0
  427. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/request.py +191 -0
  428. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/response.py +879 -0
  429. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
  430. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
  431. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
  432. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
  433. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/request.py +137 -0
  434. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
  435. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
  436. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +504 -0
  437. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
  438. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
  439. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +271 -0
  440. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/url.py +435 -0
  441. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +152 -0
  442. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/_vendor/vendor.txt +18 -0
  443. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip/py.typed +4 -0
  444. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip-24.3.1.dist-info/AUTHORS.txt +799 -0
  445. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip-24.3.1.dist-info/INSTALLER +1 -0
  446. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip-24.3.1.dist-info/LICENSE.txt +20 -0
  447. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip-24.3.1.dist-info/METADATA +90 -0
  448. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip-24.3.1.dist-info/RECORD +853 -0
  449. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip-24.3.1.dist-info/REQUESTED +0 -0
  450. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip-24.3.1.dist-info/WHEEL +5 -0
  451. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip-24.3.1.dist-info/entry_points.txt +3 -0
  452. orch_cli-0.1.0/test-project/venv-mock/Lib/site-packages/pip-24.3.1.dist-info/top_level.txt +1 -0
  453. orch_cli-0.1.0/test-project/venv-mock/Scripts/Activate.ps1 +528 -0
  454. orch_cli-0.1.0/test-project/venv-mock/Scripts/activate +71 -0
  455. orch_cli-0.1.0/test-project/venv-mock/Scripts/activate.bat +34 -0
  456. orch_cli-0.1.0/test-project/venv-mock/Scripts/deactivate.bat +22 -0
  457. orch_cli-0.1.0/test-project/venv-mock/Scripts/pip.exe +0 -0
  458. orch_cli-0.1.0/test-project/venv-mock/Scripts/pip3.12.exe +0 -0
  459. orch_cli-0.1.0/test-project/venv-mock/Scripts/pip3.exe +0 -0
  460. orch_cli-0.1.0/test-project/venv-mock/Scripts/python.exe +0 -0
  461. orch_cli-0.1.0/test-project/venv-mock/Scripts/pythonw.exe +0 -0
  462. orch_cli-0.1.0/test-project/venv-mock/pyvenv.cfg +5 -0
  463. orch_cli-0.1.0/tests/test_config.py +80 -0
  464. orch_cli-0.1.0/tests/test_state.py +101 -0
  465. orch_cli-0.1.0/walkthrough.md +50 -0
  466. orch_cli-0.1.0/walkthrough_1.md +30 -0
@@ -0,0 +1,34 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, master ]
6
+ pull_request:
7
+ branches: [ main, master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu-latest, windows-latest, macos-latest]
16
+ python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
17
+
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Set up Python ${{ matrix.python-version }}
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version: ${{ matrix.python-version }}
25
+
26
+ - name: Install dependencies
27
+ run: |
28
+ python -m pip install --upgrade pip
29
+ pip install -e .
30
+ pip install pytest pytest-mock
31
+
32
+ - name: Run tests
33
+ run: |
34
+ pytest
@@ -0,0 +1,38 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ build-n-publish:
10
+ name: Build and publish Python distro to PyPI
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ # This permission is required for Trusted Publishing (OIDC) to PyPI
14
+ id-token: write
15
+ contents: read
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Set up Python
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.10"
24
+
25
+ - name: Install build tools
26
+ run: |
27
+ python -m pip install --upgrade pip
28
+ pip install hatch
29
+
30
+ - name: Build package
31
+ run: |
32
+ hatch build
33
+
34
+ - name: Publish package distribution to PyPI
35
+ uses: pypa/gh-action-pypi-publish@release/v1
36
+ with:
37
+ # Trusted Publishing automatically authenticates with PyPI using the OIDC token
38
+ skip-existing: true
@@ -0,0 +1,130 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ build/
11
+ develop-eggs/
12
+ dist/
13
+ downloads/
14
+ eggs/
15
+ .eggs/
16
+ lib/
17
+ lib64/
18
+ parts/
19
+ sdist/
20
+ var/
21
+ wheels/
22
+ share/python-wheels/
23
+ *.egg-info/
24
+ .installed.cfg
25
+ *.egg
26
+ MANIFEST
27
+
28
+ # PyInstaller
29
+ # Usually these files are written by a python script from a template
30
+ # before PyInstaller builds the exe, so they can be injected at build time.
31
+ *.manifest
32
+ *.spec
33
+
34
+ # Installer logs
35
+ pip-log.txt
36
+ pip-delete-this-directory.txt
37
+
38
+ # Unit test / coverage reports
39
+ htmlcov/
40
+ .tox/
41
+ .nosenv/
42
+ .pytest_cache/
43
+ . Moffat_cache/
44
+ .hypothesis/
45
+ .run/
46
+ .coverage
47
+ .coverage.*
48
+ .cache
49
+ nosetests.xml
50
+ coverage.xml
51
+ *.cover
52
+ *.py,cover
53
+ .fixtures.json
54
+ var/
55
+
56
+ # Translations
57
+ *.mo
58
+ *.pot
59
+
60
+ # Django stuff:
61
+ *.log
62
+ local_settings.py
63
+ db.sqlite3
64
+ db.sqlite3-journal
65
+
66
+ # Sphinx documentation
67
+ docs/_build/
68
+
69
+ # PyBuilder
70
+ .pybuilder/
71
+ target/
72
+
73
+ # Jupyter Notebook
74
+ .ipynb_checkpoints
75
+
76
+ # IPython
77
+ profile_default/
78
+ ipython_config.py
79
+
80
+ # pyenv
81
+ # For a library or app, you might want to share your .python-version.
82
+ # For detail see: https://github.com/pyenv/pyenv#local-version-file
83
+ #.python-version
84
+
85
+ # pipenv
86
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
87
+ # However, in case of microservices or venv, it can be ignored.
88
+ #Pipfile.lock
89
+
90
+ # poetry
91
+ # Using Poetry, it is recommended to include poetry.lock in version control.
92
+ # poetry.lock
93
+
94
+ # pdm
95
+ # Using PDM, it is recommended to include pdm.lock in version control.
96
+ #pdm.lock
97
+ .pdm-plugins/
98
+ .pdm-python
99
+
100
+ # PEP 582; metadata and dependency directory (installed by pipx)
101
+ __pypackages__/
102
+
103
+ # Celery stuff
104
+ celerybeat-schedule
105
+ celerybeat.pid
106
+
107
+ # SageMath parsed files
108
+ *.sage.py
109
+
110
+ # Environments
111
+ .env
112
+ .venv
113
+ env/
114
+ venv/
115
+ ENV/
116
+ env.bak/
117
+ venv.bak/
118
+
119
+ # Spyder project settings
120
+ .spyderproject
121
+ .spyproject
122
+
123
+ # VS Code settings
124
+ .vscode/
125
+
126
+ # PyCharm / JetBrains settings
127
+ .idea/
128
+
129
+ # local orch orchestrator directories
130
+ .orch/
orch_cli-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 EASYLIFECODE / Anthony Mosquera (4m12-code)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,210 @@
1
+ Metadata-Version: 2.4
2
+ Name: orch-cli
3
+ Version: 0.1.0
4
+ Summary: A local development process orchestrator and venv-aware runner
5
+ License: MIT
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.8
8
+ Requires-Dist: psutil>=5.9.0
9
+ Requires-Dist: pyyaml>=6.0
10
+ Requires-Dist: rich>=13.0.0
11
+ Requires-Dist: typer[all]>=0.9.0
12
+ Description-Content-Type: text/markdown
13
+
14
+ # Orch - Local Service Orchestrator
15
+
16
+ [![PyPI version](https://img.shields.io/pypi/v/orch-cli.svg)](https://pypi.org/project/orch-cli/)
17
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
18
+ [![Build Status](https://github.com/EASYLIFECODE/orch/workflows/CI/badge.svg)](https://github.com/EASYLIFECODE/orch/actions)
19
+
20
+ **Orch** is a lightweight, **daemon-less** command-line interface (CLI) tool designed to simplify local development of client-server or multi-service architectures.
21
+
22
+ It runs your scripts, servers, frontends, and workers concurrently, manages their Python virtual environments (`venv`) transparently, monitors their resources, and multiplexes their logs—**without** the overhead of Docker or background daemon processes.
23
+
24
+ ---
25
+
26
+ ## Key Features
27
+
28
+ - 🔌 **Daemon-less Architecture**: No persistent background services needed. State is safely tracked locally in `.orch/state.json`.
29
+ - 🐍 **Automatic venv Detection**: Injects your project's Python virtual environment (`venv`) to the process execution path automatically—no manual activation scripts required.
30
+ - 🎨 **Unified Multiplexed Logs**: Streams output from all services into a single terminal window with distinct, customizable color prefixes, protecting ANSI markup.
31
+ - 🌙 **Background Execution**: Spawn services in detached modes, persisting output to individual log files.
32
+ - 📊 **Resource Monitoring**: Track CPU, Memory consumption, and uptime per service with a single command.
33
+ - 🛡️ **Clean Process Tree Teardown**: Intercepts shutdown signals and recursively kills child processes (e.g. Node sub-processes, shell scripts) cleanly, avoiding orphaned processes.
34
+ - 🛡️ **PID Recycle Protection**: Safeguards against re-using recycled PIDs by validating the OS process creation time before killing or reporting status.
35
+
36
+ ---
37
+
38
+ ## Installation
39
+
40
+ ### Stable Release (via PyPI)
41
+
42
+ ```bash
43
+ pip install orch-cli
44
+ ```
45
+
46
+ ### From Source (Development Mode)
47
+
48
+ 1. Clone the repository:
49
+ ```bash
50
+ git clone https://github.com/EASYLIFECODE/orch.git
51
+ cd orch
52
+ ```
53
+
54
+ 2. Install in editable development mode:
55
+ ```bash
56
+ pip install -e .
57
+ ```
58
+
59
+ ---
60
+
61
+ ## Configuration (`orch.yml`)
62
+
63
+ Configure your services in an `orch.yml` or `project.yml` file in the root of your project:
64
+
65
+ ```yaml
66
+ # orch.yml
67
+ project: my-awesome-app
68
+
69
+ # Global environment configuration
70
+ env:
71
+ type: venv # Type of virtual environment
72
+ path: ./venv # Path to the virtualenv folder
73
+ variables:
74
+ GLOBAL_VAR: "shared-value"
75
+ DATABASE_URL: "sqlite:///local.db"
76
+
77
+ services:
78
+ backend:
79
+ path: ./backend # Working directory for this service
80
+ command: python app.py # Automatically runs using the configured global venv
81
+ env:
82
+ PORT: "8000"
83
+
84
+ frontend:
85
+ path: ./frontend
86
+ command: npm run dev
87
+ env:
88
+ VITE_API_URL: "http://localhost:8000"
89
+
90
+ worker:
91
+ path: ./worker
92
+ command: python worker.py
93
+ ```
94
+
95
+ ---
96
+
97
+ ## CLI Usage
98
+
99
+ ### 1. Run in Foreground (Interactive Mode)
100
+
101
+ Launches all services concurrently, streaming their colored logs into the active console. Pressing `Ctrl+C` cleanly shuts down all services.
102
+
103
+ ```bash
104
+ orch up
105
+ ```
106
+
107
+ ### 2. Run in Background (Detached Mode)
108
+
109
+ Launches all services in the background and saves their state.
110
+
111
+ ```bash
112
+ orch start
113
+ ```
114
+
115
+ ### 3. Check Service Status & Resource Usage
116
+
117
+ Displays an elegant table showing running status, PID, CPU, Memory usage (recursive of all child processes), and uptime.
118
+
119
+ ```bash
120
+ orch status
121
+ ```
122
+
123
+ *Example Output:*
124
+ ```text
125
+ Project: my-awesome-app (Services Status)
126
+ ┌──────────┬─────────┬───────┬───────┬─────────────┬──────────┐
127
+ │ Service │ Status │ PID │ CPU % │ Memory (MB) │ Uptime │
128
+ ├──────────┼─────────┼───────┼───────┼─────────────┼──────────┤
129
+ │ backend │ RUNNING │ 12452 │ 0.2% │ 45.4 MB │ 00:12:30 │
130
+ │ frontend │ RUNNING │ 12459 │ 0.0% │ 82.1 MB │ 00:12:30 │
131
+ │ worker │ RUNNING │ 12461 │ 1.5% │ 32.7 MB │ 00:12:28 │
132
+ └──────────┴─────────┴───────┴───────┴─────────────┴──────────┘
133
+ ```
134
+
135
+ ### 4. Consult and Tail Logs
136
+
137
+ Tail log files of services running in the background.
138
+
139
+ ```bash
140
+ # Follow logs of all services
141
+ orch logs -f
142
+
143
+ # Follow logs of a specific service
144
+ orch logs backend -f
145
+
146
+ # Read last 100 lines without following
147
+ orch logs frontend --lines 100
148
+ ```
149
+
150
+ ### 5. Restart Services
151
+
152
+ Restarts all or specific services running in the background.
153
+
154
+ ```bash
155
+ # Restart all
156
+ orch restart
157
+
158
+ # Restart only backend
159
+ orch restart backend
160
+ ```
161
+
162
+ ### 6. Stop Services
163
+
164
+ Stops services running in the background and cleans up state.
165
+
166
+ ```bash
167
+ # Stop all services
168
+ orch stop
169
+
170
+ # Stop a specific service
171
+ orch stop backend
172
+ ```
173
+
174
+ ### 7. Clean State & Logs
175
+
176
+ Terminates background services, clears log files (`.orch/logs/*.log`) to 0 bytes, and resets the state file.
177
+
178
+ ```bash
179
+ orch clean
180
+ ```
181
+
182
+ ---
183
+
184
+ ## Technical Architecture
185
+
186
+ Orch is built using **Python 3.8+**, **Typer** for the CLI framework, **Rich** for visual output rendering, and **psutil** for platform-independent process controls.
187
+
188
+ ```text
189
+ [ CLI Command: orch ]
190
+
191
+ [ Load Configuration ]
192
+
193
+ [ Validate YAML Schema ]
194
+
195
+ [ Process Execution ]
196
+
197
+ ┌────────────────────┴────────────────────┐
198
+ [ Foreground Mode ] [ Background Mode ]
199
+ (Multiplex to Terminal) (Write to Log Files)
200
+ │ │
201
+ ├── Thread 1 (stdout) ├── .orch/logs/backend.log
202
+ ├── Thread 2 (stdout) ├── .orch/logs/frontend.log
203
+ └── SIGINT cleanup └── Keep PIDs in .orch/state.json
204
+ ```
205
+
206
+ ---
207
+
208
+ ## License
209
+
210
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,197 @@
1
+ # Orch - Local Service Orchestrator
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/orch-cli.svg)](https://pypi.org/project/orch-cli/)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Build Status](https://github.com/EASYLIFECODE/orch/workflows/CI/badge.svg)](https://github.com/EASYLIFECODE/orch/actions)
6
+
7
+ **Orch** is a lightweight, **daemon-less** command-line interface (CLI) tool designed to simplify local development of client-server or multi-service architectures.
8
+
9
+ It runs your scripts, servers, frontends, and workers concurrently, manages their Python virtual environments (`venv`) transparently, monitors their resources, and multiplexes their logs—**without** the overhead of Docker or background daemon processes.
10
+
11
+ ---
12
+
13
+ ## Key Features
14
+
15
+ - 🔌 **Daemon-less Architecture**: No persistent background services needed. State is safely tracked locally in `.orch/state.json`.
16
+ - 🐍 **Automatic venv Detection**: Injects your project's Python virtual environment (`venv`) to the process execution path automatically—no manual activation scripts required.
17
+ - 🎨 **Unified Multiplexed Logs**: Streams output from all services into a single terminal window with distinct, customizable color prefixes, protecting ANSI markup.
18
+ - 🌙 **Background Execution**: Spawn services in detached modes, persisting output to individual log files.
19
+ - 📊 **Resource Monitoring**: Track CPU, Memory consumption, and uptime per service with a single command.
20
+ - 🛡️ **Clean Process Tree Teardown**: Intercepts shutdown signals and recursively kills child processes (e.g. Node sub-processes, shell scripts) cleanly, avoiding orphaned processes.
21
+ - 🛡️ **PID Recycle Protection**: Safeguards against re-using recycled PIDs by validating the OS process creation time before killing or reporting status.
22
+
23
+ ---
24
+
25
+ ## Installation
26
+
27
+ ### Stable Release (via PyPI)
28
+
29
+ ```bash
30
+ pip install orch-cli
31
+ ```
32
+
33
+ ### From Source (Development Mode)
34
+
35
+ 1. Clone the repository:
36
+ ```bash
37
+ git clone https://github.com/EASYLIFECODE/orch.git
38
+ cd orch
39
+ ```
40
+
41
+ 2. Install in editable development mode:
42
+ ```bash
43
+ pip install -e .
44
+ ```
45
+
46
+ ---
47
+
48
+ ## Configuration (`orch.yml`)
49
+
50
+ Configure your services in an `orch.yml` or `project.yml` file in the root of your project:
51
+
52
+ ```yaml
53
+ # orch.yml
54
+ project: my-awesome-app
55
+
56
+ # Global environment configuration
57
+ env:
58
+ type: venv # Type of virtual environment
59
+ path: ./venv # Path to the virtualenv folder
60
+ variables:
61
+ GLOBAL_VAR: "shared-value"
62
+ DATABASE_URL: "sqlite:///local.db"
63
+
64
+ services:
65
+ backend:
66
+ path: ./backend # Working directory for this service
67
+ command: python app.py # Automatically runs using the configured global venv
68
+ env:
69
+ PORT: "8000"
70
+
71
+ frontend:
72
+ path: ./frontend
73
+ command: npm run dev
74
+ env:
75
+ VITE_API_URL: "http://localhost:8000"
76
+
77
+ worker:
78
+ path: ./worker
79
+ command: python worker.py
80
+ ```
81
+
82
+ ---
83
+
84
+ ## CLI Usage
85
+
86
+ ### 1. Run in Foreground (Interactive Mode)
87
+
88
+ Launches all services concurrently, streaming their colored logs into the active console. Pressing `Ctrl+C` cleanly shuts down all services.
89
+
90
+ ```bash
91
+ orch up
92
+ ```
93
+
94
+ ### 2. Run in Background (Detached Mode)
95
+
96
+ Launches all services in the background and saves their state.
97
+
98
+ ```bash
99
+ orch start
100
+ ```
101
+
102
+ ### 3. Check Service Status & Resource Usage
103
+
104
+ Displays an elegant table showing running status, PID, CPU, Memory usage (recursive of all child processes), and uptime.
105
+
106
+ ```bash
107
+ orch status
108
+ ```
109
+
110
+ *Example Output:*
111
+ ```text
112
+ Project: my-awesome-app (Services Status)
113
+ ┌──────────┬─────────┬───────┬───────┬─────────────┬──────────┐
114
+ │ Service │ Status │ PID │ CPU % │ Memory (MB) │ Uptime │
115
+ ├──────────┼─────────┼───────┼───────┼─────────────┼──────────┤
116
+ │ backend │ RUNNING │ 12452 │ 0.2% │ 45.4 MB │ 00:12:30 │
117
+ │ frontend │ RUNNING │ 12459 │ 0.0% │ 82.1 MB │ 00:12:30 │
118
+ │ worker │ RUNNING │ 12461 │ 1.5% │ 32.7 MB │ 00:12:28 │
119
+ └──────────┴─────────┴───────┴───────┴─────────────┴──────────┘
120
+ ```
121
+
122
+ ### 4. Consult and Tail Logs
123
+
124
+ Tail log files of services running in the background.
125
+
126
+ ```bash
127
+ # Follow logs of all services
128
+ orch logs -f
129
+
130
+ # Follow logs of a specific service
131
+ orch logs backend -f
132
+
133
+ # Read last 100 lines without following
134
+ orch logs frontend --lines 100
135
+ ```
136
+
137
+ ### 5. Restart Services
138
+
139
+ Restarts all or specific services running in the background.
140
+
141
+ ```bash
142
+ # Restart all
143
+ orch restart
144
+
145
+ # Restart only backend
146
+ orch restart backend
147
+ ```
148
+
149
+ ### 6. Stop Services
150
+
151
+ Stops services running in the background and cleans up state.
152
+
153
+ ```bash
154
+ # Stop all services
155
+ orch stop
156
+
157
+ # Stop a specific service
158
+ orch stop backend
159
+ ```
160
+
161
+ ### 7. Clean State & Logs
162
+
163
+ Terminates background services, clears log files (`.orch/logs/*.log`) to 0 bytes, and resets the state file.
164
+
165
+ ```bash
166
+ orch clean
167
+ ```
168
+
169
+ ---
170
+
171
+ ## Technical Architecture
172
+
173
+ Orch is built using **Python 3.8+**, **Typer** for the CLI framework, **Rich** for visual output rendering, and **psutil** for platform-independent process controls.
174
+
175
+ ```text
176
+ [ CLI Command: orch ]
177
+
178
+ [ Load Configuration ]
179
+
180
+ [ Validate YAML Schema ]
181
+
182
+ [ Process Execution ]
183
+
184
+ ┌────────────────────┴────────────────────┐
185
+ [ Foreground Mode ] [ Background Mode ]
186
+ (Multiplex to Terminal) (Write to Log Files)
187
+ │ │
188
+ ├── Thread 1 (stdout) ├── .orch/logs/backend.log
189
+ ├── Thread 2 (stdout) ├── .orch/logs/frontend.log
190
+ └── SIGINT cleanup └── Keep PIDs in .orch/state.json
191
+ ```
192
+
193
+ ---
194
+
195
+ ## License
196
+
197
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.