log21 2.10.2__tar.gz → 3.0.1__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 (30) hide show
  1. {log21-2.10.2 → log21-3.0.1}/PKG-INFO +98 -27
  2. log21-2.10.2/src/log21.egg-info/PKG-INFO → log21-3.0.1/README.md +85 -39
  3. {log21-2.10.2 → log21-3.0.1}/pyproject.toml +22 -30
  4. {log21-2.10.2 → log21-3.0.1}/src/log21/__init__.py +121 -102
  5. log21-3.0.1/src/log21/_argparse.py +2690 -0
  6. log21-3.0.1/src/log21/_module_helper.py +22 -0
  7. log21-2.10.2/src/log21/Argparse.py → log21-3.0.1/src/log21/argparse.py +167 -142
  8. log21-2.10.2/src/log21/Argumentify.py → log21-3.0.1/src/log21/argumentify.py +63 -57
  9. log21-2.10.2/src/log21/Colors.py → log21-3.0.1/src/log21/colors.py +11 -12
  10. log21-3.0.1/src/log21/crash_reporter/__init__.py +17 -0
  11. log21-2.10.2/src/log21/CrashReporter/Formatters.py → log21-3.0.1/src/log21/crash_reporter/formatters.py +6 -2
  12. log21-2.10.2/src/log21/CrashReporter/Reporters.py → log21-3.0.1/src/log21/crash_reporter/reporters.py +43 -41
  13. log21-2.10.2/src/log21/FileHandler.py → log21-3.0.1/src/log21/file_handler.py +12 -9
  14. log21-2.10.2/src/log21/Formatters.py → log21-3.0.1/src/log21/formatters.py +41 -46
  15. log21-2.10.2/src/log21/Levels.py → log21-3.0.1/src/log21/levels.py +1 -1
  16. log21-2.10.2/src/log21/Logger.py → log21-3.0.1/src/log21/logger.py +53 -35
  17. log21-2.10.2/src/log21/LoggingWindow.py → log21-3.0.1/src/log21/logging_window.py +115 -112
  18. log21-2.10.2/src/log21/Manager.py → log21-3.0.1/src/log21/manager.py +20 -12
  19. log21-2.10.2/src/log21/PPrint.py → log21-3.0.1/src/log21/pprint.py +250 -50
  20. log21-2.10.2/src/log21/ProgressBar.py → log21-3.0.1/src/log21/progress_bar.py +59 -16
  21. log21-2.10.2/src/log21/StreamHandler.py → log21-3.0.1/src/log21/stream_handler.py +20 -15
  22. log21-2.10.2/src/log21/TreePrint.py → log21-3.0.1/src/log21/tree_print.py +61 -23
  23. log21-2.10.2/LICENSE.txt +0 -201
  24. log21-2.10.2/README.md +0 -110
  25. log21-2.10.2/setup.cfg +0 -4
  26. log21-2.10.2/src/log21/CrashReporter/__init__.py +0 -13
  27. log21-2.10.2/src/log21.egg-info/SOURCES.txt +0 -25
  28. log21-2.10.2/src/log21.egg-info/dependency_links.txt +0 -1
  29. log21-2.10.2/src/log21.egg-info/requires.txt +0 -10
  30. log21-2.10.2/src/log21.egg-info/top_level.txt +0 -1
@@ -1,33 +1,27 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: log21
3
- Version: 2.10.2
4
- Summary: A simple logging package that helps you log colorized messages in Windows console.
5
- Author-email: "CodeWriter21(Mehrad Pooryoussof)" <CodeWriter21@gmail.com>
6
- License: Apache License 2.0
7
- Project-URL: Homepage, https://github.com/MPCodeWriter21/log21
8
- Project-URL: Donations, https://github.com/MPCodeWriter21/log21/blob/master/DONATE.md
9
- Project-URL: Source, https://github.com/MPCodeWriter21/log21
3
+ Version: 3.0.1
4
+ Summary: A simple logging package
10
5
  Keywords: python,log,colorize,color,logging,Python3,CodeWriter21
6
+ Author: CodeWriter21(Mehrad Pooryoussof)
7
+ Author-email: CodeWriter21(Mehrad Pooryoussof) <CodeWriter21@gmail.com>
8
+ License: Apache License 2.0
11
9
  Classifier: Intended Audience :: Developers
12
10
  Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.7
11
+ Classifier: Programming Language :: Python :: 3.9
14
12
  Classifier: Programming Language :: Python :: 3.10
15
13
  Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
16
15
  Classifier: Operating System :: Unix
17
16
  Classifier: Operating System :: Microsoft :: Windows
18
17
  Classifier: Operating System :: MacOS :: MacOS X
19
- Requires-Python: >=3.8
20
- Description-Content-Type: text/markdown
21
- License-File: LICENSE.txt
22
18
  Requires-Dist: webcolors
23
19
  Requires-Dist: docstring-parser
24
- Provides-Extra: dev
25
- Requires-Dist: yapf; extra == "dev"
26
- Requires-Dist: isort; extra == "dev"
27
- Requires-Dist: docformatter; extra == "dev"
28
- Requires-Dist: pylint; extra == "dev"
29
- Requires-Dist: json5; extra == "dev"
30
- Requires-Dist: pytest; extra == "dev"
20
+ Requires-Python: >=3.9
21
+ Project-URL: Donations, https://github.com/MPCodeWriter21/log21/blob/master/DONATE.md
22
+ Project-URL: Homepage, https://github.com/MPCodeWriter21/log21
23
+ Project-URL: Source, https://github.com/MPCodeWriter21/log21
24
+ Description-Content-Type: text/markdown
31
25
 
32
26
  log21
33
27
  =====
@@ -46,15 +40,15 @@ Features
46
40
 
47
41
  + Colors : The main reason for this package was to log text in the Windows console with
48
42
  the support of ANSI colors.
49
- + Argument parsing : log21's argument parser can be used like python's argparse but it
43
+ + Argument parsing : log21's argument parser can be used like python's argparse, but it
50
44
  also colorizes the output.
51
45
  + Logging : A similar logger to logging. Logger but with colorized output and other
52
46
  options such as levelname modifications. It can also decolorize the output if you want
53
47
  to log into a file.
54
48
  + Pretty printing : Have you ever wanted to colorize the output of the pprint module?
55
49
  log21's pretty printer can do that.
56
- + Tree printing : You can pass a dict or list to `log21.tree_print` function and it will
57
- print it in a tree-like structure. It's also colorized XD.
50
+ + Tree printing : You can pass a dict or list to `log21.tree_print` function, and it
51
+ will print it in a tree-like structure. It's also colorized XD.
58
52
  + ProgressBar : log21's progress bar can be used to show progress of a process in a
59
53
  beautiful way.
60
54
  + LoggingWindow : Helps you to log messages and debug your code in a window other than
@@ -97,12 +91,88 @@ Or let the pip get it using git:
97
91
  pip install git+https://github.com/MPCodeWriter21/log21
98
92
  ```
99
93
 
100
- Changes
101
- -------
94
+ Changelog
95
+ ---------
96
+
97
+ ### v3.0.1
98
+
99
+ Fix the issue with `argumentify` which would result in falsy default values to be
100
+ replaced with None.
101
+
102
+ + Example:
103
+
104
+ ```python
105
+ def main(offset: int = 0) -> None:
106
+ ...
107
+
108
+ argumentify(main)
109
+ ```
110
+
111
+ if no value is provided for `--offset`, the default will be `None` instead of `0` which
112
+ is unexpected and can lead to issues.
113
+
114
+ #### Breaking Changes
115
+
116
+ + **Internal module renaming and normalization**
117
+ + All internal modules were renamed to lowercase and, in some cases, split or
118
+ reorganized.
119
+ + Imports such as `log21.Colors`, `log21.Logger`, `log21.ProgressBar`, etc. are no
120
+ longer valid.
121
+ + Users importing from internal modules must update their imports to the new module
122
+ names.
123
+ + Public imports from `log21` remain supported.
124
+
125
+ + **Argumentify exception renames**
126
+ + Several exceptions were renamed to follow a consistent `*Error` naming convention:
127
+ + `TooFewArguments` → `TooFewArgumentsError`
128
+ + `RequiredArgument` → `RequiredArgumentError`
129
+ + `IncompatibleArguments` → `IncompatibleArgumentsError`
130
+ + Code that explicitly raises or catches these exceptions must be updated.
131
+
132
+ #### Changes
133
+
134
+ + **Crash reporter behavior improvement**
135
+ + Prevented the default file crash reporter from creating `.crash_report` files when it
136
+ is not actually used.
137
+ + Implemented using an internal `FakeModule` helper.
138
+
139
+ + **Argparse compatibility update**
140
+ + Bundled and used the Python 3.13 `argparse` implementation to ensure consistent
141
+ behavior across supported Python versions.
142
+
143
+ + **Progress bar module rename**
144
+ + Renamed the internal progress bar module to `progress_bar` for consistency with the
145
+ new naming scheme.
146
+ + This will not break the usages of `log21.progress_bar(...)` since the call
147
+ functionality was added to the module using the `FakeModule` helper.
148
+
149
+ + **Examples added and updated**
150
+ + Added new example code files.
151
+ + Updated existing examples to match the v3 API and conventions.
152
+
153
+ #### Fixes
154
+
155
+ + Resolved various linting and static-analysis issues across the codebase.
156
+ + Addressed minor compatibility issues uncovered by running linters and pre-commit hooks.
157
+ + Resolved errors occurring in environments with newer versions of argparse.
158
+
159
+ #### Internal and Maintenance Changes
160
+
161
+ + Migrated the build system configuration to `uv`.
162
+ + Updated Python version classifiers and set the supported Python version to 3.9+.
163
+ + Added `vermin` to the pre-commit configuration.
164
+ + Updated `.gitignore`, license metadata, and tool configurations.
165
+ + Silenced and resolved a large number of linter warnings.
166
+ + General internal refactoring with no intended user-visible behavioral changes.
102
167
 
103
- ### 2.10.1
168
+ #### Notes
104
169
 
105
- + Updated the Argparse module to be usable with python 3.12.3.
170
+ + There are **no intentional behavioral changes** in logging output, argument parsing
171
+ logic, or UI components.
172
+ + Most projects will require **minimal or no changes** unless they depend on internal
173
+ modules or renamed exceptions.
174
+ + See [MIGRATION-V2-V3.md](https://github.com/MPCodeWriter21/log21/blob/master/MIGRATION-V2-V3.md)
175
+ for detailed upgrade instructions.
106
176
 
107
177
  [Full CHANGELOG](https://github.com/MPCodeWriter21/log21/blob/master/CHANGELOG.md)
108
178
 
@@ -132,7 +202,8 @@ In order to support this project you can donate some crypto of your choice 8D
132
202
 
133
203
  [Donate Addresses](https://github.com/MPCodeWriter21/log21/blob/master/DONATE.md)
134
204
 
135
- Or if you can't, give [this project](https://github.com/MPCodeWriter21/log21) a star on GitHub :)
205
+ Or if you can't, give [this project](https://github.com/MPCodeWriter21/log21) a star on
206
+ GitHub :)
136
207
 
137
208
  References
138
209
  ----------
@@ -1,34 +1,3 @@
1
- Metadata-Version: 2.1
2
- Name: log21
3
- Version: 2.10.2
4
- Summary: A simple logging package that helps you log colorized messages in Windows console.
5
- Author-email: "CodeWriter21(Mehrad Pooryoussof)" <CodeWriter21@gmail.com>
6
- License: Apache License 2.0
7
- Project-URL: Homepage, https://github.com/MPCodeWriter21/log21
8
- Project-URL: Donations, https://github.com/MPCodeWriter21/log21/blob/master/DONATE.md
9
- Project-URL: Source, https://github.com/MPCodeWriter21/log21
10
- Keywords: python,log,colorize,color,logging,Python3,CodeWriter21
11
- Classifier: Intended Audience :: Developers
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.7
14
- Classifier: Programming Language :: Python :: 3.10
15
- Classifier: Programming Language :: Python :: 3.11
16
- Classifier: Operating System :: Unix
17
- Classifier: Operating System :: Microsoft :: Windows
18
- Classifier: Operating System :: MacOS :: MacOS X
19
- Requires-Python: >=3.8
20
- Description-Content-Type: text/markdown
21
- License-File: LICENSE.txt
22
- Requires-Dist: webcolors
23
- Requires-Dist: docstring-parser
24
- Provides-Extra: dev
25
- Requires-Dist: yapf; extra == "dev"
26
- Requires-Dist: isort; extra == "dev"
27
- Requires-Dist: docformatter; extra == "dev"
28
- Requires-Dist: pylint; extra == "dev"
29
- Requires-Dist: json5; extra == "dev"
30
- Requires-Dist: pytest; extra == "dev"
31
-
32
1
  log21
33
2
  =====
34
3
 
@@ -46,15 +15,15 @@ Features
46
15
 
47
16
  + Colors : The main reason for this package was to log text in the Windows console with
48
17
  the support of ANSI colors.
49
- + Argument parsing : log21's argument parser can be used like python's argparse but it
18
+ + Argument parsing : log21's argument parser can be used like python's argparse, but it
50
19
  also colorizes the output.
51
20
  + Logging : A similar logger to logging. Logger but with colorized output and other
52
21
  options such as levelname modifications. It can also decolorize the output if you want
53
22
  to log into a file.
54
23
  + Pretty printing : Have you ever wanted to colorize the output of the pprint module?
55
24
  log21's pretty printer can do that.
56
- + Tree printing : You can pass a dict or list to `log21.tree_print` function and it will
57
- print it in a tree-like structure. It's also colorized XD.
25
+ + Tree printing : You can pass a dict or list to `log21.tree_print` function, and it
26
+ will print it in a tree-like structure. It's also colorized XD.
58
27
  + ProgressBar : log21's progress bar can be used to show progress of a process in a
59
28
  beautiful way.
60
29
  + LoggingWindow : Helps you to log messages and debug your code in a window other than
@@ -97,12 +66,88 @@ Or let the pip get it using git:
97
66
  pip install git+https://github.com/MPCodeWriter21/log21
98
67
  ```
99
68
 
100
- Changes
101
- -------
69
+ Changelog
70
+ ---------
71
+
72
+ ### v3.0.1
73
+
74
+ Fix the issue with `argumentify` which would result in falsy default values to be
75
+ replaced with None.
76
+
77
+ + Example:
78
+
79
+ ```python
80
+ def main(offset: int = 0) -> None:
81
+ ...
82
+
83
+ argumentify(main)
84
+ ```
85
+
86
+ if no value is provided for `--offset`, the default will be `None` instead of `0` which
87
+ is unexpected and can lead to issues.
88
+
89
+ #### Breaking Changes
90
+
91
+ + **Internal module renaming and normalization**
92
+ + All internal modules were renamed to lowercase and, in some cases, split or
93
+ reorganized.
94
+ + Imports such as `log21.Colors`, `log21.Logger`, `log21.ProgressBar`, etc. are no
95
+ longer valid.
96
+ + Users importing from internal modules must update their imports to the new module
97
+ names.
98
+ + Public imports from `log21` remain supported.
99
+
100
+ + **Argumentify exception renames**
101
+ + Several exceptions were renamed to follow a consistent `*Error` naming convention:
102
+ + `TooFewArguments` → `TooFewArgumentsError`
103
+ + `RequiredArgument` → `RequiredArgumentError`
104
+ + `IncompatibleArguments` → `IncompatibleArgumentsError`
105
+ + Code that explicitly raises or catches these exceptions must be updated.
106
+
107
+ #### Changes
108
+
109
+ + **Crash reporter behavior improvement**
110
+ + Prevented the default file crash reporter from creating `.crash_report` files when it
111
+ is not actually used.
112
+ + Implemented using an internal `FakeModule` helper.
113
+
114
+ + **Argparse compatibility update**
115
+ + Bundled and used the Python 3.13 `argparse` implementation to ensure consistent
116
+ behavior across supported Python versions.
117
+
118
+ + **Progress bar module rename**
119
+ + Renamed the internal progress bar module to `progress_bar` for consistency with the
120
+ new naming scheme.
121
+ + This will not break the usages of `log21.progress_bar(...)` since the call
122
+ functionality was added to the module using the `FakeModule` helper.
123
+
124
+ + **Examples added and updated**
125
+ + Added new example code files.
126
+ + Updated existing examples to match the v3 API and conventions.
127
+
128
+ #### Fixes
129
+
130
+ + Resolved various linting and static-analysis issues across the codebase.
131
+ + Addressed minor compatibility issues uncovered by running linters and pre-commit hooks.
132
+ + Resolved errors occurring in environments with newer versions of argparse.
133
+
134
+ #### Internal and Maintenance Changes
135
+
136
+ + Migrated the build system configuration to `uv`.
137
+ + Updated Python version classifiers and set the supported Python version to 3.9+.
138
+ + Added `vermin` to the pre-commit configuration.
139
+ + Updated `.gitignore`, license metadata, and tool configurations.
140
+ + Silenced and resolved a large number of linter warnings.
141
+ + General internal refactoring with no intended user-visible behavioral changes.
102
142
 
103
- ### 2.10.1
143
+ #### Notes
104
144
 
105
- + Updated the Argparse module to be usable with python 3.12.3.
145
+ + There are **no intentional behavioral changes** in logging output, argument parsing
146
+ logic, or UI components.
147
+ + Most projects will require **minimal or no changes** unless they depend on internal
148
+ modules or renamed exceptions.
149
+ + See [MIGRATION-V2-V3.md](https://github.com/MPCodeWriter21/log21/blob/master/MIGRATION-V2-V3.md)
150
+ for detailed upgrade instructions.
106
151
 
107
152
  [Full CHANGELOG](https://github.com/MPCodeWriter21/log21/blob/master/CHANGELOG.md)
108
153
 
@@ -132,7 +177,8 @@ In order to support this project you can donate some crypto of your choice 8D
132
177
 
133
178
  [Donate Addresses](https://github.com/MPCodeWriter21/log21/blob/master/DONATE.md)
134
179
 
135
- Or if you can't, give [this project](https://github.com/MPCodeWriter21/log21) a star on GitHub :)
180
+ Or if you can't, give [this project](https://github.com/MPCodeWriter21/log21) a star on
181
+ GitHub :)
136
182
 
137
183
  References
138
184
  ----------
@@ -1,23 +1,20 @@
1
- [build-system]
2
- requires = ["setuptools>=61.0.0", "wheel"]
3
- build-backend = "setuptools.build_meta"
4
-
5
1
  [project]
6
2
  name = "log21"
7
3
  authors = [
8
4
  {name = "CodeWriter21(Mehrad Pooryoussof)", email = "CodeWriter21@gmail.com"}
9
5
  ]
10
- description = "A simple logging package that helps you log colorized messages in Windows console."
6
+ description = "A simple logging package"
11
7
  readme = {file = "README.md", content-type = "text/markdown"}
12
- requires-python = ">=3.8"
8
+ requires-python = ">=3.9"
13
9
  keywords = ['python', 'log', 'colorize', 'color', 'logging', 'Python3', 'CodeWriter21']
14
10
  license = {text = "Apache License 2.0"}
15
11
  classifiers = [
16
12
  "Intended Audience :: Developers",
17
13
  "Programming Language :: Python :: 3",
18
- "Programming Language :: Python :: 3.7",
14
+ "Programming Language :: Python :: 3.9",
19
15
  "Programming Language :: Python :: 3.10",
20
16
  "Programming Language :: Python :: 3.11",
17
+ "Programming Language :: Python :: 3.12",
21
18
  "Operating System :: Unix",
22
19
  "Operating System :: Microsoft :: Windows",
23
20
  "Operating System :: MacOS :: MacOS X"
@@ -26,46 +23,41 @@ dependencies = [
26
23
  "webcolors",
27
24
  "docstring-parser"
28
25
  ]
29
- version = "2.10.2"
26
+ version = "3.0.1"
30
27
 
31
- [tool.setuptools.packages.find]
32
- where = ["src"]
28
+ [build-system]
29
+ requires = ["uv_build>=0.8.15,<0.9.0"]
30
+ build-backend = "uv_build"
33
31
 
34
32
  [project.urls]
35
33
  Homepage = "https://github.com/MPCodeWriter21/log21"
36
34
  Donations = "https://github.com/MPCodeWriter21/log21/blob/master/DONATE.md"
37
35
  Source = "https://github.com/MPCodeWriter21/log21"
38
36
 
39
- [project.optional-dependencies]
40
- dev = ["yapf", "isort", "docformatter", "pylint", "json5", "pytest"]
41
-
42
- [tool.pylint.messages_control]
43
- max-line-length = 88
44
-
45
- disable = [
46
- "too-few-public-methods",
47
- "too-many-arguments",
48
- "protected-access",
49
- "too-many-locals",
50
- "fixme",
51
- ]
52
-
53
- [tool.pylint.design]
54
- max-returns = 8
55
-
56
37
  [tool.yapf]
57
38
  column_limit = 88
58
39
  split_before_dot = true
59
- split_before_first_argument = true
60
40
  dedent_closing_brackets = true
41
+ split_before_first_argument = true
61
42
 
62
43
  [tool.isort]
63
44
  line_length = 88
64
- combine_as_imports = true
65
- length_sort = true
66
45
  order_by_type = true
46
+ length_sort = true
47
+ combine_as_imports = true
67
48
 
68
49
  [tool.docformatter]
69
50
  recursive = true
70
51
  wrap-summaries = 88
71
52
  wrap-descriptions = 88
53
+
54
+ [tool.ruff]
55
+ show-fixes = true
56
+ exclude = ["migrations"]
57
+ target-version = "py39"
58
+ line-length = 88
59
+
60
+ [tool.ruff.lint]
61
+ extend-select = ["C4", "SIM", "TCH", "PL", "ANN", "N", "B"]
62
+ ignore = ["PLR0911", "PLR0912", "PLR0913", "PLR0914", "ANN101", "B008", "N816",
63
+ "ANN002", "ANN003", "ANN401", "N802", "PLR2004"]