Open-AutoTools 0.0.4rc2__tar.gz → 0.0.5__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 (127) hide show
  1. open_autotools-0.0.5/Open_AutoTools.egg-info/PKG-INFO +114 -0
  2. open_autotools-0.0.5/Open_AutoTools.egg-info/SOURCES.txt +115 -0
  3. open_autotools-0.0.5/Open_AutoTools.egg-info/entry_points.txt +12 -0
  4. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/Open_AutoTools.egg-info/requires.txt +13 -1
  5. open_autotools-0.0.5/PKG-INFO +114 -0
  6. open_autotools-0.0.5/README.md +53 -0
  7. open_autotools-0.0.5/autotools/autocaps/commands.py +34 -0
  8. open_autotools-0.0.5/autotools/autocolor/commands.py +60 -0
  9. open_autotools-0.0.5/autotools/autocolor/core.py +99 -0
  10. open_autotools-0.0.5/autotools/autoconvert/commands.py +79 -0
  11. open_autotools-0.0.5/autotools/autoconvert/conversion/convert_audio.py +24 -0
  12. open_autotools-0.0.5/autotools/autoconvert/conversion/convert_image.py +29 -0
  13. open_autotools-0.0.5/autotools/autoconvert/conversion/convert_text.py +101 -0
  14. open_autotools-0.0.5/autotools/autoconvert/conversion/convert_video.py +25 -0
  15. open_autotools-0.0.5/autotools/autoconvert/core.py +54 -0
  16. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autoip/commands.py +38 -1
  17. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autoip/core.py +99 -42
  18. open_autotools-0.0.5/autotools/autolower/commands.py +34 -0
  19. open_autotools-0.0.5/autotools/autonote/__init__.py +0 -0
  20. open_autotools-0.0.5/autotools/autonote/commands.py +70 -0
  21. open_autotools-0.0.5/autotools/autonote/core.py +106 -0
  22. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autopassword/commands.py +39 -1
  23. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autotest/commands.py +36 -6
  24. open_autotools-0.0.5/autotools/autotodo/__init__.py +87 -0
  25. open_autotools-0.0.5/autotools/autotodo/commands.py +115 -0
  26. open_autotools-0.0.5/autotools/autotodo/core.py +567 -0
  27. open_autotools-0.0.5/autotools/autounit/__init__.py +0 -0
  28. open_autotools-0.0.5/autotools/autounit/commands.py +55 -0
  29. open_autotools-0.0.5/autotools/autounit/core.py +36 -0
  30. open_autotools-0.0.5/autotools/autozip/__init__.py +0 -0
  31. open_autotools-0.0.5/autotools/autozip/commands.py +88 -0
  32. open_autotools-0.0.5/autotools/autozip/core.py +107 -0
  33. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/cli.py +66 -62
  34. open_autotools-0.0.5/autotools/utils/commands.py +144 -0
  35. open_autotools-0.0.5/autotools/utils/smoke.py +246 -0
  36. open_autotools-0.0.5/autotools/utils/text.py +73 -0
  37. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/requirements.txt +4 -1
  38. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/setup.py +10 -2
  39. open_autotools-0.0.5/tests/__init__.py +0 -0
  40. open_autotools-0.0.5/tests/autotools/autocolor/__init__.py +0 -0
  41. open_autotools-0.0.5/tests/autotools/autocolor/test_autocolor_core.py +299 -0
  42. open_autotools-0.0.5/tests/autotools/autocolor/test_autocolor_integration.py +153 -0
  43. open_autotools-0.0.5/tests/autotools/autoconvert/__init__.py +0 -0
  44. open_autotools-0.0.5/tests/autotools/autoconvert/conftest.py +63 -0
  45. open_autotools-0.0.5/tests/autotools/autoconvert/integration/__init__.py +0 -0
  46. open_autotools-0.0.5/tests/autotools/autoconvert/integration/test_convert_commands.py +187 -0
  47. open_autotools-0.0.5/tests/autotools/autoconvert/unit/__init__.py +0 -0
  48. open_autotools-0.0.5/tests/autotools/autoconvert/unit/test_convert_audio.py +58 -0
  49. open_autotools-0.0.5/tests/autotools/autoconvert/unit/test_convert_core.py +234 -0
  50. open_autotools-0.0.5/tests/autotools/autoconvert/unit/test_convert_image.py +116 -0
  51. open_autotools-0.0.5/tests/autotools/autoconvert/unit/test_convert_text.py +93 -0
  52. open_autotools-0.0.5/tests/autotools/autoconvert/unit/test_convert_video.py +60 -0
  53. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autoip/test_autoip_core.py +150 -25
  54. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autoip/test_autoip_integration.py +12 -5
  55. open_autotools-0.0.5/tests/autotools/autonote/__init__.py +0 -0
  56. open_autotools-0.0.5/tests/autotools/autonote/conftest.py +29 -0
  57. open_autotools-0.0.5/tests/autotools/autonote/test_autonote_core.py +177 -0
  58. open_autotools-0.0.5/tests/autotools/autonote/test_autonote_integration.py +210 -0
  59. open_autotools-0.0.5/tests/autotools/autotest/__init__.py +0 -0
  60. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autotest/test_autotest_core.py +16 -13
  61. open_autotools-0.0.5/tests/autotools/autotodo/__init__.py +0 -0
  62. open_autotools-0.0.5/tests/autotools/autotodo/conftest.py +41 -0
  63. open_autotools-0.0.5/tests/autotools/autotodo/test_autotodo_coverage.py +421 -0
  64. open_autotools-0.0.5/tests/autotools/autotodo/test_autotodo_file_operations.py +29 -0
  65. open_autotools-0.0.5/tests/autotools/autotodo/test_autotodo_integration.py +295 -0
  66. open_autotools-0.0.5/tests/autotools/autotodo/test_autotodo_operations.py +213 -0
  67. open_autotools-0.0.5/tests/autotools/autotodo/test_autotodo_sections.py +827 -0
  68. open_autotools-0.0.5/tests/autotools/autotodo/test_autotodo_tasks.py +680 -0
  69. open_autotools-0.0.5/tests/autotools/autotodo/test_autotodo_utils.py +217 -0
  70. open_autotools-0.0.5/tests/autotools/autounit/__init__.py +0 -0
  71. open_autotools-0.0.5/tests/autotools/autounit/test_autounit_core.py +215 -0
  72. open_autotools-0.0.5/tests/autotools/autounit/test_autounit_integration.py +136 -0
  73. open_autotools-0.0.5/tests/autotools/autozip/__init__.py +0 -0
  74. open_autotools-0.0.5/tests/autotools/autozip/test_autozip_core.py +585 -0
  75. open_autotools-0.0.5/tests/autotools/autozip/test_autozip_integration.py +337 -0
  76. open_autotools-0.0.5/tests/autotools/utils/__init__.py +0 -0
  77. open_autotools-0.0.5/tests/autotools/utils/test_commands_discovery.py +126 -0
  78. open_autotools-0.0.5/tests/autotools/utils/test_smoke.py +801 -0
  79. open_autotools-0.0.5/tests/autotools/utils/test_text.py +221 -0
  80. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/test_cli.py +174 -55
  81. open_autotools-0.0.4rc2/Open_AutoTools.egg-info/PKG-INFO +0 -91
  82. open_autotools-0.0.4rc2/Open_AutoTools.egg-info/SOURCES.txt +0 -57
  83. open_autotools-0.0.4rc2/Open_AutoTools.egg-info/entry_points.txt +0 -6
  84. open_autotools-0.0.4rc2/PKG-INFO +0 -91
  85. open_autotools-0.0.4rc2/README.md +0 -43
  86. open_autotools-0.0.4rc2/autotools/autocaps/commands.py +0 -13
  87. open_autotools-0.0.4rc2/autotools/autolower/commands.py +0 -13
  88. open_autotools-0.0.4rc2/autotools/utils/commands.py +0 -13
  89. open_autotools-0.0.4rc2/autotools/utils/text.py +0 -16
  90. open_autotools-0.0.4rc2/tests/autotools/utils/test_text.py +0 -93
  91. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/LICENSE +0 -0
  92. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/MANIFEST.in +0 -0
  93. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/Open_AutoTools.egg-info/dependency_links.txt +0 -0
  94. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/Open_AutoTools.egg-info/top_level.txt +0 -0
  95. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/__init__.py +0 -0
  96. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autocaps/__init__.py +0 -0
  97. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autocaps/core.py +0 -0
  98. {open_autotools-0.0.4rc2/autotools/autolower → open_autotools-0.0.5/autotools/autocolor}/__init__.py +0 -0
  99. {open_autotools-0.0.4rc2/tests → open_autotools-0.0.5/autotools/autoconvert}/__init__.py +0 -0
  100. {open_autotools-0.0.4rc2/tests/autotools/autotest → open_autotools-0.0.5/autotools/autoconvert/conversion}/__init__.py +0 -0
  101. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autoip/__init__.py +0 -0
  102. {open_autotools-0.0.4rc2/tests/autotools/utils → open_autotools-0.0.5/autotools/autolower}/__init__.py +0 -0
  103. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autolower/core.py +0 -0
  104. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autopassword/__init__.py +0 -0
  105. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autopassword/core.py +0 -0
  106. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/autotest/__init__.py +0 -0
  107. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/utils/__init__.py +0 -0
  108. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/utils/loading.py +0 -0
  109. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/utils/performance.py +0 -0
  110. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/utils/requirements.py +0 -0
  111. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/utils/updates.py +0 -0
  112. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/autotools/utils/version.py +0 -0
  113. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/pyproject.toml +0 -0
  114. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/setup.cfg +0 -0
  115. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autocaps/__init__.py +0 -0
  116. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autocaps/test_autocaps_core.py +0 -0
  117. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autocaps/test_autocaps_integration.py +0 -0
  118. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autoip/__init__.py +0 -0
  119. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autolower/__init__.py +0 -0
  120. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autolower/test_autolower_core.py +0 -0
  121. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autolower/test_autolower_integration.py +0 -0
  122. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autopassword/test_autopassword_core.py +0 -0
  123. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/autopassword/test_autopassword_integration.py +0 -0
  124. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/utils/test_performance.py +0 -0
  125. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/utils/test_requirements.py +0 -0
  126. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/utils/test_updates.py +0 -0
  127. {open_autotools-0.0.4rc2 → open_autotools-0.0.5}/tests/autotools/utils/test_version.py +0 -0
@@ -0,0 +1,114 @@
1
+ Metadata-Version: 2.4
2
+ Name: Open-AutoTools
3
+ Version: 0.0.5
4
+ Summary: A suite of automated tools accessible via CLI with a simple `autotools` command
5
+ Home-page: https://github.com/BabylooPro/Open-AutoTools
6
+ Author: BabylooPro
7
+ Author-email: maxremy.dev@gmail.com
8
+ License: MIT
9
+ Project-URL: Bug Tracker, https://github.com/BabylooPro/Open-AutoTools/issues
10
+ Classifier: Programming Language :: Python :: 3.10
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
14
+ Classifier: Programming Language :: Python :: 3.14
15
+ Classifier: Operating System :: OS Independent
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: click>=8.1.3
20
+ Requires-Dist: requests>=2.31.0
21
+ Requires-Dist: python-dotenv>=1.0.0
22
+ Requires-Dist: packaging>=23.0
23
+ Requires-Dist: halo>=0.0.31
24
+ Requires-Dist: pyperclip>=1.8.2
25
+ Requires-Dist: speedtest-cli>=2.1.3
26
+ Requires-Dist: psutil>=5.9.0
27
+ Requires-Dist: cryptography>=42.0.2
28
+ Requires-Dist: Pillow>=10.0.0
29
+ Requires-Dist: pydub>=0.25.1
30
+ Requires-Dist: moviepy>=1.0.3
31
+ Requires-Dist: pint>=0.23
32
+ Provides-Extra: dev
33
+ Requires-Dist: build>=1.4.0; extra == "dev"
34
+ Requires-Dist: wheel>=0.45.1; extra == "dev"
35
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
36
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
37
+ Requires-Dist: pytest-sugar>=1.0.0; extra == "dev"
38
+ Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
39
+ Requires-Dist: pytest-timeout>=2.2.0; extra == "dev"
40
+ Provides-Extra: test
41
+ Requires-Dist: build>=1.4.0; extra == "test"
42
+ Requires-Dist: wheel>=0.45.1; extra == "test"
43
+ Requires-Dist: pytest>=7.4.0; extra == "test"
44
+ Requires-Dist: pytest-cov>=4.1.0; extra == "test"
45
+ Requires-Dist: pytest-sugar>=1.0.0; extra == "test"
46
+ Requires-Dist: pytest-xdist>=3.5.0; extra == "test"
47
+ Requires-Dist: pytest-timeout>=2.2.0; extra == "test"
48
+ Dynamic: author
49
+ Dynamic: author-email
50
+ Dynamic: classifier
51
+ Dynamic: description
52
+ Dynamic: description-content-type
53
+ Dynamic: home-page
54
+ Dynamic: license
55
+ Dynamic: license-file
56
+ Dynamic: project-url
57
+ Dynamic: provides-extra
58
+ Dynamic: requires-dist
59
+ Dynamic: requires-python
60
+ Dynamic: summary
61
+
62
+ # OPEN-AUTOTOOLS
63
+
64
+ [PYPI_BADGE]: https://badge.fury.io/py/Open-AutoTools.svg
65
+ [PYPI_URL]: https://pypi.org/project/Open-AutoTools/
66
+ [PYTHON_BADGE]: https://img.shields.io/badge/Python-3.10+-blue.svg
67
+ [PYTHON_URL]: https://www.python.org/downloads/
68
+ [CHANGELOG_BADGE]: https://img.shields.io/badge/CHANGELOG-red.svg
69
+ [CHANGELOG_URL]: CHANGELOG.md
70
+ [TODO_BADGE]: https://img.shields.io/badge/TODO-purple.svg
71
+ [TODO_URL]: TODO.md
72
+
73
+ [![PyPI][PYPI_BADGE]][PYPI_URL] [![Python][PYTHON_BADGE]][PYTHON_URL] [![CHANGELOG][CHANGELOG_BADGE]][CHANGELOG_URL] [![TODO][TODO_BADGE]][TODO_URL]
74
+
75
+ Python CLI toolkit for everyday developer tasks. Boost productivity directly from your terminal.
76
+
77
+ https://github.com/user-attachments/assets/f959327b-b4ae-481d-8be0-c8957fb6ad36
78
+
79
+ ## Quick Install
80
+
81
+ ```bash
82
+ pip install open-autotools
83
+ ```
84
+
85
+ - **Platform**: Windows 10/11 ✓ | macOS ✓ | Linux ✓
86
+ - **Python**: 3.10 | 3.11 | 3.12 | 3.13 | 3.14
87
+
88
+ See [Installation Guide](docs/installation.md) for more details.
89
+
90
+ ## Tools
91
+
92
+ - **[AutoCaps](docs/tools/autocaps.md)** - Convert text to uppercase
93
+ - **[AutoLower](docs/tools/autolower.md)** - Convert text to lowercase
94
+ - **[AutoPassword](docs/tools/autopassword.md)** - Generate secure passwords and encryption keys
95
+ - **[AutoIP](docs/tools/autoip.md)** - Display network information and diagnostics
96
+ - **[AutoConvert](docs/tools/autoconvert.md)** - Convert text, images, audio, and video between formats
97
+ - **[AutoColor](docs/tools/autocolor.md)** - Convert color codes between different formats (hex, RGB, HSL, etc)
98
+ - **[AutoUnit](docs/tools/autounit.md)** - Convert measurement units (meters to feet, liters to gallons, etc)
99
+ - **[AutoZip](docs/tools/autozip.md)** - Compress files and directories into various archive formats (ZIP, TAR.GZ, TAR.BZ2, TAR.XZ, TAR)
100
+ - **[AutoTodo](docs/tools/autotodo.md)** - Create and manage a simple task list in a Markdown file
101
+ - **[AutoNote](docs/tools/autonote.md)** - Takes quick notes and saves them to a Markdown file
102
+ - **[Test Suite](docs/tools/autotest.md)** - Run the test suite (development only)
103
+
104
+ ## Documentation
105
+
106
+ - [Installation](docs/installation.md) - Install the CLI and verify your setup
107
+ - [Development](docs/development.md) - Dev environment, tooling, and contribution workflow
108
+ - [Testing](docs/testing.md) - Run tests, install test deps, and check coverage
109
+ - [Performance](docs/performance.md) - Performance metrics: what’s collected and how to enable them
110
+ - [Docker Support](docs/docker.md) - Run the toolkit and tests in Docker
111
+
112
+ ## License
113
+
114
+ MIT - see [LICENSE](LICENSE).
@@ -0,0 +1,115 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ pyproject.toml
5
+ requirements.txt
6
+ setup.py
7
+ Open_AutoTools.egg-info/PKG-INFO
8
+ Open_AutoTools.egg-info/SOURCES.txt
9
+ Open_AutoTools.egg-info/dependency_links.txt
10
+ Open_AutoTools.egg-info/entry_points.txt
11
+ Open_AutoTools.egg-info/requires.txt
12
+ Open_AutoTools.egg-info/top_level.txt
13
+ autotools/__init__.py
14
+ autotools/cli.py
15
+ autotools/autocaps/__init__.py
16
+ autotools/autocaps/commands.py
17
+ autotools/autocaps/core.py
18
+ autotools/autocolor/__init__.py
19
+ autotools/autocolor/commands.py
20
+ autotools/autocolor/core.py
21
+ autotools/autoconvert/__init__.py
22
+ autotools/autoconvert/commands.py
23
+ autotools/autoconvert/core.py
24
+ autotools/autoconvert/conversion/__init__.py
25
+ autotools/autoconvert/conversion/convert_audio.py
26
+ autotools/autoconvert/conversion/convert_image.py
27
+ autotools/autoconvert/conversion/convert_text.py
28
+ autotools/autoconvert/conversion/convert_video.py
29
+ autotools/autoip/__init__.py
30
+ autotools/autoip/commands.py
31
+ autotools/autoip/core.py
32
+ autotools/autolower/__init__.py
33
+ autotools/autolower/commands.py
34
+ autotools/autolower/core.py
35
+ autotools/autonote/__init__.py
36
+ autotools/autonote/commands.py
37
+ autotools/autonote/core.py
38
+ autotools/autopassword/__init__.py
39
+ autotools/autopassword/commands.py
40
+ autotools/autopassword/core.py
41
+ autotools/autotest/__init__.py
42
+ autotools/autotest/commands.py
43
+ autotools/autotodo/__init__.py
44
+ autotools/autotodo/commands.py
45
+ autotools/autotodo/core.py
46
+ autotools/autounit/__init__.py
47
+ autotools/autounit/commands.py
48
+ autotools/autounit/core.py
49
+ autotools/autozip/__init__.py
50
+ autotools/autozip/commands.py
51
+ autotools/autozip/core.py
52
+ autotools/utils/__init__.py
53
+ autotools/utils/commands.py
54
+ autotools/utils/loading.py
55
+ autotools/utils/performance.py
56
+ autotools/utils/requirements.py
57
+ autotools/utils/smoke.py
58
+ autotools/utils/text.py
59
+ autotools/utils/updates.py
60
+ autotools/utils/version.py
61
+ tests/__init__.py
62
+ tests/test_cli.py
63
+ tests/autotools/autocaps/__init__.py
64
+ tests/autotools/autocaps/test_autocaps_core.py
65
+ tests/autotools/autocaps/test_autocaps_integration.py
66
+ tests/autotools/autocolor/__init__.py
67
+ tests/autotools/autocolor/test_autocolor_core.py
68
+ tests/autotools/autocolor/test_autocolor_integration.py
69
+ tests/autotools/autoconvert/__init__.py
70
+ tests/autotools/autoconvert/conftest.py
71
+ tests/autotools/autoconvert/integration/__init__.py
72
+ tests/autotools/autoconvert/integration/test_convert_commands.py
73
+ tests/autotools/autoconvert/unit/__init__.py
74
+ tests/autotools/autoconvert/unit/test_convert_audio.py
75
+ tests/autotools/autoconvert/unit/test_convert_core.py
76
+ tests/autotools/autoconvert/unit/test_convert_image.py
77
+ tests/autotools/autoconvert/unit/test_convert_text.py
78
+ tests/autotools/autoconvert/unit/test_convert_video.py
79
+ tests/autotools/autoip/__init__.py
80
+ tests/autotools/autoip/test_autoip_core.py
81
+ tests/autotools/autoip/test_autoip_integration.py
82
+ tests/autotools/autolower/__init__.py
83
+ tests/autotools/autolower/test_autolower_core.py
84
+ tests/autotools/autolower/test_autolower_integration.py
85
+ tests/autotools/autonote/__init__.py
86
+ tests/autotools/autonote/conftest.py
87
+ tests/autotools/autonote/test_autonote_core.py
88
+ tests/autotools/autonote/test_autonote_integration.py
89
+ tests/autotools/autopassword/test_autopassword_core.py
90
+ tests/autotools/autopassword/test_autopassword_integration.py
91
+ tests/autotools/autotest/__init__.py
92
+ tests/autotools/autotest/test_autotest_core.py
93
+ tests/autotools/autotodo/__init__.py
94
+ tests/autotools/autotodo/conftest.py
95
+ tests/autotools/autotodo/test_autotodo_coverage.py
96
+ tests/autotools/autotodo/test_autotodo_file_operations.py
97
+ tests/autotools/autotodo/test_autotodo_integration.py
98
+ tests/autotools/autotodo/test_autotodo_operations.py
99
+ tests/autotools/autotodo/test_autotodo_sections.py
100
+ tests/autotools/autotodo/test_autotodo_tasks.py
101
+ tests/autotools/autotodo/test_autotodo_utils.py
102
+ tests/autotools/autounit/__init__.py
103
+ tests/autotools/autounit/test_autounit_core.py
104
+ tests/autotools/autounit/test_autounit_integration.py
105
+ tests/autotools/autozip/__init__.py
106
+ tests/autotools/autozip/test_autozip_core.py
107
+ tests/autotools/autozip/test_autozip_integration.py
108
+ tests/autotools/utils/__init__.py
109
+ tests/autotools/utils/test_commands_discovery.py
110
+ tests/autotools/utils/test_performance.py
111
+ tests/autotools/utils/test_requirements.py
112
+ tests/autotools/utils/test_smoke.py
113
+ tests/autotools/utils/test_text.py
114
+ tests/autotools/utils/test_updates.py
115
+ tests/autotools/utils/test_version.py
@@ -0,0 +1,12 @@
1
+ [console_scripts]
2
+ autocaps = autotools.cli:autocaps
3
+ autocolor = autotools.cli:autocolor
4
+ autoconvert = autotools.cli:autoconvert
5
+ autoip = autotools.cli:autoip
6
+ autolower = autotools.cli:autolower
7
+ autonote = autotools.cli:autonote
8
+ autopassword = autotools.cli:autopassword
9
+ autotodo = autotools.cli:autotodo
10
+ autotools = autotools.cli:cli
11
+ autounit = autotools.cli:autounit
12
+ autozip = autotools.cli:autozip
@@ -4,10 +4,13 @@ python-dotenv>=1.0.0
4
4
  packaging>=23.0
5
5
  halo>=0.0.31
6
6
  pyperclip>=1.8.2
7
- netifaces>=0.11.0
8
7
  speedtest-cli>=2.1.3
9
8
  psutil>=5.9.0
10
9
  cryptography>=42.0.2
10
+ Pillow>=10.0.0
11
+ pydub>=0.25.1
12
+ moviepy>=1.0.3
13
+ pint>=0.23
11
14
 
12
15
  [dev]
13
16
  build>=1.4.0
@@ -17,3 +20,12 @@ pytest-cov>=4.1.0
17
20
  pytest-sugar>=1.0.0
18
21
  pytest-xdist>=3.5.0
19
22
  pytest-timeout>=2.2.0
23
+
24
+ [test]
25
+ build>=1.4.0
26
+ wheel>=0.45.1
27
+ pytest>=7.4.0
28
+ pytest-cov>=4.1.0
29
+ pytest-sugar>=1.0.0
30
+ pytest-xdist>=3.5.0
31
+ pytest-timeout>=2.2.0
@@ -0,0 +1,114 @@
1
+ Metadata-Version: 2.4
2
+ Name: Open-AutoTools
3
+ Version: 0.0.5
4
+ Summary: A suite of automated tools accessible via CLI with a simple `autotools` command
5
+ Home-page: https://github.com/BabylooPro/Open-AutoTools
6
+ Author: BabylooPro
7
+ Author-email: maxremy.dev@gmail.com
8
+ License: MIT
9
+ Project-URL: Bug Tracker, https://github.com/BabylooPro/Open-AutoTools/issues
10
+ Classifier: Programming Language :: Python :: 3.10
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
14
+ Classifier: Programming Language :: Python :: 3.14
15
+ Classifier: Operating System :: OS Independent
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: click>=8.1.3
20
+ Requires-Dist: requests>=2.31.0
21
+ Requires-Dist: python-dotenv>=1.0.0
22
+ Requires-Dist: packaging>=23.0
23
+ Requires-Dist: halo>=0.0.31
24
+ Requires-Dist: pyperclip>=1.8.2
25
+ Requires-Dist: speedtest-cli>=2.1.3
26
+ Requires-Dist: psutil>=5.9.0
27
+ Requires-Dist: cryptography>=42.0.2
28
+ Requires-Dist: Pillow>=10.0.0
29
+ Requires-Dist: pydub>=0.25.1
30
+ Requires-Dist: moviepy>=1.0.3
31
+ Requires-Dist: pint>=0.23
32
+ Provides-Extra: dev
33
+ Requires-Dist: build>=1.4.0; extra == "dev"
34
+ Requires-Dist: wheel>=0.45.1; extra == "dev"
35
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
36
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
37
+ Requires-Dist: pytest-sugar>=1.0.0; extra == "dev"
38
+ Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
39
+ Requires-Dist: pytest-timeout>=2.2.0; extra == "dev"
40
+ Provides-Extra: test
41
+ Requires-Dist: build>=1.4.0; extra == "test"
42
+ Requires-Dist: wheel>=0.45.1; extra == "test"
43
+ Requires-Dist: pytest>=7.4.0; extra == "test"
44
+ Requires-Dist: pytest-cov>=4.1.0; extra == "test"
45
+ Requires-Dist: pytest-sugar>=1.0.0; extra == "test"
46
+ Requires-Dist: pytest-xdist>=3.5.0; extra == "test"
47
+ Requires-Dist: pytest-timeout>=2.2.0; extra == "test"
48
+ Dynamic: author
49
+ Dynamic: author-email
50
+ Dynamic: classifier
51
+ Dynamic: description
52
+ Dynamic: description-content-type
53
+ Dynamic: home-page
54
+ Dynamic: license
55
+ Dynamic: license-file
56
+ Dynamic: project-url
57
+ Dynamic: provides-extra
58
+ Dynamic: requires-dist
59
+ Dynamic: requires-python
60
+ Dynamic: summary
61
+
62
+ # OPEN-AUTOTOOLS
63
+
64
+ [PYPI_BADGE]: https://badge.fury.io/py/Open-AutoTools.svg
65
+ [PYPI_URL]: https://pypi.org/project/Open-AutoTools/
66
+ [PYTHON_BADGE]: https://img.shields.io/badge/Python-3.10+-blue.svg
67
+ [PYTHON_URL]: https://www.python.org/downloads/
68
+ [CHANGELOG_BADGE]: https://img.shields.io/badge/CHANGELOG-red.svg
69
+ [CHANGELOG_URL]: CHANGELOG.md
70
+ [TODO_BADGE]: https://img.shields.io/badge/TODO-purple.svg
71
+ [TODO_URL]: TODO.md
72
+
73
+ [![PyPI][PYPI_BADGE]][PYPI_URL] [![Python][PYTHON_BADGE]][PYTHON_URL] [![CHANGELOG][CHANGELOG_BADGE]][CHANGELOG_URL] [![TODO][TODO_BADGE]][TODO_URL]
74
+
75
+ Python CLI toolkit for everyday developer tasks. Boost productivity directly from your terminal.
76
+
77
+ https://github.com/user-attachments/assets/f959327b-b4ae-481d-8be0-c8957fb6ad36
78
+
79
+ ## Quick Install
80
+
81
+ ```bash
82
+ pip install open-autotools
83
+ ```
84
+
85
+ - **Platform**: Windows 10/11 ✓ | macOS ✓ | Linux ✓
86
+ - **Python**: 3.10 | 3.11 | 3.12 | 3.13 | 3.14
87
+
88
+ See [Installation Guide](docs/installation.md) for more details.
89
+
90
+ ## Tools
91
+
92
+ - **[AutoCaps](docs/tools/autocaps.md)** - Convert text to uppercase
93
+ - **[AutoLower](docs/tools/autolower.md)** - Convert text to lowercase
94
+ - **[AutoPassword](docs/tools/autopassword.md)** - Generate secure passwords and encryption keys
95
+ - **[AutoIP](docs/tools/autoip.md)** - Display network information and diagnostics
96
+ - **[AutoConvert](docs/tools/autoconvert.md)** - Convert text, images, audio, and video between formats
97
+ - **[AutoColor](docs/tools/autocolor.md)** - Convert color codes between different formats (hex, RGB, HSL, etc)
98
+ - **[AutoUnit](docs/tools/autounit.md)** - Convert measurement units (meters to feet, liters to gallons, etc)
99
+ - **[AutoZip](docs/tools/autozip.md)** - Compress files and directories into various archive formats (ZIP, TAR.GZ, TAR.BZ2, TAR.XZ, TAR)
100
+ - **[AutoTodo](docs/tools/autotodo.md)** - Create and manage a simple task list in a Markdown file
101
+ - **[AutoNote](docs/tools/autonote.md)** - Takes quick notes and saves them to a Markdown file
102
+ - **[Test Suite](docs/tools/autotest.md)** - Run the test suite (development only)
103
+
104
+ ## Documentation
105
+
106
+ - [Installation](docs/installation.md) - Install the CLI and verify your setup
107
+ - [Development](docs/development.md) - Dev environment, tooling, and contribution workflow
108
+ - [Testing](docs/testing.md) - Run tests, install test deps, and check coverage
109
+ - [Performance](docs/performance.md) - Performance metrics: what’s collected and how to enable them
110
+ - [Docker Support](docs/docker.md) - Run the toolkit and tests in Docker
111
+
112
+ ## License
113
+
114
+ MIT - see [LICENSE](LICENSE).
@@ -0,0 +1,53 @@
1
+ # OPEN-AUTOTOOLS
2
+
3
+ [PYPI_BADGE]: https://badge.fury.io/py/Open-AutoTools.svg
4
+ [PYPI_URL]: https://pypi.org/project/Open-AutoTools/
5
+ [PYTHON_BADGE]: https://img.shields.io/badge/Python-3.10+-blue.svg
6
+ [PYTHON_URL]: https://www.python.org/downloads/
7
+ [CHANGELOG_BADGE]: https://img.shields.io/badge/CHANGELOG-red.svg
8
+ [CHANGELOG_URL]: CHANGELOG.md
9
+ [TODO_BADGE]: https://img.shields.io/badge/TODO-purple.svg
10
+ [TODO_URL]: TODO.md
11
+
12
+ [![PyPI][PYPI_BADGE]][PYPI_URL] [![Python][PYTHON_BADGE]][PYTHON_URL] [![CHANGELOG][CHANGELOG_BADGE]][CHANGELOG_URL] [![TODO][TODO_BADGE]][TODO_URL]
13
+
14
+ Python CLI toolkit for everyday developer tasks. Boost productivity directly from your terminal.
15
+
16
+ https://github.com/user-attachments/assets/f959327b-b4ae-481d-8be0-c8957fb6ad36
17
+
18
+ ## Quick Install
19
+
20
+ ```bash
21
+ pip install open-autotools
22
+ ```
23
+
24
+ - **Platform**: Windows 10/11 ✓ | macOS ✓ | Linux ✓
25
+ - **Python**: 3.10 | 3.11 | 3.12 | 3.13 | 3.14
26
+
27
+ See [Installation Guide](docs/installation.md) for more details.
28
+
29
+ ## Tools
30
+
31
+ - **[AutoCaps](docs/tools/autocaps.md)** - Convert text to uppercase
32
+ - **[AutoLower](docs/tools/autolower.md)** - Convert text to lowercase
33
+ - **[AutoPassword](docs/tools/autopassword.md)** - Generate secure passwords and encryption keys
34
+ - **[AutoIP](docs/tools/autoip.md)** - Display network information and diagnostics
35
+ - **[AutoConvert](docs/tools/autoconvert.md)** - Convert text, images, audio, and video between formats
36
+ - **[AutoColor](docs/tools/autocolor.md)** - Convert color codes between different formats (hex, RGB, HSL, etc)
37
+ - **[AutoUnit](docs/tools/autounit.md)** - Convert measurement units (meters to feet, liters to gallons, etc)
38
+ - **[AutoZip](docs/tools/autozip.md)** - Compress files and directories into various archive formats (ZIP, TAR.GZ, TAR.BZ2, TAR.XZ, TAR)
39
+ - **[AutoTodo](docs/tools/autotodo.md)** - Create and manage a simple task list in a Markdown file
40
+ - **[AutoNote](docs/tools/autonote.md)** - Takes quick notes and saves them to a Markdown file
41
+ - **[Test Suite](docs/tools/autotest.md)** - Run the test suite (development only)
42
+
43
+ ## Documentation
44
+
45
+ - [Installation](docs/installation.md) - Install the CLI and verify your setup
46
+ - [Development](docs/development.md) - Dev environment, tooling, and contribution workflow
47
+ - [Testing](docs/testing.md) - Run tests, install test deps, and check coverage
48
+ - [Performance](docs/performance.md) - Performance metrics: what’s collected and how to enable them
49
+ - [Docker Support](docs/docker.md) - Run the toolkit and tests in Docker
50
+
51
+ ## License
52
+
53
+ MIT - see [LICENSE](LICENSE).
@@ -0,0 +1,34 @@
1
+ import click
2
+ from .core import autocaps_transform
3
+ from ..utils.loading import LoadingAnimation
4
+ from ..utils.updates import check_for_updates
5
+
6
+ # TOOL CATEGORY (USED BY 'autotools smoke')
7
+ TOOL_CATEGORY = 'Text'
8
+
9
+ # SMOKE TEST CASES (USED BY 'autotools smoke')
10
+ SMOKE_TESTS = [
11
+ {'name': 'basic', 'args': ['test', 'with', 'multiple', 'words']},
12
+ {'name': 'special', 'args': ['special', 'chars:', '!@#$%^&*()']},
13
+ {'name': 'mixed', 'args': ['123', 'mixed', 'WITH', 'lowercase', '456']},
14
+ {'name': 'unicode', 'args': ['áccênts', 'ànd', 'émojis', '🚀', '⭐']},
15
+ ]
16
+
17
+ # CLI COMMAND TO TRANSFORM TEXT TO UPPERCASE
18
+ @click.command()
19
+ @click.argument('text', nargs=-1)
20
+ def autocaps(text):
21
+ """
22
+ TRANSFORMS TEXT TO UPPERCASE.
23
+
24
+ \b
25
+ EXAMPLES:
26
+ autocaps hello world
27
+ autocaps "this is a test"
28
+ echo "text" | autocaps
29
+ """
30
+
31
+ with LoadingAnimation(): result = autocaps_transform(" ".join(text))
32
+ click.echo(result)
33
+ update_msg = check_for_updates()
34
+ if update_msg: click.echo(update_msg)
@@ -0,0 +1,60 @@
1
+ import click
2
+ from .core import autocolor_convert
3
+ from ..utils.loading import LoadingAnimation
4
+ from ..utils.updates import check_for_updates
5
+
6
+ # TOOL CATEGORY (USED BY 'autotools smoke')
7
+ TOOL_CATEGORY = 'Color'
8
+
9
+ # SMOKE TEST CASES (USED BY 'autotools smoke')
10
+ SMOKE_TESTS = [
11
+ {'name': 'hex-default', 'args': ['#FF5733']},
12
+ {'name': 'hex-rgb', 'args': ['#FF5733', '--format', 'rgb']},
13
+ {'name': 'rgb-hsl', 'args': ['rgb(255,87,51)', '--format', 'hsl']},
14
+ {'name': 'hsl-rgba', 'args': ['hsl(9,100%,60%)', '--format', 'rgba']},
15
+ ]
16
+
17
+ # CLI COMMAND TO CONVERT COLOR CODES BETWEEN FORMATS
18
+ @click.command()
19
+ @click.argument('color', nargs=-1)
20
+ @click.option('--format', '-f', 'output_format',
21
+ type=click.Choice(['hex', 'rgb', 'rgba', 'hsl', 'hsla'], case_sensitive=False),
22
+ default='hex', help='OUTPUT FORMAT (hex, rgb, rgba, hsl, hsla)')
23
+ def autocolor(color, output_format):
24
+ """
25
+ CONVERTS COLOR CODES BETWEEN DIFFERENT FORMATS.
26
+
27
+ \b
28
+ SUPPORTS INPUT FORMATS:
29
+ - HEX: #RRGGBB, #RRGGBBAA, #RGB
30
+ - RGB: rgb(r, g, b)
31
+ - RGBA: rgba(r, g, b, a)
32
+ - HSL: hsl(h, s%, l%)
33
+ - HSLA: hsla(h, s%, l%, a)
34
+
35
+ \b
36
+ EXAMPLES:
37
+ autocolor "#FF5733"
38
+ autocolor "rgb(255, 87, 51)" --format hsl
39
+ autocolor "hsl(9, 100%, 60%)" --format hex
40
+ autocolor "#F73" --format rgba
41
+ """
42
+
43
+ if not color:
44
+ click.echo(click.style("ERROR: COLOR ARGUMENT IS REQUIRED", fg='red'), err=True)
45
+ click.echo(click.get_current_context().get_help())
46
+ return
47
+
48
+ color_input = " ".join(color)
49
+
50
+ try:
51
+ with LoadingAnimation(): result = autocolor_convert(color_input, output_format)
52
+ click.echo(result)
53
+ update_msg = check_for_updates()
54
+ if update_msg: click.echo(update_msg)
55
+ except ValueError as e:
56
+ click.echo(click.style(f"ERROR: {str(e)}", fg='red'), err=True)
57
+ raise click.Abort()
58
+ except Exception as e:
59
+ click.echo(click.style(f"UNEXPECTED ERROR: {str(e)}", fg='red'), err=True)
60
+ raise click.Abort()
@@ -0,0 +1,99 @@
1
+ import re
2
+ import colorsys
3
+ import pyperclip
4
+
5
+ # CONVERTS HEX COLOR TO RGB TUPLE
6
+ def _hex_to_rgb(hex_color):
7
+ hex_color = hex_color.lstrip('#')
8
+ if len(hex_color) == 3:
9
+ hex_color = ''.join([c * 2 for c in hex_color])
10
+ if len(hex_color) == 6:
11
+ return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
12
+ elif len(hex_color) == 8:
13
+ rgb = tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
14
+ alpha = int(hex_color[6:8], 16) / 255.0
15
+ return (*rgb, alpha)
16
+ raise ValueError(f"INVALID HEX COLOR: {hex_color}")
17
+
18
+ # CONVERTS RGB TUPLE TO HEX
19
+ def _rgb_to_hex(r, g, b, alpha=None):
20
+ hex_color = f"#{r:02x}{g:02x}{b:02x}"
21
+ if alpha is not None: hex_color += f"{int(alpha * 255):02x}"
22
+ return hex_color.upper()
23
+
24
+ # PARSES RGB/RGBA STRING
25
+ def _parse_rgb(rgb_str):
26
+ match = re.match(r'rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)', rgb_str.lower())
27
+ if not match:
28
+ raise ValueError(f"INVALID RGB/RGBA FORMAT: {rgb_str}")
29
+ r, g, b = int(match.group(1)), int(match.group(2)), int(match.group(3))
30
+ alpha = float(match.group(4)) if match.group(4) else None
31
+ if alpha is not None and alpha > 1:
32
+ alpha = alpha / 255.0
33
+ return (r, g, b, alpha) if alpha is not None else (r, g, b)
34
+
35
+ # PARSES HSL/HSLA STRING
36
+ def _parse_hsl(hsl_str):
37
+ match = re.match(r'hsla?\((\d+),\s*(\d+)%,\s*(\d+)%(?:,\s*([\d.]+))?\)', hsl_str.lower())
38
+ if not match:
39
+ raise ValueError(f"INVALID HSL/HSLA FORMAT: {hsl_str}")
40
+ h = int(match.group(1)) / 360.0
41
+ s = int(match.group(2)) / 100.0
42
+ l = int(match.group(3)) / 100.0
43
+ alpha = float(match.group(4)) if match.group(4) else None
44
+ return (h, s, l, alpha) if alpha is not None else (h, s, l)
45
+
46
+ # PARSES INPUT COLOR AND RETURNS RGB VALUES WITH ALPHA
47
+ def _parse_color_input(color_input):
48
+ if color_input.startswith('#'):
49
+ rgb_result = _hex_to_rgb(color_input)
50
+ return rgb_result if len(rgb_result) == 4 else (*rgb_result, None)
51
+ elif color_input.startswith('rgb'):
52
+ rgb_result = _parse_rgb(color_input)
53
+ return rgb_result if len(rgb_result) == 4 else (*rgb_result, None)
54
+ elif color_input.startswith('hsl'):
55
+ hsl_result = _parse_hsl(color_input)
56
+ if len(hsl_result) == 4:
57
+ h, s, l, alpha = hsl_result
58
+ else:
59
+ h, s, l = hsl_result
60
+ alpha = None
61
+ r, g, b = [int(c * 255) for c in colorsys.hls_to_rgb(h, l, s)]
62
+ return (r, g, b, alpha)
63
+ raise ValueError(f"UNSUPPORTED COLOR FORMAT: {color_input}")
64
+
65
+ # CONVERTS RGB TO HSL VALUES
66
+ def _rgb_to_hsl_values(r, g, b):
67
+ h, l, s = colorsys.rgb_to_hls(r / 255.0, g / 255.0, b / 255.0)
68
+ return (int(h * 360), int(s * 100), int(l * 100))
69
+
70
+ # FORMATS OUTPUT COLOR BASED ON FORMAT TYPE
71
+ def _format_output(r, g, b, alpha, output_format):
72
+ if output_format == 'hex':
73
+ return _rgb_to_hex(r, g, b, alpha)
74
+ elif output_format == 'rgb':
75
+ return f"rgb({r}, {g}, {b})"
76
+ elif output_format == 'rgba':
77
+ alpha = alpha if alpha is not None else 1.0
78
+ return f"rgba({r}, {g}, {b}, {alpha:.2f})"
79
+ elif output_format == 'hsl':
80
+ h, s, l = _rgb_to_hsl_values(r, g, b)
81
+ return f"hsl({h}, {s}%, {l}%)"
82
+ elif output_format == 'hsla':
83
+ alpha = alpha if alpha is not None else 1.0
84
+ h, s, l = _rgb_to_hsl_values(r, g, b)
85
+ return f"hsla({h}, {s}%, {l}%, {alpha:.2f})"
86
+ raise ValueError(f"UNSUPPORTED OUTPUT FORMAT: {output_format}")
87
+
88
+ # CONVERTS COLOR CODE TO DIFFERENT FORMATS
89
+ def autocolor_convert(color_input, output_format='hex'):
90
+ color_input = color_input.strip()
91
+ output_format = output_format.lower()
92
+
93
+ r, g, b, alpha = _parse_color_input(color_input)
94
+ result = _format_output(r, g, b, alpha, output_format)
95
+
96
+ try: pyperclip.copy(result)
97
+ except pyperclip.PyperclipException: pass
98
+
99
+ return result