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.
- {evolver_tools-2.5.0/src/evolver_tools.egg-info → evolver_tools-3.1.0}/PKG-INFO +2 -2
- evolver_tools-3.1.0/pyproject.toml +36 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/__init__.py +2 -0
- evolver_tools-3.1.0/src/evolver_tools/autoreg.py +88 -0
- evolver_tools-3.1.0/src/evolver_tools/cli.py +66 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/agent_b_tool.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/api_tester.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ascii_gen.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/audit_log.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/b64/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/backup.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/banner/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/banner.py +2 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/bookmark.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/cal_tool/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/cal_tool/cli.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/cert_check.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/changelog_gen/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/changelog_gen.py +2 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/chart_cli/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/checksum_dir.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/clipboard/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/colorize.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/colors/__init__.py +7 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/config_validator.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/cron/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/crontab_helper.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/crypto_price.py +108 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/csv_stats/__init__.py +13 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/csv_stats/cli.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/db_schema.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/dep_graph.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/dice_roll.py +99 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/diff_csv.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/diff_tool/__init__.py +7 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/dirsize/__init__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/disk_usage/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/dt_convert.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/env_manager.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/envcheck/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/excel2csv.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ff/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/figlet_cli.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/figlet_tool.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/file_encrypt.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/find_dups/__init__.py +15 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/find_dups/cli.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/firewall_rule.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/fmt/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/git_branch_cleaner.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/hashsum/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/html2markdown.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/html2md.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/http_live/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/image_meta.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/ini_parser/__init__.py +9 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/ip_location.py +108 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ipcalc/__init__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/ipinfo/__init__.py +10 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/join.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/joke.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/jq_lite/__init__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/json2csv/__init__.py +10 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/json_pretty/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/jsonql/__init__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/license_cli/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/license_cli/cli.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/log_analyzer.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/log_tail.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/markdown_check/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/morse.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/nb/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/net_speed.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/note_taker.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/otp_gen.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/passgen/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/password_strength.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/portcheck/__init__.py +10 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/portcheck/__main__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/pr_tool/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/process_kill.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/progress_bar.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/project_doctor/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/qrcode.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/quote_tool/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/rainbow.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/reminder.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ren/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/restore.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/scan_ports.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/service_check.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/shuffle.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/siege_lite/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/smellfinder/__init__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/sort/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/spinner.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/split_tool/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sql2csv.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sqlite_cli/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ssh_key_gen.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ssl_check.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/stopwatch.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sysmon/__init__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/text_stats.py +119 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/timer/__init__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/timer_pro/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/timer_pro.py +2 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/todo_cli.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/treedir/__init__.py +10 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/treedir/__main__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/uniq_tool/__init__.py +9 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/unit_convert.py +137 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/urlparse_tool/__init__.py +11 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/urlparse_tool/cli.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/uuid_tool/__init__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/weather_cli.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/web_summary/__init__.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/wordcount/__init__.py +10 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/wordcount/__main__.py +8 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/xml2json.py +8 -0
- evolver_tools-3.1.0/src/evolver_tools/vendor/yaml2json/__init__.py +9 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0/src/evolver_tools.egg-info}/PKG-INFO +2 -2
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools.egg-info/SOURCES.txt +5 -0
- evolver_tools-3.1.0/src/evolver_tools.egg-info/entry_points.txt +2 -0
- evolver_tools-2.5.0/pyproject.toml +0 -134
- evolver_tools-2.5.0/src/evolver_tools/autoreg.py +0 -150
- evolver_tools-2.5.0/src/evolver_tools/cli.py +0 -156
- evolver_tools-2.5.0/src/evolver_tools/vendor/agent_b_tool.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/b64/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/banner/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/cal_tool/__init__.py +0 -1
- evolver_tools-2.5.0/src/evolver_tools/vendor/changelog_gen/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/clipboard/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/csv_stats/__init__.py +0 -5
- evolver_tools-2.5.0/src/evolver_tools/vendor/disk_usage/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/find_dups/__init__.py +0 -7
- evolver_tools-2.5.0/src/evolver_tools/vendor/fmt/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/ini_parser/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/ipinfo/__init__.py +0 -3
- evolver_tools-2.5.0/src/evolver_tools/vendor/json2csv/__init__.py +0 -3
- evolver_tools-2.5.0/src/evolver_tools/vendor/json_pretty/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/license_cli/__init__.py +0 -1
- evolver_tools-2.5.0/src/evolver_tools/vendor/portcheck/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/pr_tool/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/quote_tool/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/sort/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/split_tool/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/timer_pro/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/treedir/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/uniq_tool/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/urlparse_tool/__init__.py +0 -3
- evolver_tools-2.5.0/src/evolver_tools/vendor/wordcount/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools/vendor/yaml2json/__init__.py +0 -2
- evolver_tools-2.5.0/src/evolver_tools.egg-info/entry_points.txt +0 -100
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/LICENSE +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/README.md +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/setup.cfg +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/__init__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/b64/b64.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/banner/banner.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/changelog_gen/changelog_gen.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/chart_cli/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/clipboard/clipboard.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/colors/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/cron/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/csv_stats/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/csv_stats/analyzer.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/diff_tool/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/disk_usage/disk_usage.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ff/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/fmt/fmt.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/hashsum/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/http_live/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ini_parser/ini_parser.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ipcalc/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ipinfo/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/jq_lite/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/json2csv/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/json_pretty/json_pretty.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/jsonql/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/license_cli/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/nb/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/pr_tool/pr_tool.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/project_doctor/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/quote_tool/quote.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/ren/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/siege_lite/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/smellfinder/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sort/sort.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/split.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/split_tool/split.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sqlite_cli/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/sysmon/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/timer_pro/timer_pro.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/uniq_tool/uniq.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/uuid_tool/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/web_summary/__main__.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools/vendor/yaml2json/yaml2json.py +0 -0
- {evolver_tools-2.5.0 → evolver_tools-3.1.0}/src/evolver_tools.egg-info/dependency_links.txt +0 -0
- {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:
|
|
4
|
-
Summary:
|
|
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*"]
|
|
@@ -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()
|
|
@@ -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()
|
|
@@ -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()
|
|
@@ -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()
|
|
@@ -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()
|
|
@@ -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()
|
|
@@ -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
|
+
}
|
|
@@ -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()
|