evolver-tools 2.5.0__tar.gz → 3.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 (201) hide show
  1. {evolver_tools-2.5.0/src/evolver_tools.egg-info → evolver_tools-3.1.0}/PKG-INFO +2 -2
  2. evolver_tools-3.1.0/pyproject.toml +36 -0
  3. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/__init__.py +2 -0
  4. evolver_tools-3.1.0/src/evolver_tools/autoreg.py +88 -0
  5. evolver_tools-3.1.0/src/evolver_tools/cli.py +66 -0
  6. evolver_tools-3.1.0/src/evolver_tools/vendor/agent_b_tool.py +9 -0
  7. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/api_tester.py +8 -0
  8. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ascii_gen.py +8 -0
  9. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/audit_log.py +8 -0
  10. evolver_tools-3.1.0/src/evolver_tools/vendor/b64/__init__.py +9 -0
  11. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/backup.py +8 -0
  12. evolver_tools-3.1.0/src/evolver_tools/vendor/banner/__init__.py +9 -0
  13. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/banner.py +2 -0
  14. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/bookmark.py +8 -0
  15. evolver_tools-3.1.0/src/evolver_tools/vendor/cal_tool/__init__.py +9 -0
  16. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/cal_tool/cli.py +8 -0
  17. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/cert_check.py +8 -0
  18. evolver_tools-3.1.0/src/evolver_tools/vendor/changelog_gen/__init__.py +9 -0
  19. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/changelog_gen.py +2 -0
  20. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/chart_cli/__init__.py +8 -0
  21. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/checksum_dir.py +8 -0
  22. evolver_tools-3.1.0/src/evolver_tools/vendor/clipboard/__init__.py +9 -0
  23. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/colorize.py +8 -0
  24. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/colors/__init__.py +7 -0
  25. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/config_validator.py +8 -0
  26. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/cron/__init__.py +8 -0
  27. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/crontab_helper.py +8 -0
  28. evolver_tools-3.1.0/src/evolver_tools/vendor/crypto_price.py +108 -0
  29. evolver_tools-3.1.0/src/evolver_tools/vendor/csv_stats/__init__.py +13 -0
  30. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/csv_stats/cli.py +8 -0
  31. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/db_schema.py +8 -0
  32. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/dep_graph.py +8 -0
  33. evolver_tools-3.1.0/src/evolver_tools/vendor/dice_roll.py +99 -0
  34. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/diff_csv.py +8 -0
  35. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/diff_tool/__init__.py +7 -0
  36. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/dirsize/__init__.py +8 -0
  37. evolver_tools-3.1.0/src/evolver_tools/vendor/disk_usage/__init__.py +9 -0
  38. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/dt_convert.py +8 -0
  39. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/env_manager.py +8 -0
  40. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/envcheck/__init__.py +8 -0
  41. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/excel2csv.py +8 -0
  42. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ff/__init__.py +8 -0
  43. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/figlet_cli.py +8 -0
  44. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/figlet_tool.py +8 -0
  45. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/file_encrypt.py +8 -0
  46. evolver_tools-3.1.0/src/evolver_tools/vendor/find_dups/__init__.py +15 -0
  47. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/find_dups/cli.py +8 -0
  48. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/firewall_rule.py +8 -0
  49. evolver_tools-3.1.0/src/evolver_tools/vendor/fmt/__init__.py +9 -0
  50. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/git_branch_cleaner.py +8 -0
  51. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/hashsum/__init__.py +8 -0
  52. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/html2markdown.py +8 -0
  53. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/html2md.py +8 -0
  54. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/http_live/__init__.py +8 -0
  55. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/image_meta.py +8 -0
  56. evolver_tools-3.1.0/src/evolver_tools/vendor/ini_parser/__init__.py +9 -0
  57. evolver_tools-3.1.0/src/evolver_tools/vendor/ip_location.py +108 -0
  58. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ipcalc/__init__.py +8 -0
  59. evolver_tools-3.1.0/src/evolver_tools/vendor/ipinfo/__init__.py +10 -0
  60. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/join.py +8 -0
  61. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/joke.py +8 -0
  62. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/jq_lite/__init__.py +8 -0
  63. evolver_tools-3.1.0/src/evolver_tools/vendor/json2csv/__init__.py +10 -0
  64. evolver_tools-3.1.0/src/evolver_tools/vendor/json_pretty/__init__.py +9 -0
  65. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/jsonql/__init__.py +8 -0
  66. evolver_tools-3.1.0/src/evolver_tools/vendor/license_cli/__init__.py +9 -0
  67. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/license_cli/cli.py +8 -0
  68. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/log_analyzer.py +8 -0
  69. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/log_tail.py +8 -0
  70. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/markdown_check/__init__.py +8 -0
  71. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/morse.py +8 -0
  72. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/nb/__init__.py +8 -0
  73. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/net_speed.py +8 -0
  74. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/note_taker.py +8 -0
  75. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/otp_gen.py +8 -0
  76. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/passgen/__init__.py +8 -0
  77. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/password_strength.py +8 -0
  78. evolver_tools-3.1.0/src/evolver_tools/vendor/portcheck/__init__.py +10 -0
  79. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/portcheck/__main__.py +8 -0
  80. evolver_tools-3.1.0/src/evolver_tools/vendor/pr_tool/__init__.py +9 -0
  81. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/process_kill.py +8 -0
  82. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/progress_bar.py +8 -0
  83. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/project_doctor/__init__.py +8 -0
  84. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/qrcode.py +8 -0
  85. evolver_tools-3.1.0/src/evolver_tools/vendor/quote_tool/__init__.py +9 -0
  86. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/rainbow.py +8 -0
  87. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/reminder.py +8 -0
  88. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ren/__init__.py +8 -0
  89. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/restore.py +8 -0
  90. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/scan_ports.py +8 -0
  91. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/service_check.py +8 -0
  92. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/shuffle.py +8 -0
  93. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/siege_lite/__init__.py +8 -0
  94. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/smellfinder/__init__.py +8 -0
  95. evolver_tools-3.1.0/src/evolver_tools/vendor/sort/__init__.py +9 -0
  96. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/spinner.py +8 -0
  97. evolver_tools-3.1.0/src/evolver_tools/vendor/split_tool/__init__.py +9 -0
  98. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sql2csv.py +8 -0
  99. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sqlite_cli/__init__.py +8 -0
  100. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ssh_key_gen.py +8 -0
  101. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ssl_check.py +8 -0
  102. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/stopwatch.py +8 -0
  103. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sysmon/__init__.py +8 -0
  104. evolver_tools-3.1.0/src/evolver_tools/vendor/text_stats.py +119 -0
  105. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/timer/__init__.py +8 -0
  106. evolver_tools-3.1.0/src/evolver_tools/vendor/timer_pro/__init__.py +9 -0
  107. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/timer_pro.py +2 -0
  108. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/todo_cli.py +8 -0
  109. evolver_tools-3.1.0/src/evolver_tools/vendor/treedir/__init__.py +10 -0
  110. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/treedir/__main__.py +8 -0
  111. evolver_tools-3.1.0/src/evolver_tools/vendor/uniq_tool/__init__.py +9 -0
  112. evolver_tools-3.1.0/src/evolver_tools/vendor/unit_convert.py +137 -0
  113. evolver_tools-3.1.0/src/evolver_tools/vendor/urlparse_tool/__init__.py +11 -0
  114. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/urlparse_tool/cli.py +8 -0
  115. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/uuid_tool/__init__.py +8 -0
  116. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/weather_cli.py +8 -0
  117. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/web_summary/__init__.py +8 -0
  118. evolver_tools-3.1.0/src/evolver_tools/vendor/wordcount/__init__.py +10 -0
  119. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/wordcount/__main__.py +8 -0
  120. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/xml2json.py +8 -0
  121. evolver_tools-3.1.0/src/evolver_tools/vendor/yaml2json/__init__.py +9 -0
  122. {evolver_tools-2.5.0 → evolver_tools-3.1.0/src/evolver_tools.egg-info}/PKG-INFO +2 -2
  123. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools.egg-info/SOURCES.txt +5 -0
  124. evolver_tools-3.1.0/src/evolver_tools.egg-info/entry_points.txt +2 -0
  125. evolver_tools-2.5.0/pyproject.toml +0 -134
  126. evolver_tools-2.5.0/src/evolver_tools/autoreg.py +0 -150
  127. evolver_tools-2.5.0/src/evolver_tools/cli.py +0 -156
  128. evolver_tools-2.5.0/src/evolver_tools/vendor/agent_b_tool.py +0 -2
  129. evolver_tools-2.5.0/src/evolver_tools/vendor/b64/__init__.py +0 -2
  130. evolver_tools-2.5.0/src/evolver_tools/vendor/banner/__init__.py +0 -2
  131. evolver_tools-2.5.0/src/evolver_tools/vendor/cal_tool/__init__.py +0 -1
  132. evolver_tools-2.5.0/src/evolver_tools/vendor/changelog_gen/__init__.py +0 -2
  133. evolver_tools-2.5.0/src/evolver_tools/vendor/clipboard/__init__.py +0 -2
  134. evolver_tools-2.5.0/src/evolver_tools/vendor/csv_stats/__init__.py +0 -5
  135. evolver_tools-2.5.0/src/evolver_tools/vendor/disk_usage/__init__.py +0 -2
  136. evolver_tools-2.5.0/src/evolver_tools/vendor/find_dups/__init__.py +0 -7
  137. evolver_tools-2.5.0/src/evolver_tools/vendor/fmt/__init__.py +0 -2
  138. evolver_tools-2.5.0/src/evolver_tools/vendor/ini_parser/__init__.py +0 -2
  139. evolver_tools-2.5.0/src/evolver_tools/vendor/ipinfo/__init__.py +0 -3
  140. evolver_tools-2.5.0/src/evolver_tools/vendor/json2csv/__init__.py +0 -3
  141. evolver_tools-2.5.0/src/evolver_tools/vendor/json_pretty/__init__.py +0 -2
  142. evolver_tools-2.5.0/src/evolver_tools/vendor/license_cli/__init__.py +0 -1
  143. evolver_tools-2.5.0/src/evolver_tools/vendor/portcheck/__init__.py +0 -2
  144. evolver_tools-2.5.0/src/evolver_tools/vendor/pr_tool/__init__.py +0 -2
  145. evolver_tools-2.5.0/src/evolver_tools/vendor/quote_tool/__init__.py +0 -2
  146. evolver_tools-2.5.0/src/evolver_tools/vendor/sort/__init__.py +0 -2
  147. evolver_tools-2.5.0/src/evolver_tools/vendor/split_tool/__init__.py +0 -2
  148. evolver_tools-2.5.0/src/evolver_tools/vendor/timer_pro/__init__.py +0 -2
  149. evolver_tools-2.5.0/src/evolver_tools/vendor/treedir/__init__.py +0 -2
  150. evolver_tools-2.5.0/src/evolver_tools/vendor/uniq_tool/__init__.py +0 -2
  151. evolver_tools-2.5.0/src/evolver_tools/vendor/urlparse_tool/__init__.py +0 -3
  152. evolver_tools-2.5.0/src/evolver_tools/vendor/wordcount/__init__.py +0 -2
  153. evolver_tools-2.5.0/src/evolver_tools/vendor/yaml2json/__init__.py +0 -2
  154. evolver_tools-2.5.0/src/evolver_tools.egg-info/entry_points.txt +0 -100
  155. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/LICENSE +0 -0
  156. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/README.md +0 -0
  157. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/setup.cfg +0 -0
  158. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/__main__.py +0 -0
  159. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/__init__.py +0 -0
  160. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/b64/b64.py +0 -0
  161. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/banner/banner.py +0 -0
  162. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/changelog_gen/changelog_gen.py +0 -0
  163. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/chart_cli/__main__.py +0 -0
  164. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/clipboard/clipboard.py +0 -0
  165. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/colors/__main__.py +0 -0
  166. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/cron/__main__.py +0 -0
  167. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/csv_stats/__main__.py +0 -0
  168. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/csv_stats/analyzer.py +0 -0
  169. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/diff_tool/__main__.py +0 -0
  170. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/disk_usage/disk_usage.py +0 -0
  171. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ff/__main__.py +0 -0
  172. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/fmt/fmt.py +0 -0
  173. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/hashsum/__main__.py +0 -0
  174. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/http_live/__main__.py +0 -0
  175. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ini_parser/ini_parser.py +0 -0
  176. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ipcalc/__main__.py +0 -0
  177. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ipinfo/__main__.py +0 -0
  178. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/jq_lite/__main__.py +0 -0
  179. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/json2csv/__main__.py +0 -0
  180. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/json_pretty/json_pretty.py +0 -0
  181. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/jsonql/__main__.py +0 -0
  182. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/license_cli/__main__.py +0 -0
  183. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/nb/__main__.py +0 -0
  184. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/pr_tool/pr_tool.py +0 -0
  185. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/project_doctor/__main__.py +0 -0
  186. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/quote_tool/quote.py +0 -0
  187. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ren/__main__.py +0 -0
  188. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/siege_lite/__main__.py +0 -0
  189. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/smellfinder/__main__.py +0 -0
  190. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sort/sort.py +0 -0
  191. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/split.py +0 -0
  192. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/split_tool/split.py +0 -0
  193. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sqlite_cli/__main__.py +0 -0
  194. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sysmon/__main__.py +0 -0
  195. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/timer_pro/timer_pro.py +0 -0
  196. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/uniq_tool/uniq.py +0 -0
  197. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/uuid_tool/__main__.py +0 -0
  198. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/web_summary/__main__.py +0 -0
  199. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/yaml2json/yaml2json.py +0 -0
  200. {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools.egg-info/dependency_links.txt +0 -0
  201. {evolver_tools-2.5.0 → evolver_tools-3.1.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: 2.5.0
4
- Summary: 99 essential CLI tools - one pip install
3
+ Version: 3.1.0
4
+ Summary: 105 essential CLI tools - one pip install
5
5
  Author: EVOLVER
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://evolver-dev.github.io/evolver-tools
@@ -0,0 +1,36 @@
1
+ [build-system]
2
+ requires = ["setuptools>=64.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "evolver-tools"
7
+ version = "3.1.0"
8
+ description = "105 essential CLI tools - one pip install"
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ requires-python = ">=3.8"
12
+ keywords = ["cli", "devops", "productivity", "developer-tools", "terminal"]
13
+ authors = [
14
+ {name = "EVOLVER"},
15
+ ]
16
+ classifiers = [
17
+ "Development Status :: 5 - Production/Stable",
18
+ "Environment :: Console",
19
+ "Intended Audience :: Developers",
20
+ "Intended Audience :: System Administrators",
21
+ "Operating System :: OS Independent",
22
+ "Programming Language :: Python :: 3",
23
+ "Programming Language :: Python :: 3 :: Only",
24
+ "Topic :: Utilities",
25
+ ]
26
+
27
+ [project.urls]
28
+ Homepage = "https://evolver-dev.github.io/evolver-tools"
29
+ Repository = "https://github.com/evolver-dev/evolver-tools"
30
+
31
+ [project.scripts]
32
+ evtool = "evolver_tools.cli:main"
33
+
34
+ [tool.setuptools.packages.find]
35
+ where = ["src"]
36
+ include = ["evolver_tools*"]
@@ -1,2 +1,4 @@
1
1
  """evolver-tools: 23 CLI tools in one package."""
2
2
  __version__ = "1.0.0"
3
+
4
+ from .autoreg import auto_discover
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env python3
2
+ """Auto-discovery module for EVOLVER tools.
3
+
4
+ Scans all vendor modules for TOOL_META exports and returns them
5
+ as a unified registry. Enables parallel agent workflows: each vendor
6
+ tool defines its own TOOL_META, eliminating merge conflicts on cli.py.
7
+
8
+ Usage:
9
+ from evolver_tools.autoreg import auto_discover
10
+ tools = auto_discover() # Returns dict[str, dict]
11
+ """
12
+
13
+ import importlib
14
+ import os
15
+ import pkgutil
16
+
17
+ # Cache after first discovery
18
+ _TOOLS_CACHE = None
19
+
20
+
21
+ def _vendor_dir():
22
+ """Return the absolute path to the vendor directory."""
23
+ # vendor is a namespace package (no __init__.py), so __file__ is None
24
+ # Walk up from autoreg.py location
25
+ here = os.path.dirname(os.path.abspath(__file__))
26
+ return os.path.join(here, "vendor")
27
+
28
+
29
+ def auto_discover():
30
+ """Scan all vendor modules and return a unified TOOLS dict.
31
+
32
+ Each vendor module (file or package) that exports TOOL_META dict
33
+ is discovered automatically. No manual registration needed.
34
+
35
+ Returns:
36
+ dict[str, dict]: Tool name -> {module, func, desc}
37
+ """
38
+ global _TOOLS_CACHE
39
+ if _TOOLS_CACHE is not None:
40
+ return _TOOLS_CACHE
41
+
42
+ tools = {}
43
+ vendor_dir = _vendor_dir()
44
+
45
+ for importer, modname, ispkg in pkgutil.iter_modules([vendor_dir]):
46
+ try:
47
+ mod = importlib.import_module(f"evolver_tools.vendor.{modname}")
48
+ except Exception:
49
+ continue
50
+
51
+ meta = getattr(mod, "TOOL_META", None)
52
+ if meta is None:
53
+ continue
54
+
55
+ tool_name = meta.get("name")
56
+ if not tool_name:
57
+ continue
58
+
59
+ func_name = meta.get("func", "main")
60
+ desc = meta.get("desc", "")
61
+
62
+ # If the package has a submodule (e.g. cal_tool/cli.py), use that
63
+ submodule = meta.get("submodule", "")
64
+ if submodule:
65
+ module_path = f"evolver_tools.vendor.{modname}.{submodule}"
66
+ else:
67
+ module_path = f"evolver_tools.vendor.{modname}"
68
+
69
+ tools[tool_name] = {
70
+ "module": module_path,
71
+ "func": func_name,
72
+ "desc": desc,
73
+ }
74
+
75
+ _TOOLS_CACHE = tools
76
+ return tools
77
+
78
+
79
+ def list_tools():
80
+ """Print all discovered tools to stdout."""
81
+ tools = auto_discover()
82
+ print(f"Discovered {len(tools)} tools:")
83
+ for name in sorted(tools.keys()):
84
+ print(f" - {name}")
85
+
86
+
87
+ if __name__ == "__main__":
88
+ list_tools()
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env python3
2
+ """evolver CLI - Unified interface for all EVOLVER tools.
3
+
4
+ Tools are auto-discovered via TOOL_META in each vendor module.
5
+ No manual registration needed — just add TOOL_META to your vendor file.
6
+ """
7
+
8
+ import sys
9
+ import importlib
10
+
11
+ from evolver_tools.autoreg import auto_discover
12
+
13
+
14
+ def list_tools():
15
+ """Display all available tools."""
16
+ tools = auto_discover()
17
+ print(f'\x1b[1;36m===== EVOLVER Tools v3.1.0 =====\x1b[0m')
18
+ print()
19
+ for name, info in sorted(tools.items()):
20
+ print(f' \033[1;33m{name:<18}\033[0m {info["desc"]}')
21
+ print()
22
+ print(f' Total: {len(tools)} tools')
23
+ print()
24
+ print('Usage: evolver <toolname> [args...]')
25
+ print(' evolver list')
26
+
27
+
28
+ def run_tool(tool_name, args):
29
+ tools = auto_discover()
30
+ if tool_name not in tools:
31
+ print(f'Unknown tool: {tool_name}')
32
+ sys.exit(1)
33
+ info = tools[tool_name]
34
+ mod_path = info["module"]
35
+ func_name = info["func"]
36
+ old_argv = sys.argv
37
+ sys.argv = [tool_name] + args
38
+ try:
39
+ mod = importlib.import_module(mod_path)
40
+ func = getattr(mod, func_name)
41
+ result = func()
42
+ if result is not None:
43
+ print(result)
44
+ except KeyboardInterrupt:
45
+ pass
46
+ except Exception as e:
47
+ print(f'Error running {tool_name}: {e}', file=sys.stderr)
48
+ sys.exit(1)
49
+ finally:
50
+ sys.argv = old_argv
51
+
52
+
53
+ def main():
54
+ if len(sys.argv) < 2 or sys.argv[1] in ("-h", "--help"):
55
+ list_tools()
56
+ return
57
+ tool_name = sys.argv[1]
58
+ args = sys.argv[2:]
59
+ if tool_name == "list":
60
+ list_tools()
61
+ return
62
+ run_tool(tool_name, args)
63
+
64
+
65
+ if __name__ == "__main__":
66
+ main()
@@ -0,0 +1,9 @@
1
+ def main():
2
+ print('agent b')
3
+
4
+ # === Auto-registration metadata ===
5
+ TOOL_META = {
6
+ "name": "agent-b-tool",
7
+ "func": "main",
8
+ "desc": 'Agent B tool',
9
+ }
@@ -225,5 +225,13 @@ Examples:
225
225
  sys.exit(1)
226
226
 
227
227
 
228
+
229
+ # === Auto-registration metadata ===
230
+ TOOL_META = {
231
+ "name": "api-tester",
232
+ "func": "main",
233
+ "desc": 'HTTP API testing tool',
234
+ }
235
+
228
236
  if __name__ == '__main__':
229
237
  main()
@@ -138,5 +138,13 @@ def main():
138
138
  STYLES[style](text)
139
139
  print(result)
140
140
 
141
+
142
+ # === Auto-registration metadata ===
143
+ TOOL_META = {
144
+ "name": "ascii-gen",
145
+ "func": "main",
146
+ "desc": 'ASCII art generator (8 styles)',
147
+ }
148
+
141
149
  if __name__ == '__main__':
142
150
  main()
@@ -257,5 +257,13 @@ Examples:
257
257
  print(colorize_entry(entry))
258
258
 
259
259
 
260
+
261
+ # === Auto-registration metadata ===
262
+ TOOL_META = {
263
+ "name": "audit-log",
264
+ "func": "main",
265
+ "desc": 'Parse and filter system audit logs',
266
+ }
267
+
260
268
  if __name__ == '__main__':
261
269
  main()
@@ -0,0 +1,9 @@
1
+ # b64 package — re-export from single file
2
+ from .b64 import *
3
+
4
+ # === Auto-registration metadata ===
5
+ TOOL_META = {
6
+ "name": "b64",
7
+ "func": "main",
8
+ "desc": 'b64',
9
+ }
@@ -75,5 +75,13 @@ def main():
75
75
  except Exception as e:
76
76
  print(f" Error backing up {src}: {e}", file=sys.stderr)
77
77
 
78
+
79
+ # === Auto-registration metadata ===
80
+ TOOL_META = {
81
+ "name": "backup",
82
+ "func": "main",
83
+ "desc": 'File/dir backup with rotation',
84
+ }
85
+
78
86
  if __name__ == '__main__':
79
87
  main()
@@ -0,0 +1,9 @@
1
+ # banner package
2
+ from .banner import *
3
+
4
+ # === Auto-registration metadata ===
5
+ TOOL_META = {
6
+ "name": "banner-gen",
7
+ "func": "main",
8
+ "desc": 'ASCII banner generator (4 styles, colors)',
9
+ }
@@ -71,5 +71,7 @@ def main():
71
71
  for l in lines:
72
72
  print(l)
73
73
 
74
+
75
+
74
76
  if __name__ == '__main__':
75
77
  main()
@@ -272,5 +272,13 @@ def main():
272
272
  sys.exit(1)
273
273
 
274
274
 
275
+
276
+ # === Auto-registration metadata ===
277
+ TOOL_META = {
278
+ "name": "bookmark",
279
+ "func": "main",
280
+ "desc": 'CLI bookmark manager',
281
+ }
282
+
275
283
  if __name__ == '__main__':
276
284
  main()
@@ -0,0 +1,9 @@
1
+ __version__ = "1.0.0"
2
+
3
+ # === Auto-registration metadata ===
4
+ TOOL_META = {
5
+ "name": "cal",
6
+ "func": "main",
7
+ "desc": 'Cal',
8
+ "submodule": "cli",
9
+ }
@@ -230,5 +230,13 @@ def main():
230
230
  print_calendar(today.year, today.month, highlight_today=not args.no_highlight)
231
231
 
232
232
 
233
+
234
+ # === Auto-registration metadata ===
235
+ TOOL_META = {
236
+ "name": "cal",
237
+ "func": "main",
238
+ "desc": 'Cal',
239
+ }
240
+
233
241
  if __name__ == "__main__":
234
242
  main()
@@ -253,5 +253,13 @@ def main():
253
253
  sys.exit(1)
254
254
 
255
255
 
256
+
257
+ # === Auto-registration metadata ===
258
+ TOOL_META = {
259
+ "name": "cert-check",
260
+ "func": "main",
261
+ "desc": 'Check SSL certificate expiry',
262
+ }
263
+
256
264
  if __name__ == "__main__":
257
265
  main()
@@ -0,0 +1,9 @@
1
+ # changelog_gen package
2
+ from .changelog_gen import *
3
+
4
+ # === Auto-registration metadata ===
5
+ TOOL_META = {
6
+ "name": "changelog-gen",
7
+ "func": "main",
8
+ "desc": 'Generate changelog from git log',
9
+ }
@@ -73,5 +73,7 @@ def main():
73
73
  print(l)
74
74
  print()
75
75
 
76
+
77
+
76
78
  if __name__ == '__main__':
77
79
  main()
@@ -440,5 +440,13 @@ def main():
440
440
  print(draw_histogram_chart(data, 10, args.width))
441
441
 
442
442
 
443
+
444
+ # === Auto-registration metadata ===
445
+ TOOL_META = {
446
+ "name": "chart-cli",
447
+ "func": "main",
448
+ "desc": 'Chart CLI',
449
+ }
450
+
443
451
  if __name__ == '__main__':
444
452
  main()
@@ -297,5 +297,13 @@ def main():
297
297
  sys.exit(1)
298
298
 
299
299
 
300
+
301
+ # === Auto-registration metadata ===
302
+ TOOL_META = {
303
+ "name": "checksum-dir",
304
+ "func": "main",
305
+ "desc": 'Generate/verify directory checksums',
306
+ }
307
+
300
308
  if __name__ == "__main__":
301
309
  main()
@@ -0,0 +1,9 @@
1
+ # clipboard package — re-export
2
+ from .clipboard import *
3
+
4
+ # === Auto-registration metadata ===
5
+ TOOL_META = {
6
+ "name": "clipboard",
7
+ "func": "main",
8
+ "desc": 'Terminal clipboard copy/paste/clear',
9
+ }
@@ -188,5 +188,13 @@ def main():
188
188
  print(result)
189
189
 
190
190
 
191
+
192
+ # === Auto-registration metadata ===
193
+ TOOL_META = {
194
+ "name": "colorize",
195
+ "func": "main",
196
+ "desc": 'Terminal text colorizer',
197
+ }
198
+
191
199
  if __name__ == "__main__":
192
200
  main()
@@ -3,3 +3,10 @@ from evolver_tools.vendor.colors.__main__ import (
3
3
  )
4
4
 
5
5
  __all__ = ['hex_to_rgb', 'rgb_to_hex', 'hsl_to_rgb', 'show_256', 'show_basic', 'main']
6
+
7
+ # === Auto-registration metadata ===
8
+ TOOL_META = {
9
+ "name": "colors",
10
+ "func": "main",
11
+ "desc": 'Colors',
12
+ }
@@ -308,5 +308,13 @@ Examples:
308
308
  sys.exit(1)
309
309
 
310
310
 
311
+
312
+ # === Auto-registration metadata ===
313
+ TOOL_META = {
314
+ "name": "config-validator",
315
+ "func": "main",
316
+ "desc": 'Validate config files (JSON, YAML, TOML)',
317
+ }
318
+
311
319
  if __name__ == '__main__':
312
320
  main()
@@ -409,5 +409,13 @@ def main():
409
409
  print()
410
410
 
411
411
 
412
+
413
+ # === Auto-registration metadata ===
414
+ TOOL_META = {
415
+ "name": "cron",
416
+ "func": "main",
417
+ "desc": 'Cron expression parser',
418
+ }
419
+
412
420
  if __name__ == '__main__':
413
421
  main()
@@ -421,5 +421,13 @@ def main():
421
421
  sys.exit(1)
422
422
 
423
423
 
424
+
425
+ # === Auto-registration metadata ===
426
+ TOOL_META = {
427
+ "name": "crontab-helper",
428
+ "func": "main",
429
+ "desc": 'Simplify crontab management',
430
+ }
431
+
424
432
  if __name__ == "__main__":
425
433
  main()
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Cryptocurrency price ticker using CoinGecko free API.
4
+
5
+ Fetches real-time cryptocurrency prices in a specified fiat currency.
6
+ Uses only Python stdlib (urllib, json, sys) — zero external dependencies.
7
+
8
+ Usage:
9
+ python -m evolver_tools.vendor.crypto_price --coin bitcoin
10
+ python -m evolver_tools.vendor.crypto_price --coin ethereum --currency eur
11
+ python -m evolver_tools.vendor.crypto_price --list
12
+ """
13
+
14
+ import argparse
15
+ import json
16
+ import sys
17
+ import urllib.request
18
+ import urllib.error
19
+
20
+ TOOL_META = {
21
+ 'name': 'crypto-price',
22
+ 'func': 'main',
23
+ 'desc': 'Cryptocurrency price ticker (CoinGecko)',
24
+ }
25
+
26
+ COINGECKO_SIMPLE_URL = 'https://api.coingecko.com/api/v3/simple/price'
27
+ COINGECKO_LIST_URL = 'https://api.coingecko.com/api/v3/coins/list'
28
+
29
+
30
+ def _api_get(url: str) -> dict:
31
+ """Make a GET request to the CoinGecko API and return parsed JSON."""
32
+ req = urllib.request.Request(url, headers={'User-Agent': 'crypto-price/1.0'})
33
+ try:
34
+ with urllib.request.urlopen(req, timeout=15) as resp:
35
+ return json.loads(resp.read().decode('utf-8'))
36
+ except urllib.error.HTTPError as e:
37
+ msg = e.read().decode('utf-8', errors='replace') if e.fp else ''
38
+ print(f'HTTP error {e.code}: {msg}', file=sys.stderr)
39
+ sys.exit(1)
40
+ except urllib.error.URLError as e:
41
+ print(f'Network error: {e.reason}', file=sys.stderr)
42
+ sys.exit(1)
43
+ except (json.JSONDecodeError, OSError, ValueError) as e:
44
+ print(f'Error parsing response: {e}', file=sys.stderr)
45
+ sys.exit(1)
46
+
47
+
48
+ def list_coins() -> None:
49
+ """Fetch and display all available coins from CoinGecko."""
50
+ data = _api_get(COINGECKO_LIST_URL)
51
+ print(f'Total coins listed: {len(data)}\n')
52
+ # Show first 50 as a sample; user can filter with grep
53
+ for coin in data[:50]:
54
+ print(f'{coin["id"]:40s} {coin["symbol"]:10s} {coin["name"]}')
55
+ if len(data) > 50:
56
+ print(f'\n... and {len(data) - 50} more. Pipe through grep or use --coin <id>.')
57
+
58
+
59
+ def get_price(coin: str, currency: str) -> None:
60
+ """Fetch and display the price for a single coin."""
61
+ url = f'{COINGECKO_SIMPLE_URL}?ids={coin}&vs_currencies={currency}'
62
+ data = _api_get(url)
63
+ if coin not in data:
64
+ print(
65
+ f'Coin "{coin}" not found. Use --list to see available coins.',
66
+ file=sys.stderr,
67
+ )
68
+ sys.exit(1)
69
+ if currency not in data[coin]:
70
+ print(
71
+ f'Currency "{currency}" not available for {coin}.',
72
+ file=sys.stderr,
73
+ )
74
+ sys.exit(1)
75
+ price = data[coin][currency]
76
+ print(f'{coin}: {price:.8f} {currency.upper()}')
77
+
78
+
79
+ def main() -> None:
80
+ """Parse arguments and run the appropriate action."""
81
+ parser = argparse.ArgumentParser(
82
+ description='Cryptocurrency price ticker (CoinGecko)',
83
+ )
84
+ parser.add_argument(
85
+ '--coin',
86
+ default='bitcoin',
87
+ help='Coin ID to look up (default: bitcoin)',
88
+ )
89
+ parser.add_argument(
90
+ '--currency',
91
+ default='usd',
92
+ help='Fiat currency symbol (default: usd)',
93
+ )
94
+ parser.add_argument(
95
+ '--list',
96
+ action='store_true',
97
+ help='List all available coins and exit',
98
+ )
99
+ args = parser.parse_args()
100
+
101
+ if args.list:
102
+ list_coins()
103
+ else:
104
+ get_price(args.coin, args.currency)
105
+
106
+
107
+ if __name__ == '__main__':
108
+ main()
@@ -0,0 +1,13 @@
1
+ """csv-stats — Zero-dependency CSV data analysis tool."""
2
+
3
+ __version__ = "1.0.0"
4
+ __author__ = "Evolver"
5
+ __license__ = "MIT"
6
+
7
+ # === Auto-registration metadata ===
8
+ TOOL_META = {
9
+ "name": "csv-stats",
10
+ "func": "main",
11
+ "desc": 'csv-stats',
12
+ "submodule": "cli",
13
+ }
@@ -41,5 +41,13 @@ def main():
41
41
  print_report(result)
42
42
 
43
43
 
44
+
45
+ # === Auto-registration metadata ===
46
+ TOOL_META = {
47
+ "name": "csv-stats",
48
+ "func": "main",
49
+ "desc": 'csv-stats',
50
+ }
51
+
44
52
  if __name__ == "__main__":
45
53
  main()
@@ -205,5 +205,13 @@ Examples:
205
205
  sys.exit(1)
206
206
 
207
207
 
208
+
209
+ # === Auto-registration metadata ===
210
+ TOOL_META = {
211
+ "name": "db-schema",
212
+ "func": "main",
213
+ "desc": 'Display database schema as ASCII',
214
+ }
215
+
208
216
  if __name__ == '__main__':
209
217
  main()
@@ -246,5 +246,13 @@ Examples:
246
246
  sys.exit(1)
247
247
 
248
248
 
249
+
250
+ # === Auto-registration metadata ===
251
+ TOOL_META = {
252
+ "name": "dep-graph",
253
+ "func": "main",
254
+ "desc": 'Dependency graph from Python files',
255
+ }
256
+
249
257
  if __name__ == '__main__':
250
258
  main()