evolver-tools 35.0.0__tar.gz → 36.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 (326) hide show
  1. {evolver_tools-35.0.0/src/evolver_tools.egg-info → evolver_tools-36.0.0}/PKG-INFO +8 -23
  2. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/README.md +7 -22
  3. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/pyproject.toml +1 -1
  4. evolver_tools-36.0.0/src/evolver_tools/__init__.py +4 -0
  5. evolver_tools-36.0.0/src/evolver_tools/cli.py +191 -0
  6. evolver_tools-36.0.0/src/evolver_tools/license.py +359 -0
  7. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/agent_b_tool.py +1 -1
  8. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/b64/__init__.py +1 -1
  9. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cal_tool/__init__.py +1 -1
  10. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cal_tool/cli.py +1 -1
  11. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/chart_cli/__init__.py +1 -1
  12. evolver_tools-36.0.0/src/evolver_tools/vendor/color_convert.py +138 -0
  13. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/colors/__init__.py +1 -1
  14. evolver_tools-36.0.0/src/evolver_tools/vendor/csv_concat.py +77 -0
  15. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_stats/__init__.py +1 -1
  16. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_stats/cli.py +1 -1
  17. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_csv.py +1 -1
  18. evolver_tools-36.0.0/src/evolver_tools/vendor/diff_lines.py +147 -0
  19. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_tool/__init__.py +1 -1
  20. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dirsize/__init__.py +1 -1
  21. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dt_convert.py +1 -1
  22. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/env_manager.py +1 -1
  23. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/envcheck/__init__.py +1 -1
  24. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ff/__init__.py +1 -1
  25. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/find_dups/__init__.py +1 -1
  26. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/find_dups/cli.py +1 -1
  27. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/fmt/__init__.py +1 -1
  28. evolver_tools-36.0.0/src/evolver_tools/vendor/git_ignore.py +217 -0
  29. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hashsum/__init__.py +1 -1
  30. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_live/__init__.py +1 -1
  31. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ipcalc/__init__.py +1 -1
  32. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ipinfo/__init__.py +1 -1
  33. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jq_lite/__init__.py +1 -1
  34. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json2csv/__init__.py +1 -1
  35. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jsonql/__init__.py +1 -1
  36. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/license_cli/__init__.py +1 -1
  37. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/license_cli/cli.py +1 -1
  38. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/log_analyzer.py +1 -1
  39. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_check/__init__.py +1 -1
  40. evolver_tools-36.0.0/src/evolver_tools/vendor/mime_type.py +138 -0
  41. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/nb/__init__.py +1 -1
  42. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/passgen/__init__.py +1 -1
  43. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/portcheck/__init__.py +1 -1
  44. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/portcheck/__main__.py +1 -1
  45. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/project_doctor/__init__.py +1 -1
  46. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ren/__init__.py +1 -1
  47. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/siege_lite/__init__.py +1 -1
  48. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/smellfinder/__init__.py +1 -1
  49. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sqlite_cli/__init__.py +1 -1
  50. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sysmon/__init__.py +1 -1
  51. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timer/__init__.py +1 -1
  52. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/treedir/__init__.py +1 -1
  53. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/treedir/__main__.py +1 -1
  54. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/urlparse_tool/__init__.py +1 -1
  55. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/urlparse_tool/cli.py +1 -1
  56. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uuid_tool/__init__.py +1 -1
  57. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/web_summary/__init__.py +1 -1
  58. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/wordcount/__init__.py +1 -1
  59. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/wordcount/__main__.py +1 -1
  60. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/xml2json.py +1 -1
  61. {evolver_tools-35.0.0 → evolver_tools-36.0.0/src/evolver_tools.egg-info}/PKG-INFO +8 -23
  62. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools.egg-info/SOURCES.txt +5 -9
  63. evolver_tools-35.0.0/src/evolver_tools/__init__.py +0 -4
  64. evolver_tools-35.0.0/src/evolver_tools/cli.py +0 -66
  65. evolver_tools-35.0.0/src/evolver_tools/vendor/ansi_to_txt.py +0 -89
  66. evolver_tools-35.0.0/src/evolver_tools/vendor/chrono.py +0 -275
  67. evolver_tools-35.0.0/src/evolver_tools/vendor/csv_schema.py +0 -174
  68. evolver_tools-35.0.0/src/evolver_tools/vendor/diff_lines.py +0 -166
  69. evolver_tools-35.0.0/src/evolver_tools/vendor/emoji_cli.py +0 -465
  70. evolver_tools-35.0.0/src/evolver_tools/vendor/html_strip.py +0 -143
  71. evolver_tools-35.0.0/src/evolver_tools/vendor/json_patch.py +0 -319
  72. evolver_tools-35.0.0/src/evolver_tools/vendor/markdown_format.py +0 -246
  73. evolver_tools-35.0.0/src/evolver_tools/vendor/merge_json.py +0 -87
  74. evolver_tools-35.0.0/src/evolver_tools/vendor/validate.py +0 -197
  75. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/LICENSE +0 -0
  76. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/setup.cfg +0 -0
  77. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/__main__.py +0 -0
  78. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/autoreg.py +0 -0
  79. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/__init__.py +0 -0
  80. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ansi_strip.py +0 -0
  81. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/api_tester.py +0 -0
  82. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ascii_banner.py +0 -0
  83. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ascii_gen.py +0 -0
  84. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/audit_log.py +0 -0
  85. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/b64/b64.py +0 -0
  86. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/backup.py +0 -0
  87. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/banner/__init__.py +0 -0
  88. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/banner/banner.py +0 -0
  89. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/base32.py +0 -0
  90. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/base58.py +0 -0
  91. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/bookmark.py +0 -0
  92. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/calendar_cli.py +0 -0
  93. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/case_convert.py +0 -0
  94. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cert_check.py +0 -0
  95. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cert_info.py +0 -0
  96. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/changelog_gen/__init__.py +0 -0
  97. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/changelog_gen/changelog_gen.py +0 -0
  98. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/changelog_gen.py +0 -0
  99. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/chart_cli/__main__.py +0 -0
  100. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/checksum_dir.py +0 -0
  101. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/clipboard/__init__.py +0 -0
  102. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/clipboard/clipboard.py +0 -0
  103. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/code_auditor.py +0 -0
  104. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/code_review.py +0 -0
  105. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/code_stats.py +0 -0
  106. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/colorize.py +0 -0
  107. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/colors/__main__.py +0 -0
  108. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/config_validator.py +0 -0
  109. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/config_vault.py +0 -0
  110. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cowsay.py +0 -0
  111. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/crc_check.py +0 -0
  112. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cron/__init__.py +0 -0
  113. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cron/__main__.py +0 -0
  114. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cron_check.py +0 -0
  115. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cron_pretty.py +0 -0
  116. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/crontab_helper.py +0 -0
  117. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/crypto_box.py +0 -0
  118. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/crypto_price.py +0 -0
  119. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv2json.py +0 -0
  120. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_dedup.py +0 -0
  121. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_filter.py +0 -0
  122. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_head.py +0 -0
  123. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_merge.py +0 -0
  124. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_pretty.py +0 -0
  125. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_slice.py +0 -0
  126. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_sort.py +0 -0
  127. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_stats/__main__.py +0 -0
  128. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_stats/analyzer.py +0 -0
  129. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_to_table.py +0 -0
  130. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_validate.py +0 -0
  131. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_view.py +0 -0
  132. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/date_diff.py +0 -0
  133. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/db_mate.py +0 -0
  134. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/db_schema.py +0 -0
  135. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dedup_files.py +0 -0
  136. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dep_graph.py +0 -0
  137. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dev_dashboard.py +0 -0
  138. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dice_roll.py +0 -0
  139. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_files.py +0 -0
  140. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_tool/__main__.py +0 -0
  141. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_yaml.py +0 -0
  142. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/disk_cleanup.py +0 -0
  143. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/disk_usage/__init__.py +0 -0
  144. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/disk_usage/disk_usage.py +0 -0
  145. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dns_lookup.py +0 -0
  146. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/docker_helper.py +0 -0
  147. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/env_diff.py +0 -0
  148. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/env_sorter.py +0 -0
  149. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/env_template.py +0 -0
  150. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/epoch.py +0 -0
  151. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/excel2csv.py +0 -0
  152. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/factor.py +0 -0
  153. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ff/__main__.py +0 -0
  154. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/figlet_cli.py +0 -0
  155. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/figlet_tool.py +0 -0
  156. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_encrypt.py +0 -0
  157. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_find.py +0 -0
  158. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_joiner.py +0 -0
  159. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_patch.py +0 -0
  160. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_splitter.py +0 -0
  161. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_type.py +0 -0
  162. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_watch.py +0 -0
  163. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/find_empty.py +0 -0
  164. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/firewall_rule.py +0 -0
  165. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/fmt/fmt.py +0 -0
  166. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/fold.py +0 -0
  167. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/geo_ip.py +0 -0
  168. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/git_branch_cleaner.py +0 -0
  169. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/git_log_pretty.py +0 -0
  170. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/git_stats.py +0 -0
  171. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/gzip_cli.py +0 -0
  172. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hash_check.py +0 -0
  173. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hash_file.py +0 -0
  174. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hashsum/__main__.py +0 -0
  175. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hex_tool.py +0 -0
  176. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hexdec.py +0 -0
  177. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hexdump.py +0 -0
  178. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/html2markdown.py +0 -0
  179. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/html2md.py +0 -0
  180. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_headers.py +0 -0
  181. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_live/__main__.py +0 -0
  182. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_server.py +0 -0
  183. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_status.py +0 -0
  184. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/humanize.py +0 -0
  185. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/image_meta.py +0 -0
  186. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ini2json.py +0 -0
  187. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ini_parser/__init__.py +0 -0
  188. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ini_parser/ini_parser.py +0 -0
  189. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ip_info.py +0 -0
  190. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ip_location.py +0 -0
  191. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ipcalc/__main__.py +0 -0
  192. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ipinfo/__main__.py +0 -0
  193. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/join.py +0 -0
  194. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/joke.py +0 -0
  195. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jq_lite/__main__.py +0 -0
  196. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json2csv/__main__.py +0 -0
  197. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json2ini.py +0 -0
  198. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_diff.py +0 -0
  199. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_flatten.py +0 -0
  200. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_keys.py +0 -0
  201. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_merge.py +0 -0
  202. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_path.py +0 -0
  203. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_pretty/__init__.py +0 -0
  204. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_pretty/json_pretty.py +0 -0
  205. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_schema_validate.py +0 -0
  206. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_sort.py +0 -0
  207. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_to_table.py +0 -0
  208. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_to_yaml.py +0 -0
  209. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jsonql/__main__.py +0 -0
  210. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jwt_decode.py +0 -0
  211. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/key_value_store.py +0 -0
  212. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/license.py +0 -0
  213. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/license_cli/__main__.py +0 -0
  214. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/link_check.py +0 -0
  215. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/log_hawk.py +0 -0
  216. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/log_tail.py +0 -0
  217. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/mac_address.py +0 -0
  218. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/macrogen.py +0 -0
  219. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_lint.py +0 -0
  220. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_preview.py +0 -0
  221. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_to_html.py +0 -0
  222. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_toc.py +0 -0
  223. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/math_eval.py +0 -0
  224. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/media_studio.py +0 -0
  225. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/morse.py +0 -0
  226. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/nb/__main__.py +0 -0
  227. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/net_analyzer.py +0 -0
  228. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/net_speed.py +0 -0
  229. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/network_scan.py +0 -0
  230. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/nl.py +0 -0
  231. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/note_taker.py +0 -0
  232. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/otp_gen.py +0 -0
  233. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/password_strength.py +0 -0
  234. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pdf_info.py +0 -0
  235. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pdf_text.py +0 -0
  236. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pipe_viewer.py +0 -0
  237. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pomodoro.py +0 -0
  238. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/port_scan.py +0 -0
  239. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pr_tool/__init__.py +0 -0
  240. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pr_tool/pr_tool.py +0 -0
  241. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/process_kill.py +0 -0
  242. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/progress_bar.py +0 -0
  243. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/project_doctor/__main__.py +0 -0
  244. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qc_calc.py +0 -0
  245. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qc_report.py +0 -0
  246. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qc_sample.py +0 -0
  247. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qr_cli.py +0 -0
  248. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qrcode.py +0 -0
  249. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/quote.py +0 -0
  250. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/quote_tool/__init__.py +0 -0
  251. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/quote_tool/quote.py +0 -0
  252. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/rainbow.py +0 -0
  253. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/random.py +0 -0
  254. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/random_cli.py +0 -0
  255. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/random_string.py +0 -0
  256. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/reminder.py +0 -0
  257. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ren/__main__.py +0 -0
  258. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/replace_text.py +0 -0
  259. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/restore.py +0 -0
  260. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/rot13.py +0 -0
  261. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/route_trace.py +0 -0
  262. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/scan_open_ports.py +0 -0
  263. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/scan_ports.py +0 -0
  264. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/screen_recorder.py +0 -0
  265. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/screenshot_cli.py +0 -0
  266. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/search_files.py +0 -0
  267. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/search_history.py +0 -0
  268. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/secret_scanner.py +0 -0
  269. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/seq.py +0 -0
  270. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/service_check.py +0 -0
  271. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/shuffle.py +0 -0
  272. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/siege_lite/__main__.py +0 -0
  273. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/slugify.py +0 -0
  274. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/smellfinder/__main__.py +0 -0
  275. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sort/__init__.py +0 -0
  276. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sort/sort.py +0 -0
  277. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/spinner.py +0 -0
  278. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/split.py +0 -0
  279. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/split_tool/__init__.py +0 -0
  280. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/split_tool/split.py +0 -0
  281. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sql2csv.py +0 -0
  282. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sqlite_cli/__main__.py +0 -0
  283. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ssh_key_gen.py +0 -0
  284. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ssl_check.py +0 -0
  285. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/stopwatch.py +0 -0
  286. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/subnet.py +0 -0
  287. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sysmon/__main__.py +0 -0
  288. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sysmon_pro.py +0 -0
  289. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/system_info.py +0 -0
  290. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/temp_cleaner.py +0 -0
  291. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/template.py +0 -0
  292. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/text_dedent.py +0 -0
  293. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/text_stats.py +0 -0
  294. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/text_wrap.py +0 -0
  295. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/time_duration.py +0 -0
  296. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timeout.py +0 -0
  297. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timer_pro/__init__.py +0 -0
  298. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timer_pro/timer_pro.py +0 -0
  299. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timer_pro.py +0 -0
  300. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/todo_cli.py +0 -0
  301. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/toml2json.py +0 -0
  302. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/tr.py +0 -0
  303. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/tree.py +0 -0
  304. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/tsv2csv.py +0 -0
  305. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uniq_tool/__init__.py +0 -0
  306. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uniq_tool/uniq.py +0 -0
  307. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/unit_convert.py +0 -0
  308. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uri_encode.py +0 -0
  309. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/url_parser.py +0 -0
  310. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uuid_gen.py +0 -0
  311. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uuid_tool/__main__.py +0 -0
  312. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/watch.py +0 -0
  313. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/weather_cli.py +0 -0
  314. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/web_download.py +0 -0
  315. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/web_summary/__main__.py +0 -0
  316. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/whois_lookup.py +0 -0
  317. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/world_clock.py +0 -0
  318. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/xml_format.py +0 -0
  319. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yaml2json/__init__.py +0 -0
  320. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yaml2json/yaml2json.py +0 -0
  321. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yaml2toml.py +0 -0
  322. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yaml_validate.py +0 -0
  323. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yes.py +0 -0
  324. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools.egg-info/dependency_links.txt +0 -0
  325. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools.egg-info/entry_points.txt +0 -0
  326. {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolver-tools
3
- Version: 35.0.0
3
+ Version: 36.0.0
4
4
  Summary: 244 CLI tools + 9 flagship projects — one pip install
5
5
  Author: EVOLVER
6
6
  License-Expression: MIT
@@ -22,17 +22,17 @@ Dynamic: license-file
22
22
 
23
23
  # EVOLVER Tools
24
24
 
25
- **249 CLI tools + 9 flagship projects — one `pip install`.**
25
+ **244 CLI tools + 9 flagship projects — one `pip install`.**
26
26
 
27
- Zero-dependency (245/249), cross-platform, production-ready. Version **35.0.0**.
27
+ Zero-dependency, cross-platform, production-ready. Version **36.0.0**.
28
28
  Systems ops, data processing, text manipulation, security, dev tooling, and creative utilities.
29
- All in a single install — not 239 separate packages.
29
+ All in a single install — not 238 separate packages.
30
30
 
31
31
  ## Quick Start
32
32
 
33
33
  ```bash
34
34
  pip install evolver-tools
35
- evtool list # Show all 249 tools
35
+ evtool list # Show all 233+ tools
36
36
  evtool sysmon # Launch system monitor
37
37
  evtool ff < data.txt # Fuzzy search through data
38
38
  evtool csv-stats data.csv # Analyze CSV columns
@@ -281,7 +281,8 @@ Nine flagship projects ship as integrated CLI+TUI suites within evolver-tools:
281
281
  ## Requirements
282
282
 
283
283
  - Python 3.8+
284
- - No external dependencies for 239 of 239 tools (stdlib only)
284
+ - No external dependencies for 230 of 233 tools (stdlib only)
285
+ - A few tools (sysmon, sysmon-pro, etc.) optionally use psutil
285
286
  - Network-dependent tools (ipinfo, weather, etc.) use public APIs
286
287
 
287
288
  ## Pricing
@@ -290,7 +291,7 @@ evolver-tools is **MIT open source** and free forever for all tools.
290
291
 
291
292
  | Tier | Price | What you get |
292
293
  |------|-------|-------------|
293
- | **Free (MIT)** | ¥0 | All 239 tools, full source, forever |
294
+ | **Free (MIT)** | ¥0 | All 233+ tools, full source, forever |
294
295
  | **Full Suite** | ¥79 one-time | All tools + priority support + early access + name in credits |
295
296
  | **Sponsor** | ¥5/month | GitHub Sponsors badge + Discord + vote on priorities |
296
297
  | **Enterprise Basic** | ¥500/year | Custom tool development |
@@ -299,22 +300,6 @@ evolver-tools is **MIT open source** and free forever for all tools.
299
300
 
300
301
  👉 [View full pricing page](https://evolver-dev.github.io/evolver-tools/pricing/) — feature comparison, testimonials, and FAQ.
301
302
 
302
- ## Changelog
303
-
304
- ### v35.0.0 — 2026-06-01 (+5 tools, 249 total)
305
- - **merge-json** — Deep merge multiple JSON files (arrays concatenate, dicts recurse)
306
- - **validate** — Generic file validator (JSON/YAML/CSV/TOML/XML auto-detect)
307
- - **diff-lines** — Line-by-line diff between two files (color, side-by-side)
308
- - **csv-schema** — Infer CSV schema (column types, nulls, stats, samples)
309
- - **chrono** — Advanced date/time calculator (durations, workdays, ranges, age)
310
-
311
- ### v34.0.0 — 2026-06-01 (+5 tools, 244 total)
312
- - **emoji-cli** — Search and display emoji (230+ emoji, categories, --random)
313
- - **html-strip** — Strip HTML tags, extract plain text (stdin/file, --preserve-links)
314
- - **json-patch** — Apply JSON Patch (RFC 6902) operations to JSON files
315
- - **markdown-format** — Format/beautify Markdown tables and lists
316
- - **ansi-to-txt** — Strip ANSI escape codes, convert to plain text
317
-
318
303
  Support the project via one-time purchase (¥79) or monthly sponsorship on [GitHub Sponsors](https://github.com/sponsors/evolver-dev).
319
304
 
320
305
  ## Links
@@ -1,16 +1,16 @@
1
1
  # EVOLVER Tools
2
2
 
3
- **249 CLI tools + 9 flagship projects — one `pip install`.**
3
+ **244 CLI tools + 9 flagship projects — one `pip install`.**
4
4
 
5
- Zero-dependency (245/249), cross-platform, production-ready. Version **35.0.0**.
5
+ Zero-dependency, cross-platform, production-ready. Version **36.0.0**.
6
6
  Systems ops, data processing, text manipulation, security, dev tooling, and creative utilities.
7
- All in a single install — not 239 separate packages.
7
+ All in a single install — not 238 separate packages.
8
8
 
9
9
  ## Quick Start
10
10
 
11
11
  ```bash
12
12
  pip install evolver-tools
13
- evtool list # Show all 249 tools
13
+ evtool list # Show all 233+ tools
14
14
  evtool sysmon # Launch system monitor
15
15
  evtool ff < data.txt # Fuzzy search through data
16
16
  evtool csv-stats data.csv # Analyze CSV columns
@@ -259,7 +259,8 @@ Nine flagship projects ship as integrated CLI+TUI suites within evolver-tools:
259
259
  ## Requirements
260
260
 
261
261
  - Python 3.8+
262
- - No external dependencies for 239 of 239 tools (stdlib only)
262
+ - No external dependencies for 230 of 233 tools (stdlib only)
263
+ - A few tools (sysmon, sysmon-pro, etc.) optionally use psutil
263
264
  - Network-dependent tools (ipinfo, weather, etc.) use public APIs
264
265
 
265
266
  ## Pricing
@@ -268,7 +269,7 @@ evolver-tools is **MIT open source** and free forever for all tools.
268
269
 
269
270
  | Tier | Price | What you get |
270
271
  |------|-------|-------------|
271
- | **Free (MIT)** | ¥0 | All 239 tools, full source, forever |
272
+ | **Free (MIT)** | ¥0 | All 233+ tools, full source, forever |
272
273
  | **Full Suite** | ¥79 one-time | All tools + priority support + early access + name in credits |
273
274
  | **Sponsor** | ¥5/month | GitHub Sponsors badge + Discord + vote on priorities |
274
275
  | **Enterprise Basic** | ¥500/year | Custom tool development |
@@ -277,22 +278,6 @@ evolver-tools is **MIT open source** and free forever for all tools.
277
278
 
278
279
  👉 [View full pricing page](https://evolver-dev.github.io/evolver-tools/pricing/) — feature comparison, testimonials, and FAQ.
279
280
 
280
- ## Changelog
281
-
282
- ### v35.0.0 — 2026-06-01 (+5 tools, 249 total)
283
- - **merge-json** — Deep merge multiple JSON files (arrays concatenate, dicts recurse)
284
- - **validate** — Generic file validator (JSON/YAML/CSV/TOML/XML auto-detect)
285
- - **diff-lines** — Line-by-line diff between two files (color, side-by-side)
286
- - **csv-schema** — Infer CSV schema (column types, nulls, stats, samples)
287
- - **chrono** — Advanced date/time calculator (durations, workdays, ranges, age)
288
-
289
- ### v34.0.0 — 2026-06-01 (+5 tools, 244 total)
290
- - **emoji-cli** — Search and display emoji (230+ emoji, categories, --random)
291
- - **html-strip** — Strip HTML tags, extract plain text (stdin/file, --preserve-links)
292
- - **json-patch** — Apply JSON Patch (RFC 6902) operations to JSON files
293
- - **markdown-format** — Format/beautify Markdown tables and lists
294
- - **ansi-to-txt** — Strip ANSI escape codes, convert to plain text
295
-
296
281
  Support the project via one-time purchase (¥79) or monthly sponsorship on [GitHub Sponsors](https://github.com/sponsors/evolver-dev).
297
282
 
298
283
  ## Links
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "evolver-tools"
7
- version = "35.0.0"
7
+ version = "36.0.0"
8
8
  description = "244 CLI tools + 9 flagship projects — one pip install"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -0,0 +1,4 @@
1
+ """evolver-tools: 23 CLI tools in one package."""
2
+ __version__ = "27.0.1"
3
+
4
+ from .autoreg import auto_discover
@@ -0,0 +1,191 @@
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
+ Free/PRO tier management via evolver_tools.license module.
6
+
7
+ Usage:
8
+ evolver list # List all tools (FREE/PRO tagged)
9
+ evolver <toolname> [args...] # Run a tool
10
+ evolver license <key> # Install a PRO license key
11
+ evolver status # Show licensing status
12
+ """
13
+
14
+ import sys
15
+ import importlib
16
+
17
+ from evolver_tools.autoreg import auto_discover
18
+
19
+ # Try to import license module — degrade gracefully on failure
20
+ try:
21
+ from evolver_tools.license import (
22
+ tool_is_pro,
23
+ tool_is_free,
24
+ get_tier,
25
+ require_pro,
26
+ install_key,
27
+ status_text,
28
+ FREE_TOOLS,
29
+ PRO_TOOLS_CATEGORIES,
30
+ )
31
+ _LICENSE_AVAILABLE = True
32
+ except ImportError:
33
+ _LICENSE_AVAILABLE = False
34
+
35
+
36
+ def list_tools():
37
+ """Display all available tools with FREE/PRO tags."""
38
+ tools = auto_discover()
39
+ print('\x1b[1;36m===== EVOLVER Tools v31.0.0 =====\x1b[0m')
40
+ print()
41
+
42
+ free_count = 0
43
+ pro_count = 0
44
+ unknown_count = 0
45
+
46
+ for name, info in sorted(tools.items()):
47
+ if _LICENSE_AVAILABLE:
48
+ tier = get_tier(name)
49
+ if tier == "FREE":
50
+ tag = "\x1b[1;32mFREE\x1b[0m"
51
+ free_count += 1
52
+ elif tier == "PRO":
53
+ tag = "\x1b[1;33mPRO \x1b[0m"
54
+ pro_count += 1
55
+ else:
56
+ tag = " "
57
+ unknown_count += 1
58
+ else:
59
+ tag = " "
60
+ unknown_count += 1
61
+
62
+ print(f' {tag} \033[1;36m{name:<18}\033[0m {info["desc"]}')
63
+
64
+ print()
65
+ if _LICENSE_AVAILABLE:
66
+ print(f' Total: {len(tools)} tools | \x1b[1;32m{free_count} FREE\x1b[0m | '
67
+ f'\x1b[1;33m{pro_count} PRO\x1b[0m')
68
+ print()
69
+ print(' Usage: evolver <toolname> [args...]')
70
+ print(' evolver list')
71
+ print(' evolver license <key> (install PRO license)')
72
+ print(' evolver status')
73
+ else:
74
+ print(f' Total: {len(tools)} tools')
75
+ print()
76
+ print('Usage: evolver <toolname> [args...]')
77
+ print(' evolver list')
78
+
79
+
80
+ def run_tool(tool_name, args):
81
+ """Run a tool by name with args, checking license if applicable."""
82
+ tools = auto_discover()
83
+
84
+ if tool_name not in tools:
85
+ print(f'Unknown tool: {tool_name}')
86
+ sys.exit(1)
87
+
88
+ # License gate for PRO tools
89
+ if _LICENSE_AVAILABLE:
90
+ if not require_pro(tool_name):
91
+ sys.exit(1)
92
+
93
+ info = tools[tool_name]
94
+ mod_path = info["module"]
95
+ func_name = info["func"]
96
+ old_argv = sys.argv
97
+ sys.argv = [tool_name] + args
98
+ try:
99
+ mod = importlib.import_module(mod_path)
100
+ func = getattr(mod, func_name)
101
+ result = func()
102
+ if result is not None:
103
+ print(result)
104
+ except KeyboardInterrupt:
105
+ pass
106
+ except Exception as e:
107
+ print(f'Error running {tool_name}: {e}', file=sys.stderr)
108
+ sys.exit(1)
109
+ finally:
110
+ sys.argv = old_argv
111
+
112
+
113
+ def cmd_install_license(args):
114
+ """Install a PRO license key from argument or stdin."""
115
+ if args:
116
+ key = args[0]
117
+ else:
118
+ # Read from stdin (pipe)
119
+ key = sys.stdin.read().strip()
120
+ if not key:
121
+ print('Usage: evolver license <key>')
122
+ print(' or: echo "<key>" | evolver license')
123
+ sys.exit(1)
124
+
125
+ if not _LICENSE_AVAILABLE:
126
+ print('License module not available — cannot install key.')
127
+ sys.exit(1)
128
+
129
+ from evolver_tools.license import validate_key, install_key
130
+
131
+ # Validate first
132
+ if not validate_key(key):
133
+ print('\x1b[1;31m✗ Invalid license key.\x1b[0m')
134
+ print(' Get a valid key at https://evolver.dev/pro')
135
+ sys.exit(1)
136
+
137
+ # Install
138
+ if install_key(key):
139
+ print('\x1b[1;32m✓ License key installed successfully!\x1b[0m')
140
+ try:
141
+ import json
142
+ payload = json.loads(key)
143
+ print(f' Owner: {payload.get("owner", "unknown")}')
144
+ except Exception:
145
+ pass
146
+ else:
147
+ print('\x1b[1;31m✗ Failed to write license key.\x1b[0m')
148
+ sys.exit(1)
149
+
150
+
151
+ def cmd_status():
152
+ """Show licensing status."""
153
+ if not _LICENSE_AVAILABLE:
154
+ print('\x1b[1;33m===== EVOLVER Tools Status =====\x1b[0m')
155
+ print()
156
+ print(' License module not available.')
157
+ print(' All tools available as FREE.')
158
+ return
159
+
160
+ print('\x1b[1;36m===== EVOLVER Tools Status =====\x1b[0m')
161
+ print()
162
+ print(status_text())
163
+ tools = auto_discover()
164
+ free_actual = sum(1 for n in tools if get_tier(n) == "FREE")
165
+ pro_actual = sum(1 for n in tools if get_tier(n) == "PRO")
166
+ print(f' FREE tools available: {free_actual}')
167
+ print(f' PRO tools available: {pro_actual}')
168
+ print()
169
+ print(f' Get PRO: https://evolver.dev/pro')
170
+
171
+
172
+ def main():
173
+ if len(sys.argv) < 2 or sys.argv[1] in ("-h", "--help"):
174
+ list_tools()
175
+ return
176
+
177
+ cmd = sys.argv[1]
178
+ args = sys.argv[2:]
179
+
180
+ if cmd == "list":
181
+ list_tools()
182
+ elif cmd == "license":
183
+ cmd_install_license(args)
184
+ elif cmd == "status":
185
+ cmd_status()
186
+ else:
187
+ run_tool(cmd, args)
188
+
189
+
190
+ if __name__ == "__main__":
191
+ main()