bear-utils 0.8.0__tar.gz → 0.8.2__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 (109) hide show
  1. {bear_utils-0.8.0 → bear_utils-0.8.2}/.bumpversion.cfg +1 -1
  2. {bear_utils-0.8.0 → bear_utils-0.8.2}/PKG-INFO +4 -4
  3. {bear_utils-0.8.0 → bear_utils-0.8.2}/README.md +2 -2
  4. {bear_utils-0.8.0 → bear_utils-0.8.2}/pyproject.toml +2 -2
  5. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/config/settings_manager.py +1 -0
  6. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/monitoring/host_monitor.py +1 -1
  7. {bear_utils-0.8.0 → bear_utils-0.8.2}/tests/test_function_response.py +20 -24
  8. {bear_utils-0.8.0 → bear_utils-0.8.2}/tests/test_logger.py +10 -10
  9. {bear_utils-0.8.0 → bear_utils-0.8.2}/uv.lock +5 -80
  10. {bear_utils-0.8.0 → bear_utils-0.8.2}/.gitignore +0 -0
  11. {bear_utils-0.8.0 → bear_utils-0.8.2}/.python-version +0 -0
  12. {bear_utils-0.8.0 → bear_utils-0.8.2}/AGENTS.md +0 -0
  13. {bear_utils-0.8.0 → bear_utils-0.8.2}/config/coverage.ini +0 -0
  14. {bear_utils-0.8.0 → bear_utils-0.8.2}/config/default.toml +0 -0
  15. {bear_utils-0.8.0 → bear_utils-0.8.2}/config/git-changelog.toml +0 -0
  16. {bear_utils-0.8.0 → bear_utils-0.8.2}/config/pytest.ini +0 -0
  17. {bear_utils-0.8.0 → bear_utils-0.8.2}/config/ruff.toml +0 -0
  18. {bear_utils-0.8.0 → bear_utils-0.8.2}/config/vscode/launch.json +0 -0
  19. {bear_utils-0.8.0 → bear_utils-0.8.2}/config/vscode/settings.json +0 -0
  20. {bear_utils-0.8.0 → bear_utils-0.8.2}/config/vscode/tasks.json +0 -0
  21. {bear_utils-0.8.0 → bear_utils-0.8.2}/directory_structure.txt +0 -0
  22. {bear_utils-0.8.0 → bear_utils-0.8.2}/maskfile.md +0 -0
  23. {bear_utils-0.8.0 → bear_utils-0.8.2}/noxfile.py +0 -0
  24. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/__init__.py +0 -0
  25. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/__main__.py +0 -0
  26. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/_internal/__init__.py +0 -0
  27. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/_internal/cli.py +0 -0
  28. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/_internal/debug.py +0 -0
  29. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/ai/__init__.py +0 -0
  30. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/ai/ai_helpers/__init__.py +0 -0
  31. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/ai/ai_helpers/_common.py +0 -0
  32. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/ai/ai_helpers/_config.py +0 -0
  33. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/ai/ai_helpers/_parsers.py +0 -0
  34. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/ai/ai_helpers/_types.py +0 -0
  35. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/cache/__init__.py +0 -0
  36. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/cli/__init__.py +0 -0
  37. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/cli/commands.py +0 -0
  38. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/cli/prompt_helpers.py +0 -0
  39. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/cli/shell/__init__.py +0 -0
  40. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/cli/shell/_base_command.py +0 -0
  41. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/cli/shell/_base_shell.py +0 -0
  42. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/cli/shell/_common.py +0 -0
  43. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/config/__init__.py +0 -0
  44. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/config/config_manager.py +0 -0
  45. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/config/dir_manager.py +0 -0
  46. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/constants/__init__.py +0 -0
  47. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/constants/_exceptions.py +0 -0
  48. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/constants/_lazy_typing.py +0 -0
  49. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/constants/date_related.py +0 -0
  50. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/constants/logger_protocol.py +0 -0
  51. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/constants/time_related.py +0 -0
  52. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/database/__init__.py +0 -0
  53. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/database/_db_manager.py +0 -0
  54. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/events/__init__.py +0 -0
  55. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/events/events_class.py +0 -0
  56. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/events/events_module.py +0 -0
  57. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/extras/__init__.py +0 -0
  58. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/extras/_async_helpers.py +0 -0
  59. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/extras/_tools.py +0 -0
  60. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/extras/platform_utils.py +0 -0
  61. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/extras/responses/__init__.py +0 -0
  62. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/extras/responses/function_response.py +0 -0
  63. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/extras/wrappers/__init__.py +0 -0
  64. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/extras/wrappers/add_methods.py +0 -0
  65. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/__init__.py +0 -0
  66. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/file_handlers/__init__.py +0 -0
  67. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/file_handlers/_base_file_handler.py +0 -0
  68. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/file_handlers/file_handler_factory.py +0 -0
  69. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/file_handlers/json_file_handler.py +0 -0
  70. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/file_handlers/log_file_handler.py +0 -0
  71. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/file_handlers/toml_file_handler.py +0 -0
  72. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/file_handlers/txt_file_handler.py +0 -0
  73. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/file_handlers/yaml_file_handler.py +0 -0
  74. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/files/ignore_parser.py +0 -0
  75. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/graphics/__init__.py +0 -0
  76. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/graphics/bear_gradient.py +0 -0
  77. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/graphics/image_helpers.py +0 -0
  78. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/gui/__init__.py +0 -0
  79. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/gui/gui_tools/__init__.py +0 -0
  80. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/gui/gui_tools/_settings.py +0 -0
  81. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/gui/gui_tools/_types.py +0 -0
  82. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/gui/gui_tools/qt_app.py +0 -0
  83. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/gui/gui_tools/qt_color_picker.py +0 -0
  84. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/gui/gui_tools/qt_file_handler.py +0 -0
  85. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/gui/gui_tools/qt_input_dialog.py +0 -0
  86. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/__init__.py +0 -0
  87. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/_common.py +0 -0
  88. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/_console_junk.py +0 -0
  89. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/_styles.py +0 -0
  90. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/__init__.py +0 -0
  91. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_base_logger.py +0 -0
  92. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_base_logger.pyi +0 -0
  93. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_buffer_logger.py +0 -0
  94. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_console_logger.py +0 -0
  95. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_console_logger.pyi +0 -0
  96. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_file_logger.py +0 -0
  97. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_level_sin.py +0 -0
  98. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_logger.py +0 -0
  99. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_sub_logger.py +0 -0
  100. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/logger_manager/loggers/_sub_logger.pyi +0 -0
  101. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/monitoring/__init__.py +0 -0
  102. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/monitoring/_common.py +0 -0
  103. {bear_utils-0.8.0 → bear_utils-0.8.2}/src/bear_utils/time/__init__.py +0 -0
  104. {bear_utils-0.8.0 → bear_utils-0.8.2}/tests/__init__.py +0 -0
  105. {bear_utils-0.8.0 → bear_utils-0.8.2}/tests/test_add_ord_suffix.py +0 -0
  106. {bear_utils-0.8.0 → bear_utils-0.8.2}/tests/test_clipboard.py +0 -0
  107. {bear_utils-0.8.0 → bear_utils-0.8.2}/tests/test_default_shell.py +0 -0
  108. {bear_utils-0.8.0 → bear_utils-0.8.2}/tests/test_gradient.py +0 -0
  109. {bear_utils-0.8.0 → bear_utils-0.8.2}/tests/test_platform_utils.py +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 0.8.0
2
+ current_version = 0.8.2
3
3
 
4
4
  [bumpversion:file:pyproject.toml]
5
5
 
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bear-utils
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Summary: Various utilities for Bear programmers, including a rich logging utility, a disk cache, and a SQLite database wrapper amongst other things.
5
5
  Author-email: chaz <bright.lid5647@fastmail.com>
6
6
  Requires-Python: >=3.12
7
- Requires-Dist: bear-epoch-time>=1.0.1
7
+ Requires-Dist: bear-epoch-time>=1.1.1
8
8
  Requires-Dist: diskcache<6.0.0,>=5.6.3
9
9
  Requires-Dist: httpx>=0.28.1
10
10
  Requires-Dist: pathspec>=0.12.1
@@ -20,7 +20,7 @@ Requires-Dist: tinydb>=4.8.2
20
20
  Requires-Dist: toml>=0.10.2
21
21
  Description-Content-Type: text/markdown
22
22
 
23
- # Bear Utils v# Bear Utils v0.8.0
23
+ # Bear Utils v# Bear Utils v0.8.2
24
24
 
25
25
  Personal set of tools and utilities for Python projects, focusing on modularity and ease of use. This library includes components for caching, database management, logging, time handling, file operations, CLI prompts, image processing, clipboard interaction, gradient utilities, event systems, and async helpers.
26
26
 
@@ -87,7 +87,7 @@ with db.session() as session:
87
87
  The `logging` package provides an enhanced console logger using rich:
88
88
 
89
89
  ```python
90
- from bear_utils.logging import ConsoleLogger
90
+ from bear_utils.logger_manager import ConsoleLogger
91
91
 
92
92
  logger = ConsoleLogger()
93
93
  logger.info("Information message")
@@ -1,4 +1,4 @@
1
- # Bear Utils v# Bear Utils v0.8.0
1
+ # Bear Utils v# Bear Utils v0.8.2
2
2
 
3
3
  Personal set of tools and utilities for Python projects, focusing on modularity and ease of use. This library includes components for caching, database management, logging, time handling, file operations, CLI prompts, image processing, clipboard interaction, gradient utilities, event systems, and async helpers.
4
4
 
@@ -65,7 +65,7 @@ with db.session() as session:
65
65
  The `logging` package provides an enhanced console logger using rich:
66
66
 
67
67
  ```python
68
- from bear_utils.logging import ConsoleLogger
68
+ from bear_utils.logger_manager import ConsoleLogger
69
69
 
70
70
  logger = ConsoleLogger()
71
71
  logger.info("Information message")
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bear-utils"
3
- version = "0.8.0"
3
+ version = "0.8.2"
4
4
  description = "Various utilities for Bear programmers, including a rich logging utility, a disk cache, and a SQLite database wrapper amongst other things."
5
5
  authors = [{ name = "chaz", email = "bright.lid5647@fastmail.com" }]
6
6
  readme = "README.md"
@@ -17,7 +17,7 @@ dependencies = [
17
17
  "pyyaml>=6.0.2",
18
18
  "singleton-base>=1.0.5",
19
19
  "httpx>=0.28.1",
20
- "bear-epoch-time>=1.0.1",
20
+ "bear-epoch-time>=1.1.1",
21
21
  "toml>=0.10.2",
22
22
  "tinydb>=4.8.2",
23
23
  ]
@@ -27,6 +27,7 @@ class SettingsManager:
27
27
  self.cache: dict[str, Any] = {}
28
28
  file_name: str = f"{settings_name}.json"
29
29
  self.file_path: Path = Path(folder_path) / file_name if folder_path else get_config_folder() / file_name
30
+
30
31
  self.db: TinyDB = TinyDB(self.file_path, indent=4, ensure_ascii=False)
31
32
 
32
33
  atexit.register(self.close)
@@ -306,7 +306,7 @@ class HostMonitor:
306
306
  if current_cpu_samples:
307
307
  return round(sum(current_cpu_samples) / len(current_cpu_samples), 2)
308
308
  except Exception as e:
309
- print(f"Error getting CPU temperature: {e}")
309
+ self.console.error(f"Error getting CPU temperature: {e}", exc_info=True)
310
310
  return 0.0
311
311
 
312
312
  async def get_avg_mem_usage(self) -> float:
@@ -203,7 +203,7 @@ class TestSubTaskMethod:
203
203
  """Test basic sub_task functionality."""
204
204
  main_response = FunctionResponse(name="main_task")
205
205
  main_response.sub_task(name="subtask_1", content="sub content")
206
-
206
+
207
207
  assert main_response.number_of_tasks == 1
208
208
  assert main_response.content == ["subtask_1: sub content"]
209
209
  assert main_response.error == []
@@ -212,7 +212,7 @@ class TestSubTaskMethod:
212
212
  """Test sub_task with error."""
213
213
  main_response = FunctionResponse(name="main_task")
214
214
  main_response.sub_task(name="failed_subtask", error="something went wrong")
215
-
215
+
216
216
  assert main_response.number_of_tasks == 1
217
217
  assert main_response.content == []
218
218
  assert main_response.error == ["failed_subtask: something went wrong"]
@@ -221,28 +221,27 @@ class TestSubTaskMethod:
221
221
  """Test that sub_task inherits returncode from parent."""
222
222
  main_response = FunctionResponse(name="main_task", returncode=5)
223
223
  main_response.sub_task(name="subtask", content="test")
224
-
225
224
  # The sub_task should inherit the parent's returncode
226
225
  assert main_response.number_of_tasks == 1
227
226
  # Can't directly test the sub-response returncode, but the behavior should be consistent
228
-
227
+
228
+ # The sub_task should inherit the parent's returncode
229
+ assert main_response.number_of_tasks == 1
230
+ # Can't directly test the sub-response returncode, but the behavior should be consistent
231
+
229
232
  def test_sub_task_override_returncode(self):
230
233
  """Test that sub_task can override returncode."""
231
234
  main_response = FunctionResponse(name="main_task", returncode=0)
232
235
  main_response.sub_task(name="subtask", content="test", returncode=2)
233
-
236
+
234
237
  assert main_response.number_of_tasks == 1
235
238
  # The sub-task uses the overridden returncode
236
-
239
+
237
240
  def test_sub_task_with_extra_and_kwargs(self):
238
241
  """Test sub_task with extra metadata."""
239
242
  main_response = FunctionResponse(name="main_task")
240
- main_response.sub_task(
241
- name="subtask",
242
- content="test content",
243
- extra={"key": "value"}
244
- )
245
-
243
+ main_response.sub_task(name="subtask", content="test content", extra={"key": "value"})
244
+
246
245
  assert main_response.number_of_tasks == 1
247
246
  assert main_response.content == ["subtask: test content"]
248
247
  # Extra metadata gets merged into main response
@@ -253,25 +252,26 @@ class TestSubTaskMethod:
253
252
  """Test that sub_task inherits logger from parent."""
254
253
  # Create main response without logger initially
255
254
  main_response = FunctionResponse(name="main_task")
256
-
255
+
257
256
  # Add subtask - should work even without logger
258
257
  main_response.sub_task(name="subtask", content="test")
259
-
258
+
260
259
  assert main_response.number_of_tasks == 1
261
260
  assert main_response.content == ["subtask: test"]
262
261
 
263
262
  def test_sub_task_multiple_operations(self):
264
263
  """Test adding multiple sub_tasks."""
265
264
  main_response = FunctionResponse(name="batch_operation")
266
-
265
+
267
266
  # Add multiple subtasks
268
267
  main_response.sub_task(name="task1", content="completed task 1")
269
268
  main_response.sub_task(name="task2", error="task 2 failed")
270
269
  main_response.sub_task(name="task3", content="completed task 3")
271
-
270
+
272
271
  assert main_response.number_of_tasks == 3
273
272
  assert len(main_response.content) == 2 # Two successful
274
- assert len(main_response.error) == 1 # One failed
273
+ assert len(main_response.error) == 1 # One failed
274
+
275
275
  assert "task1: completed task 1" in main_response.content
276
276
  assert "task2: task 2 failed" in main_response.error
277
277
  assert "task3: completed task 3" in main_response.content
@@ -279,12 +279,9 @@ class TestSubTaskMethod:
279
279
  def test_sub_task_list_content_and_error(self):
280
280
  """Test sub_task with list content and errors."""
281
281
  main_response = FunctionResponse(name="main_task")
282
- main_response.sub_task(
283
- name="multi_subtask",
284
- content=["output 1", "output 2"],
285
- error=["warning 1", "warning 2"]
286
- )
287
-
282
+
283
+ main_response.sub_task(name="multi_subtask", content=["output 1", "output 2"], error=["warning 1", "warning 2"])
284
+
288
285
  assert main_response.number_of_tasks == 1
289
286
  assert "multi_subtask: output 1" in main_response.content
290
287
  assert "multi_subtask: output 2" in main_response.content
@@ -295,7 +292,6 @@ class TestSubTaskMethod:
295
292
  """Test sub_task with empty name."""
296
293
  main_response = FunctionResponse(name="main_task")
297
294
  main_response.sub_task(content="content without name")
298
-
299
295
  assert main_response.number_of_tasks == 1
300
296
  # Should still add content, just without name prefix
301
297
  assert "content without name" in main_response.content
@@ -16,10 +16,11 @@ class TestLoggerFactory:
16
16
 
17
17
  @staticmethod
18
18
  def create_console_logger(**kwargs) -> ConsoleLogger:
19
+ """Create a ConsoleLogger instance for testing."""
19
20
  if ConsoleLogger.has_instance():
20
21
  ConsoleLogger.reset_instance()
21
22
 
22
- import logging
23
+ import logging # noqa: PLC0415
23
24
 
24
25
  logging.getLogger().handlers.clear()
25
26
 
@@ -34,15 +35,14 @@ class TestLoggerFactory:
34
35
  "logger_mode": True,
35
36
  }
36
37
  defaults.update(kwargs)
37
- instance = ConsoleLogger.get_instance(init=True, **defaults)
38
- return instance
38
+ return ConsoleLogger.get_instance(init=True, **defaults)
39
39
 
40
40
  @staticmethod
41
41
  def create_file_logger(**kwargs):
42
42
  if FileLogger.has_instance():
43
43
  FileLogger.reset_instance()
44
44
 
45
- import logging
45
+ import logging # noqa: PLC0415
46
46
 
47
47
  logging.getLogger().handlers.clear()
48
48
 
@@ -62,7 +62,7 @@ class TestLoggerFactory:
62
62
  if BufferLogger.has_instance():
63
63
  BufferLogger.reset_instance()
64
64
 
65
- import logging
65
+ import logging # noqa: PLC0415
66
66
 
67
67
  logging.getLogger().handlers.clear()
68
68
 
@@ -229,7 +229,7 @@ class TestVisualVerification:
229
229
  with capsys.disabled():
230
230
  fmt_header("Visual Test: Traceback Verification")
231
231
  try:
232
- v = 200 / 0
232
+ v: float = 200 / 0 # noqa: F841 # Intentionally cause a ZeroDivisionError
233
233
  except Exception:
234
234
  logger.error("Test", exc_info=True)
235
235
 
@@ -243,7 +243,7 @@ class TestVisualVerification:
243
243
  fmt_header("Visual Test: Sub Logger Traceback Verification")
244
244
 
245
245
  try:
246
- v = 200 / 0
246
+ v: float = 200 / 0 # noqa: F841 # Intentionally cause a ZeroDivisionError
247
247
  except Exception:
248
248
  sub_logger.error("SubLogger Test", exc_info=True)
249
249
 
@@ -252,8 +252,8 @@ class TestVisualVerification:
252
252
 
253
253
  def test_buffer_logger(self):
254
254
  """Test that BufferLogger works correctly."""
255
- from contextlib import redirect_stdout
256
- from io import StringIO
255
+ from contextlib import redirect_stdout # noqa: PLC0415
256
+ from io import StringIO # noqa: PLC0415
257
257
 
258
258
  logger: BufferLogger = TestLoggerFactory.create_buffer_logger()
259
259
  fmt_header("Test Buffer Logger")
@@ -289,7 +289,7 @@ class TestVisualVerification:
289
289
  fmt_header("Visual Test: Buffer Logger Traceback Verification")
290
290
 
291
291
  try:
292
- v = 200 / 0
292
+ v: float = 200 / 0 # noqa: F841 # Intentionally cause a ZeroDivisionError
293
293
  except Exception:
294
294
  logger.error("BufferLogger Test happened on purpose!", exc_info=True)
295
295
 
@@ -45,23 +45,22 @@ wheels = [
45
45
 
46
46
  [[package]]
47
47
  name = "bear-epoch-time"
48
- version = "1.0.4"
48
+ version = "1.1.1"
49
49
  source = { registry = "https://pypi.org/simple/" }
50
50
  dependencies = [
51
51
  { name = "python-dateutil" },
52
52
  { name = "pytz" },
53
53
  { name = "rich" },
54
- { name = "rich-tree-cli" },
55
54
  { name = "tzlocal" },
56
55
  ]
57
- sdist = { url = "https://files.pythonhosted.org/packages/6d/b4/8b658c78658687b048628784b9e86cce619903a29ccdfbc66303aebf48e9/bear_epoch_time-1.0.4.tar.gz", hash = "sha256:a1d6bebb4a24c53ecfe4a430670b2835a5c54fff73bb5541d5fbd5ffe136b886", size = 38719, upload_time = "2025-06-19T20:48:52.051Z" }
56
+ sdist = { url = "https://files.pythonhosted.org/packages/3e/5a/1045fb6fc92d342765e732d2702548a90c933aba5a33a431ce40da414e98/bear_epoch_time-1.1.1.tar.gz", hash = "sha256:db7477e7551584b827f97249a85ee8085213ea8b079b0866fb9d523152785746", size = 32023, upload_time = "2025-07-07T19:40:07.073Z" }
58
57
  wheels = [
59
- { url = "https://files.pythonhosted.org/packages/92/38/d5c375fbfe5410d151baa614cc01c75f7cfc4043e31a9d0b2f6b0f224833/bear_epoch_time-1.0.4-py3-none-any.whl", hash = "sha256:1f7b6acc02967128725a9ca325a2233b4086ce2a0efdb0711bb985fed6360b7a", size = 14136, upload_time = "2025-06-19T20:48:50.819Z" },
58
+ { url = "https://files.pythonhosted.org/packages/be/7b/209297b64a6a2dd504b618d645fa419a1d44f21ba2745283d561672891cf/bear_epoch_time-1.1.1-py3-none-any.whl", hash = "sha256:f2594ef69cb0cbb87e009f7a76f2439e439bb07b5252b39a7956c2cb9b9c85c3", size = 15140, upload_time = "2025-07-07T19:40:06.208Z" },
60
59
  ]
61
60
 
62
61
  [[package]]
63
62
  name = "bear-utils"
64
- version = "0.7.23"
63
+ version = "0.8.0"
65
64
  source = { editable = "." }
66
65
  dependencies = [
67
66
  { name = "bear-epoch-time" },
@@ -96,7 +95,7 @@ gui = [
96
95
 
97
96
  [package.metadata]
98
97
  requires-dist = [
99
- { name = "bear-epoch-time", specifier = ">=1.0.1" },
98
+ { name = "bear-epoch-time", specifier = ">=1.1.1" },
100
99
  { name = "diskcache", specifier = ">=5.6.3,<6.0.0" },
101
100
  { name = "httpx", specifier = ">=0.28.1" },
102
101
  { name = "pathspec", specifier = ">=0.12.1" },
@@ -493,18 +492,6 @@ wheels = [
493
492
  { url = "https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683", size = 49010, upload_time = "2025-02-27T18:51:00.104Z" },
494
493
  ]
495
494
 
496
- [[package]]
497
- name = "jinja2"
498
- version = "3.1.6"
499
- source = { registry = "https://pypi.org/simple/" }
500
- dependencies = [
501
- { name = "markupsafe" },
502
- ]
503
- sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" }
504
- wheels = [
505
- { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" },
506
- ]
507
-
508
495
  [[package]]
509
496
  name = "keyring"
510
497
  version = "25.6.0"
@@ -534,44 +521,6 @@ wheels = [
534
521
  { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload_time = "2023-06-03T06:41:11.019Z" },
535
522
  ]
536
523
 
537
- [[package]]
538
- name = "markupsafe"
539
- version = "3.0.2"
540
- source = { registry = "https://pypi.org/simple/" }
541
- sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload_time = "2024-10-18T15:21:54.129Z" }
542
- wheels = [
543
- { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload_time = "2024-10-18T15:21:13.777Z" },
544
- { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload_time = "2024-10-18T15:21:14.822Z" },
545
- { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload_time = "2024-10-18T15:21:15.642Z" },
546
- { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload_time = "2024-10-18T15:21:17.133Z" },
547
- { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload_time = "2024-10-18T15:21:18.064Z" },
548
- { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload_time = "2024-10-18T15:21:18.859Z" },
549
- { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload_time = "2024-10-18T15:21:19.671Z" },
550
- { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload_time = "2024-10-18T15:21:20.971Z" },
551
- { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload_time = "2024-10-18T15:21:22.646Z" },
552
- { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload_time = "2024-10-18T15:21:23.499Z" },
553
- { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload_time = "2024-10-18T15:21:24.577Z" },
554
- { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload_time = "2024-10-18T15:21:25.382Z" },
555
- { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload_time = "2024-10-18T15:21:26.199Z" },
556
- { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload_time = "2024-10-18T15:21:27.029Z" },
557
- { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload_time = "2024-10-18T15:21:27.846Z" },
558
- { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload_time = "2024-10-18T15:21:28.744Z" },
559
- { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload_time = "2024-10-18T15:21:29.545Z" },
560
- { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload_time = "2024-10-18T15:21:30.366Z" },
561
- { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload_time = "2024-10-18T15:21:31.207Z" },
562
- { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload_time = "2024-10-18T15:21:32.032Z" },
563
- { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload_time = "2024-10-18T15:21:33.625Z" },
564
- { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload_time = "2024-10-18T15:21:34.611Z" },
565
- { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload_time = "2024-10-18T15:21:35.398Z" },
566
- { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload_time = "2024-10-18T15:21:36.231Z" },
567
- { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload_time = "2024-10-18T15:21:37.073Z" },
568
- { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload_time = "2024-10-18T15:21:37.932Z" },
569
- { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload_time = "2024-10-18T15:21:39.799Z" },
570
- { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload_time = "2024-10-18T15:21:40.813Z" },
571
- { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload_time = "2024-10-18T15:21:41.814Z" },
572
- { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload_time = "2024-10-18T15:21:42.784Z" },
573
- ]
574
-
575
524
  [[package]]
576
525
  name = "mdurl"
577
526
  version = "0.1.2"
@@ -1033,21 +982,6 @@ wheels = [
1033
982
  { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload_time = "2025-03-30T14:15:12.283Z" },
1034
983
  ]
1035
984
 
1036
- [[package]]
1037
- name = "rich-tree-cli"
1038
- version = "0.3.15"
1039
- source = { registry = "https://pypi.org/simple/" }
1040
- dependencies = [
1041
- { name = "jinja2" },
1042
- { name = "pathspec" },
1043
- { name = "rich" },
1044
- { name = "tomli-w" },
1045
- ]
1046
- sdist = { url = "https://files.pythonhosted.org/packages/f6/23/d6ce2039fdd30aae1d489e79a741a8cfb6d592382f178b09bd8bf4ca46ae/rich_tree_cli-0.3.15.tar.gz", hash = "sha256:1b6f03b7cb4e8ad5226d9434ee73c40cf2b18edd20ffa282d285afe5caab8f7e", size = 65297, upload_time = "2025-06-16T05:11:40.017Z" }
1047
- wheels = [
1048
- { url = "https://files.pythonhosted.org/packages/17/7c/f43ee0089dcaafe40dbe128c6e81248d670d717fae681ccb11ef3fc326a9/rich_tree_cli-0.3.15-py3-none-any.whl", hash = "sha256:9f9b6f9edaa638368b439aaf7d98771ab901aeac1ce79e4e63be295dda07a90d", size = 30863, upload_time = "2025-06-16T05:11:39.196Z" },
1049
- ]
1050
-
1051
985
  [[package]]
1052
986
  name = "secretstorage"
1053
987
  version = "3.3.3"
@@ -1135,15 +1069,6 @@ wheels = [
1135
1069
  { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload_time = "2020-11-01T01:40:20.672Z" },
1136
1070
  ]
1137
1071
 
1138
- [[package]]
1139
- name = "tomli-w"
1140
- version = "1.2.0"
1141
- source = { registry = "https://pypi.org/simple/" }
1142
- sdist = { url = "https://files.pythonhosted.org/packages/19/75/241269d1da26b624c0d5e110e8149093c759b7a286138f4efd61a60e75fe/tomli_w-1.2.0.tar.gz", hash = "sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021", size = 7184, upload_time = "2025-01-15T12:07:24.262Z" }
1143
- wheels = [
1144
- { url = "https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl", hash = "sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90", size = 6675, upload_time = "2025-01-15T12:07:22.074Z" },
1145
- ]
1146
-
1147
1072
  [[package]]
1148
1073
  name = "twine"
1149
1074
  version = "6.1.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes