evolver-tools 18.0.0__tar.gz → 19.0.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 (248) hide show
  1. {evolver_tools-18.0.0/src/evolver_tools.egg-info → evolver_tools-19.0.0}/PKG-INFO +2 -2
  2. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/pyproject.toml +2 -2
  3. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/cli.py +1 -1
  4. evolver_tools-19.0.0/src/evolver_tools/vendor/cowsay.py +165 -0
  5. evolver_tools-19.0.0/src/evolver_tools/vendor/factor.py +80 -0
  6. evolver_tools-19.0.0/src/evolver_tools/vendor/nl.py +90 -0
  7. evolver_tools-19.0.0/src/evolver_tools/vendor/timeout.py +68 -0
  8. evolver_tools-19.0.0/src/evolver_tools/vendor/yes.py +39 -0
  9. {evolver_tools-18.0.0 → evolver_tools-19.0.0/src/evolver_tools.egg-info}/PKG-INFO +2 -2
  10. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools.egg-info/SOURCES.txt +5 -0
  11. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/LICENSE +0 -0
  12. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/README.md +0 -0
  13. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/setup.cfg +0 -0
  14. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/__init__.py +0 -0
  15. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/__main__.py +0 -0
  16. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/autoreg.py +0 -0
  17. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/__init__.py +0 -0
  18. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/agent_b_tool.py +0 -0
  19. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ansi_strip.py +0 -0
  20. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/api_tester.py +0 -0
  21. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ascii_gen.py +0 -0
  22. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/audit_log.py +0 -0
  23. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/b64/__init__.py +0 -0
  24. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/b64/b64.py +0 -0
  25. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/backup.py +0 -0
  26. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/banner/__init__.py +0 -0
  27. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/banner/banner.py +0 -0
  28. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/banner.py +0 -0
  29. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/base32.py +0 -0
  30. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/bookmark.py +0 -0
  31. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/cal_tool/__init__.py +0 -0
  32. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/cal_tool/cli.py +0 -0
  33. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/calendar_cli.py +0 -0
  34. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/cert_check.py +0 -0
  35. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/cert_info.py +0 -0
  36. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/changelog_gen/__init__.py +0 -0
  37. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/changelog_gen/changelog_gen.py +0 -0
  38. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/changelog_gen.py +0 -0
  39. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/chart_cli/__init__.py +0 -0
  40. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/chart_cli/__main__.py +0 -0
  41. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/checksum_dir.py +0 -0
  42. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/clipboard/__init__.py +0 -0
  43. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/clipboard/clipboard.py +0 -0
  44. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/code_auditor.py +0 -0
  45. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/code_stats.py +0 -0
  46. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/colorize.py +0 -0
  47. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/colors/__init__.py +0 -0
  48. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/colors/__main__.py +0 -0
  49. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/config_validator.py +0 -0
  50. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/config_vault.py +0 -0
  51. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/cron/__init__.py +0 -0
  52. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/cron/__main__.py +0 -0
  53. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/cron_pretty.py +0 -0
  54. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/crontab_helper.py +0 -0
  55. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/crypto_box.py +0 -0
  56. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/crypto_price.py +0 -0
  57. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/csv2json.py +0 -0
  58. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/csv_stats/__init__.py +0 -0
  59. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/csv_stats/__main__.py +0 -0
  60. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/csv_stats/analyzer.py +0 -0
  61. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/csv_stats/cli.py +0 -0
  62. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/csv_validate.py +0 -0
  63. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/csv_view.py +0 -0
  64. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/db_mate.py +0 -0
  65. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/db_schema.py +0 -0
  66. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/dep_graph.py +0 -0
  67. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/dev_dashboard.py +0 -0
  68. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/dice_roll.py +0 -0
  69. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/diff_csv.py +0 -0
  70. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/diff_tool/__init__.py +0 -0
  71. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/diff_tool/__main__.py +0 -0
  72. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/dirsize/__init__.py +0 -0
  73. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/disk_cleanup.py +0 -0
  74. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/disk_usage/__init__.py +0 -0
  75. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/disk_usage/disk_usage.py +0 -0
  76. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/dns_lookup.py +0 -0
  77. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/docker_helper.py +0 -0
  78. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/dt_convert.py +0 -0
  79. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/env_diff.py +0 -0
  80. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/env_manager.py +0 -0
  81. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/envcheck/__init__.py +0 -0
  82. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/epoch.py +0 -0
  83. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/excel2csv.py +0 -0
  84. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ff/__init__.py +0 -0
  85. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ff/__main__.py +0 -0
  86. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/figlet_cli.py +0 -0
  87. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/figlet_tool.py +0 -0
  88. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/file_encrypt.py +0 -0
  89. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/file_joiner.py +0 -0
  90. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/file_splitter.py +0 -0
  91. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/file_watch.py +0 -0
  92. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/find_dups/__init__.py +0 -0
  93. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/find_dups/cli.py +0 -0
  94. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/firewall_rule.py +0 -0
  95. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/fmt/__init__.py +0 -0
  96. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/fmt/fmt.py +0 -0
  97. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/geo_ip.py +0 -0
  98. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/git_branch_cleaner.py +0 -0
  99. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/git_log_pretty.py +0 -0
  100. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/git_stats.py +0 -0
  101. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/hash_check.py +0 -0
  102. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/hash_file.py +0 -0
  103. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/hashsum/__init__.py +0 -0
  104. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/hashsum/__main__.py +0 -0
  105. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/hex_tool.py +0 -0
  106. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/hexdump.py +0 -0
  107. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/html2markdown.py +0 -0
  108. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/html2md.py +0 -0
  109. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/http_headers.py +0 -0
  110. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/http_live/__init__.py +0 -0
  111. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/http_live/__main__.py +0 -0
  112. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/image_meta.py +0 -0
  113. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ini2json.py +0 -0
  114. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ini_parser/__init__.py +0 -0
  115. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ini_parser/ini_parser.py +0 -0
  116. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ip_location.py +0 -0
  117. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ipcalc/__init__.py +0 -0
  118. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ipcalc/__main__.py +0 -0
  119. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ipinfo/__init__.py +0 -0
  120. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ipinfo/__main__.py +0 -0
  121. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/join.py +0 -0
  122. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/joke.py +0 -0
  123. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/jq_lite/__init__.py +0 -0
  124. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/jq_lite/__main__.py +0 -0
  125. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/json2csv/__init__.py +0 -0
  126. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/json2csv/__main__.py +0 -0
  127. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/json2ini.py +0 -0
  128. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/json_pretty/__init__.py +0 -0
  129. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/json_pretty/json_pretty.py +0 -0
  130. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/json_schema_validate.py +0 -0
  131. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/jsonql/__init__.py +0 -0
  132. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/jsonql/__main__.py +0 -0
  133. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/key_value_store.py +0 -0
  134. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/license.py +0 -0
  135. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/license_cli/__init__.py +0 -0
  136. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/license_cli/__main__.py +0 -0
  137. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/license_cli/cli.py +0 -0
  138. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/log_analyzer.py +0 -0
  139. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/log_hawk.py +0 -0
  140. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/log_tail.py +0 -0
  141. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/macrogen.py +0 -0
  142. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/markdown_check/__init__.py +0 -0
  143. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/markdown_preview.py +0 -0
  144. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/markdown_toc.py +0 -0
  145. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/media_studio.py +0 -0
  146. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/morse.py +0 -0
  147. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/nb/__init__.py +0 -0
  148. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/nb/__main__.py +0 -0
  149. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/net_analyzer.py +0 -0
  150. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/net_speed.py +0 -0
  151. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/network_scan.py +0 -0
  152. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/note_taker.py +0 -0
  153. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/otp_gen.py +0 -0
  154. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/passgen/__init__.py +0 -0
  155. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/password_strength.py +0 -0
  156. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/pdf_text.py +0 -0
  157. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/pipe_viewer.py +0 -0
  158. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/port_scan.py +0 -0
  159. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/portcheck/__init__.py +0 -0
  160. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/portcheck/__main__.py +0 -0
  161. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/pr_tool/__init__.py +0 -0
  162. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/pr_tool/pr_tool.py +0 -0
  163. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/process_kill.py +0 -0
  164. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/progress_bar.py +0 -0
  165. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/project_doctor/__init__.py +0 -0
  166. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/project_doctor/__main__.py +0 -0
  167. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/qc_calc.py +0 -0
  168. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/qc_report.py +0 -0
  169. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/qc_sample.py +0 -0
  170. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/qr_cli.py +0 -0
  171. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/qrcode.py +0 -0
  172. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/quote.py +0 -0
  173. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/quote_tool/__init__.py +0 -0
  174. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/quote_tool/quote.py +0 -0
  175. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/rainbow.py +0 -0
  176. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/random.py +0 -0
  177. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/reminder.py +0 -0
  178. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ren/__init__.py +0 -0
  179. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ren/__main__.py +0 -0
  180. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/replace_text.py +0 -0
  181. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/restore.py +0 -0
  182. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/rot13.py +0 -0
  183. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/route_trace.py +0 -0
  184. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/scan_ports.py +0 -0
  185. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/screen_recorder.py +0 -0
  186. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/screenshot_cli.py +0 -0
  187. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/search_files.py +0 -0
  188. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/search_history.py +0 -0
  189. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/secret_scanner.py +0 -0
  190. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/service_check.py +0 -0
  191. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/shuffle.py +0 -0
  192. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/siege_lite/__init__.py +0 -0
  193. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/siege_lite/__main__.py +0 -0
  194. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/smellfinder/__init__.py +0 -0
  195. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/smellfinder/__main__.py +0 -0
  196. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/sort/__init__.py +0 -0
  197. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/sort/sort.py +0 -0
  198. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/spinner.py +0 -0
  199. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/split.py +0 -0
  200. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/split_tool/__init__.py +0 -0
  201. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/split_tool/split.py +0 -0
  202. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/sql2csv.py +0 -0
  203. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/sqlite_cli/__init__.py +0 -0
  204. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/sqlite_cli/__main__.py +0 -0
  205. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ssh_key_gen.py +0 -0
  206. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/ssl_check.py +0 -0
  207. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/stopwatch.py +0 -0
  208. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/subnet.py +0 -0
  209. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/sysmon/__init__.py +0 -0
  210. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/sysmon/__main__.py +0 -0
  211. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/sysmon_pro.py +0 -0
  212. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/system_info.py +0 -0
  213. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/temp_cleaner.py +0 -0
  214. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/template.py +0 -0
  215. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/text_stats.py +0 -0
  216. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/timer/__init__.py +0 -0
  217. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/timer_pro/__init__.py +0 -0
  218. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/timer_pro/timer_pro.py +0 -0
  219. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/timer_pro.py +0 -0
  220. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/todo_cli.py +0 -0
  221. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/toml2json.py +0 -0
  222. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/tree.py +0 -0
  223. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/treedir/__init__.py +0 -0
  224. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/treedir/__main__.py +0 -0
  225. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/uniq_tool/__init__.py +0 -0
  226. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/uniq_tool/uniq.py +0 -0
  227. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/unit_convert.py +0 -0
  228. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/uri_encode.py +0 -0
  229. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/url_parser.py +0 -0
  230. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/urlparse_tool/__init__.py +0 -0
  231. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/urlparse_tool/cli.py +0 -0
  232. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/uuid_tool/__init__.py +0 -0
  233. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/uuid_tool/__main__.py +0 -0
  234. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/weather_cli.py +0 -0
  235. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/web_download.py +0 -0
  236. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/web_summary/__init__.py +0 -0
  237. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/web_summary/__main__.py +0 -0
  238. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/whois_lookup.py +0 -0
  239. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/wordcount/__init__.py +0 -0
  240. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/wordcount/__main__.py +0 -0
  241. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/xml2json.py +0 -0
  242. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/yaml2json/__init__.py +0 -0
  243. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/yaml2json/yaml2json.py +0 -0
  244. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/yaml2toml.py +0 -0
  245. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools/vendor/yaml_validate.py +0 -0
  246. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools.egg-info/dependency_links.txt +0 -0
  247. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools.egg-info/entry_points.txt +0 -0
  248. {evolver_tools-18.0.0 → evolver_tools-19.0.0}/src/evolver_tools.egg-info/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolver-tools
3
- Version: 18.0.0
4
- Summary: 176 CLI tools + 9 flagship projects — one pip install
3
+ Version: 19.0.0
4
+ Summary: 181 CLI tools + 9 flagship projects — one pip install
5
5
  Author: EVOLVER
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://evolver-dev.github.io/evolver-tools
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "evolver-tools"
7
- version = "18.0.0"
8
- description = "176 CLI tools + 9 flagship projects — one pip install"
7
+ version = "19.0.0"
8
+ description = "181 CLI tools + 9 flagship projects — one pip install"
9
9
  readme = "README.md"
10
10
  license = "MIT"
11
11
  requires-python = ">=3.8"
@@ -14,7 +14,7 @@ from evolver_tools.autoreg import auto_discover
14
14
  def list_tools():
15
15
  """Display all available tools."""
16
16
  tools = auto_discover()
17
- print(f'\x1b[1;36m===== EVOLVER Tools v18.0.0 =====\x1b[0m')
17
+ print(f'\x1b[1;36m===== EVOLVER Tools v19.0.0 =====\x1b[0m')
18
18
  print()
19
19
  for name, info in sorted(tools.items()):
20
20
  print(f' \033[1;33m{name:<18}\033[0m {info["desc"]}')
@@ -0,0 +1,165 @@
1
+ #!/usr/bin/env python3
2
+ """cowsay — ASCII cow saying text.
3
+
4
+ Usage: cowsay "Hello World"
5
+ echo "Hello" | cowsay
6
+ cowsay -l # list all animals
7
+ cowsay -f tux "Hello" # use tux (penguin)
8
+
9
+ Supports multiple animals: cow, tux, dragon, bunny, cheese, daemon
10
+ Zero-dependency (stdlib only).
11
+ """
12
+
13
+ import sys
14
+
15
+ ANIMALS = {}
16
+
17
+ # Cow
18
+ ANIMALS['cow'] = r"""
19
+ \ ^__^
20
+ \ (oo)\_______
21
+ (__)\ )\/\
22
+ ||----w |
23
+ || ||
24
+ """
25
+
26
+ ANIMALS['tux'] = r"""
27
+ \
28
+ \
29
+ .--.
30
+ |o_o |
31
+ |:_/ |
32
+ // \ \
33
+ (| | )
34
+ /'\_ _/`\
35
+ \___)=(___/
36
+ """
37
+
38
+ ANIMALS['dragon'] = r"""
39
+ \ / \ //\
40
+ \ |\___/| / \// \
41
+ /0 0 \__ / // | \ \
42
+ / / \/_/ // | \ \
43
+ @_^_@'/ \/_ // | \ \
44
+ //_^_/ \/_ // | \ \
45
+ ( //) | \/// | \ \
46
+ ( / /) _|_ / ) // | \ _\
47
+ ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-.
48
+ (( / / )) ,-{ _ `-.|.-~-. .~ `.
49
+ (( // / )) '/\ / ~-. _ .-~ .-~^-. \
50
+ (( /// )) `. { } / \ \
51
+ (( / )) .----~-.\ \-' .~ \ `. \^-.
52
+ ///.----..> \ _ -~ `. ^-` ^-_
53
+ ///-._ _ _ _ _ _ _}^ - - - -~ `-~ _-~^
54
+ """
55
+
56
+ ANIMALS['bunny'] = r"""
57
+ \ (
58
+ \ )
59
+ __(
60
+ / |
61
+ / /|
62
+ / / |
63
+ ( ( |
64
+ \ \ |
65
+ \ \|
66
+ \ \
67
+ \ \
68
+ \ \_
69
+ \__,_)
70
+ """
71
+
72
+ ANIMALS['cheese'] = r"""
73
+ \
74
+ \ ╔═══════════════╗
75
+ ║ (•_•) ║
76
+ ║ <) )╯ ║
77
+ ║ / \ ║
78
+ ╚═══════════════╝
79
+ """
80
+
81
+ ANIMALS['daemon'] = r"""
82
+ \
83
+ \
84
+ \/\/
85
+ |\/
86
+ /\
87
+ / _\
88
+ / / \
89
+ /_/ \__
90
+ \_\ /_/
91
+ \_\ /_/
92
+ \/_\/_/
93
+ \/_/
94
+ """
95
+
96
+
97
+ def make_speech(text, animal='cow'):
98
+ lines = text.split('\n')
99
+ max_len = max(len(l) for l in lines) if lines else 0
100
+ width = min(max_len + 2, 60)
101
+
102
+ if len(lines) == 1:
103
+ speech = f"< {text} >"
104
+ else:
105
+ speech = []
106
+ speech.append(f" {'_' * width}")
107
+ for i, line in enumerate(lines):
108
+ if i == 0:
109
+ speech.append(f"/ {' ' * (width - 2)} \\" if max_len < width else f"/ {line:<{width-2}} \\")
110
+ elif i == len(lines) - 1:
111
+ speech.append(f"\\ {line:<{width-2}} /")
112
+ else:
113
+ speech.append(f"| {line:<{width-2}} |")
114
+ speech.append(f" -{'-' * width}")
115
+ speech = '\n'.join(speech)
116
+
117
+ art = ANIMALS.get(animal, ANIMALS['cow'])
118
+ return f"{speech}\n{art}"
119
+
120
+
121
+ def main():
122
+ args = sys.argv[1:]
123
+ animal = 'cow'
124
+
125
+ filtered = []
126
+ i = 0
127
+ while i < len(args):
128
+ if args[i] == '-f' and i + 1 < len(args):
129
+ animal = args[i + 1].lower()
130
+ i += 2
131
+ elif args[i] == '-l':
132
+ print("Available animals:", ', '.join(sorted(ANIMALS.keys())))
133
+ return
134
+ elif args[i] in ('-h', '--help'):
135
+ print(__doc__)
136
+ return
137
+ else:
138
+ filtered.append(args[i])
139
+ i += 1
140
+
141
+ if filtered:
142
+ text = ' '.join(filtered)
143
+ elif not sys.stdin.isatty():
144
+ text = sys.stdin.read().strip()
145
+ else:
146
+ print("Usage: cowsay <text> or echo <text> | cowsay [-f animal]")
147
+ print(" cowsay -l (list animals)")
148
+ return
149
+
150
+ if animal not in ANIMALS:
151
+ print(f"Unknown animal: {animal}. Use -l to list.", file=sys.stderr)
152
+ sys.exit(1)
153
+
154
+ print(make_speech(text, animal))
155
+
156
+
157
+ # === Auto-registration metadata ===
158
+ TOOL_META = {
159
+ "name": "cowsay",
160
+ "func": "main",
161
+ "desc": 'ASCII cow saying text (cow/tux/dragon/bunny)',
162
+ }
163
+
164
+ if __name__ == '__main__':
165
+ main()
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env python3
2
+ """factor — Prime factorization of integers.
3
+
4
+ Usage: factor 123
5
+ factor 12 15 21
6
+ echo "100" | factor
7
+
8
+ Like standard Unix 'factor' command.
9
+ Zero-dependency (stdlib only).
10
+ """
11
+
12
+ import sys
13
+ import math
14
+
15
+
16
+ def factorize(n):
17
+ """Return list of prime factors for n."""
18
+ n = int(n)
19
+ if n < 2:
20
+ return []
21
+ factors = []
22
+ d = 2
23
+ while d * d <= n:
24
+ while n % d == 0:
25
+ factors.append(d)
26
+ n //= d
27
+ d += 1 if d == 2 else 2 # skip evens after 2
28
+ if n > 1:
29
+ factors.append(n)
30
+ return factors
31
+
32
+
33
+ def main():
34
+ args = sys.argv[1:]
35
+
36
+ if '-h' in args or '--help' in args:
37
+ print(__doc__)
38
+ return
39
+
40
+ numbers = []
41
+
42
+ if args:
43
+ for a in args:
44
+ try:
45
+ numbers.append(int(a))
46
+ except ValueError:
47
+ pass
48
+ elif not sys.stdin.isatty():
49
+ data = sys.stdin.read().strip()
50
+ for token in data.split():
51
+ try:
52
+ numbers.append(int(token))
53
+ except ValueError:
54
+ pass
55
+
56
+ if not numbers:
57
+ print("Usage: factor <number> [number...]")
58
+ print(" echo <number> | factor")
59
+ return
60
+
61
+ for n in numbers:
62
+ if n < 2:
63
+ print(f"{n}: {n}")
64
+ else:
65
+ factors = factorize(n)
66
+ if len(factors) == 1:
67
+ print(f"{n}: {n}")
68
+ else:
69
+ print(f"{n}: {' '.join(str(f) for f in factors)}")
70
+
71
+
72
+ # === Auto-registration metadata ===
73
+ TOOL_META = {
74
+ "name": "factor",
75
+ "func": "main",
76
+ "desc": 'Prime factorization of integers',
77
+ }
78
+
79
+ if __name__ == '__main__':
80
+ main()
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env python3
2
+ """nl — Number lines of files or stdin.
3
+
4
+ Usage: nl <file>
5
+ cat <file> | nl [-ba] # -a=number all, -b=number non-empty
6
+ nl -s '. ' input.txt # custom separator
7
+
8
+ Like standard Unix 'nl' command.
9
+ Zero-dependency (stdlib only).
10
+ """
11
+
12
+ import sys
13
+
14
+
15
+ def main():
16
+ args = sys.argv[1:]
17
+ style = 't' # t = non-empty only, a = all, n = none
18
+ separator = ' '
19
+ start_num = 1
20
+
21
+ filtered = []
22
+ i = 0
23
+ while i < len(args):
24
+ if args[i] == '-ba':
25
+ style = 'a'
26
+ i += 1
27
+ elif args[i] == '-bt':
28
+ style = 't'
29
+ i += 1
30
+ elif args[i] == '-bn':
31
+ style = 'n'
32
+ i += 1
33
+ elif args[i] == '-s' and i + 1 < len(args):
34
+ separator = args[i + 1]
35
+ i += 2
36
+ elif args[i].startswith('-s'):
37
+ separator = args[i][2:]
38
+ i += 1
39
+ elif args[i] == '-v' and i + 1 < len(args):
40
+ start_num = int(args[i + 1])
41
+ i += 2
42
+ elif args[i] in ('-h', '--help'):
43
+ print(__doc__)
44
+ return
45
+ else:
46
+ filtered.append(args[i])
47
+ i += 1
48
+
49
+ if filtered:
50
+ for path in filtered:
51
+ try:
52
+ with open(path) as f:
53
+ lines = f.readlines()
54
+ except FileNotFoundError:
55
+ print(f"Error: file not found: {path}", file=sys.stderr)
56
+ continue
57
+ lineno = start_num
58
+ for line in lines:
59
+ numbered = False
60
+ if style == 'a' or (style == 't' and line.strip()):
61
+ print(f'{lineno:>6}{separator}{line}', end='')
62
+ lineno += 1
63
+ numbered = True
64
+ if not numbered:
65
+ print(f' {separator}{line}', end='')
66
+ elif not sys.stdin.isatty():
67
+ lines = sys.stdin.readlines()
68
+ lineno = start_num
69
+ for line in lines:
70
+ numbered = False
71
+ if style == 'a' or (style == 't' and line.strip()):
72
+ print(f'{lineno:>6}{separator}{line}', end='')
73
+ lineno += 1
74
+ numbered = True
75
+ if not numbered:
76
+ print(f' {separator}{line}', end='')
77
+ else:
78
+ print("Usage: nl <file> or cat <file> | nl")
79
+ return
80
+
81
+
82
+ # === Auto-registration metadata ===
83
+ TOOL_META = {
84
+ "name": "nl",
85
+ "func": "main",
86
+ "desc": 'Number lines of files or stdin',
87
+ }
88
+
89
+ if __name__ == '__main__':
90
+ main()
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env python3
2
+ """timeout — Run command with timeout limit.
3
+
4
+ Usage: timeout <seconds> <command> [args...]
5
+ timeout -s KILL 5 ping google.com
6
+
7
+ Runs a command and kills it if it exceeds the time limit.
8
+ Zero-dependency (stdlib only).
9
+ """
10
+
11
+ import sys
12
+ import subprocess
13
+ import signal
14
+ import time
15
+
16
+
17
+ def main():
18
+ args = sys.argv[1:]
19
+ if not args or '-h' in args or '--help' in args:
20
+ print(__doc__)
21
+ return
22
+
23
+ kill_signal = signal.SIGTERM
24
+ if args[0] == '-s' and len(args) > 1:
25
+ sig_name = args[1].upper()
26
+ kill_signal = getattr(signal, f'SIG{sig_name}', signal.SIGTERM)
27
+ args = args[2:]
28
+ elif args[0].startswith('-s') and len(args[0]) > 2:
29
+ sig_name = args[0][2:].upper()
30
+ kill_signal = getattr(signal, f'SIG{sig_name}', signal.SIGTERM)
31
+ args = args[1:]
32
+
33
+ if len(args) < 2:
34
+ print("Usage: timeout <seconds> <command> [args...]")
35
+ sys.exit(1)
36
+
37
+ try:
38
+ limit = float(args[0])
39
+ except ValueError:
40
+ print(f"Error: invalid timeout: {args[0]}", file=sys.stderr)
41
+ sys.exit(1)
42
+
43
+ cmd = args[1:]
44
+
45
+ proc = subprocess.Popen(cmd, stdout=sys.stdout, stderr=sys.stderr)
46
+ start = time.time()
47
+
48
+ try:
49
+ proc.wait(timeout=limit)
50
+ except subprocess.TimeoutExpired:
51
+ proc.send_signal(kill_signal)
52
+ elapsed = time.time() - start
53
+ print(f"\n[timeout: command timed out after {elapsed:.1f}s]", file=sys.stderr)
54
+ sys.exit(124)
55
+ except KeyboardInterrupt:
56
+ proc.send_signal(signal.SIGTERM)
57
+ sys.exit(1)
58
+
59
+
60
+ # === Auto-registration metadata ===
61
+ TOOL_META = {
62
+ "name": "timeout",
63
+ "func": "main",
64
+ "desc": 'Run command with timeout limit',
65
+ }
66
+
67
+ if __name__ == '__main__':
68
+ main()
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env python3
2
+ """yes — Output a string repeatedly until killed.
3
+
4
+ Usage: yes
5
+ yes "hello world"
6
+ yes | command
7
+
8
+ Like standard Unix 'yes' command.
9
+ Zero-dependency (stdlib only).
10
+ """
11
+
12
+ import sys
13
+
14
+
15
+ def main():
16
+ args = sys.argv[1:]
17
+
18
+ if '-h' in args or '--help' in args:
19
+ print(__doc__)
20
+ return
21
+
22
+ text = ' '.join(args) if args else 'y'
23
+
24
+ try:
25
+ while True:
26
+ print(text)
27
+ except (KeyboardInterrupt, BrokenPipeError):
28
+ pass
29
+
30
+
31
+ # === Auto-registration metadata ===
32
+ TOOL_META = {
33
+ "name": "yes",
34
+ "func": "main",
35
+ "desc": 'Output a string repeatedly until killed',
36
+ }
37
+
38
+ if __name__ == '__main__':
39
+ main()
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolver-tools
3
- Version: 18.0.0
4
- Summary: 176 CLI tools + 9 flagship projects — one pip install
3
+ Version: 19.0.0
4
+ Summary: 181 CLI tools + 9 flagship projects — one pip install
5
5
  Author: EVOLVER
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://evolver-dev.github.io/evolver-tools
@@ -30,6 +30,7 @@ src/evolver_tools/vendor/code_stats.py
30
30
  src/evolver_tools/vendor/colorize.py
31
31
  src/evolver_tools/vendor/config_validator.py
32
32
  src/evolver_tools/vendor/config_vault.py
33
+ src/evolver_tools/vendor/cowsay.py
33
34
  src/evolver_tools/vendor/cron_pretty.py
34
35
  src/evolver_tools/vendor/crontab_helper.py
35
36
  src/evolver_tools/vendor/crypto_box.py
@@ -51,6 +52,7 @@ src/evolver_tools/vendor/env_diff.py
51
52
  src/evolver_tools/vendor/env_manager.py
52
53
  src/evolver_tools/vendor/epoch.py
53
54
  src/evolver_tools/vendor/excel2csv.py
55
+ src/evolver_tools/vendor/factor.py
54
56
  src/evolver_tools/vendor/figlet_cli.py
55
57
  src/evolver_tools/vendor/figlet_tool.py
56
58
  src/evolver_tools/vendor/file_encrypt.py
@@ -89,6 +91,7 @@ src/evolver_tools/vendor/morse.py
89
91
  src/evolver_tools/vendor/net_analyzer.py
90
92
  src/evolver_tools/vendor/net_speed.py
91
93
  src/evolver_tools/vendor/network_scan.py
94
+ src/evolver_tools/vendor/nl.py
92
95
  src/evolver_tools/vendor/note_taker.py
93
96
  src/evolver_tools/vendor/otp_gen.py
94
97
  src/evolver_tools/vendor/password_strength.py
@@ -130,6 +133,7 @@ src/evolver_tools/vendor/system_info.py
130
133
  src/evolver_tools/vendor/temp_cleaner.py
131
134
  src/evolver_tools/vendor/template.py
132
135
  src/evolver_tools/vendor/text_stats.py
136
+ src/evolver_tools/vendor/timeout.py
133
137
  src/evolver_tools/vendor/timer_pro.py
134
138
  src/evolver_tools/vendor/todo_cli.py
135
139
  src/evolver_tools/vendor/toml2json.py
@@ -143,6 +147,7 @@ src/evolver_tools/vendor/whois_lookup.py
143
147
  src/evolver_tools/vendor/xml2json.py
144
148
  src/evolver_tools/vendor/yaml2toml.py
145
149
  src/evolver_tools/vendor/yaml_validate.py
150
+ src/evolver_tools/vendor/yes.py
146
151
  src/evolver_tools/vendor/b64/__init__.py
147
152
  src/evolver_tools/vendor/b64/b64.py
148
153
  src/evolver_tools/vendor/banner/__init__.py
File without changes
File without changes
File without changes