bear-utils 0.8.22__tar.gz → 0.8.23__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 (118) hide show
  1. {bear_utils-0.8.22 → bear_utils-0.8.23}/.bumpversion.cfg +1 -1
  2. {bear_utils-0.8.22 → bear_utils-0.8.23}/PKG-INFO +2 -2
  3. {bear_utils-0.8.22 → bear_utils-0.8.23}/README.md +1 -1
  4. {bear_utils-0.8.22 → bear_utils-0.8.23}/pyproject.toml +1 -1
  5. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/database/_db_manager.py +9 -16
  6. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/extras/responses/function_response.py +4 -5
  7. {bear_utils-0.8.22 → bear_utils-0.8.23}/.gitignore +0 -0
  8. {bear_utils-0.8.22 → bear_utils-0.8.23}/.python-version +0 -0
  9. {bear_utils-0.8.22 → bear_utils-0.8.23}/AGENTS.md +0 -0
  10. {bear_utils-0.8.22 → bear_utils-0.8.23}/config/coverage.ini +0 -0
  11. {bear_utils-0.8.22 → bear_utils-0.8.23}/config/default.toml +0 -0
  12. {bear_utils-0.8.22 → bear_utils-0.8.23}/config/git-changelog.toml +0 -0
  13. {bear_utils-0.8.22 → bear_utils-0.8.23}/config/pytest.ini +0 -0
  14. {bear_utils-0.8.22 → bear_utils-0.8.23}/config/ruff.toml +0 -0
  15. {bear_utils-0.8.22 → bear_utils-0.8.23}/config/vscode/launch.json +0 -0
  16. {bear_utils-0.8.22 → bear_utils-0.8.23}/config/vscode/settings.json +0 -0
  17. {bear_utils-0.8.22 → bear_utils-0.8.23}/config/vscode/tasks.json +0 -0
  18. {bear_utils-0.8.22 → bear_utils-0.8.23}/directory_structure.txt +0 -0
  19. {bear_utils-0.8.22 → bear_utils-0.8.23}/directory_structure.xml +0 -0
  20. {bear_utils-0.8.22 → bear_utils-0.8.23}/maskfile.md +0 -0
  21. {bear_utils-0.8.22 → bear_utils-0.8.23}/noxfile.py +0 -0
  22. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/__init__.py +0 -0
  23. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/__main__.py +0 -0
  24. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/_internal/__init__.py +0 -0
  25. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/_internal/cli.py +0 -0
  26. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/_internal/debug.py +0 -0
  27. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/ai/__init__.py +0 -0
  28. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/ai/ai_helpers/__init__.py +0 -0
  29. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/ai/ai_helpers/_common.py +0 -0
  30. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/ai/ai_helpers/_config.py +0 -0
  31. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/ai/ai_helpers/_parsers.py +0 -0
  32. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/ai/ai_helpers/_types.py +0 -0
  33. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/cache/__init__.py +0 -0
  34. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/cli/__init__.py +0 -0
  35. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/cli/commands.py +0 -0
  36. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/cli/prompt_helpers.py +0 -0
  37. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/cli/shell/__init__.py +0 -0
  38. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/cli/shell/_base_command.py +0 -0
  39. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/cli/shell/_base_shell.py +0 -0
  40. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/cli/shell/_common.py +0 -0
  41. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/config/__init__.py +0 -0
  42. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/config/config_manager.py +0 -0
  43. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/config/dir_manager.py +0 -0
  44. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/config/settings_manager.py +0 -0
  45. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/constants/__init__.py +0 -0
  46. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/constants/_exceptions.py +0 -0
  47. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/constants/_lazy_typing.py +0 -0
  48. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/constants/date_related.py +0 -0
  49. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/constants/server.py +0 -0
  50. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/constants/time_related.py +0 -0
  51. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/database/__init__.py +0 -0
  52. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/events/__init__.py +0 -0
  53. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/events/events_class.py +0 -0
  54. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/events/events_module.py +0 -0
  55. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/extras/__init__.py +0 -0
  56. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/extras/_async_helpers.py +0 -0
  57. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/extras/_tools.py +0 -0
  58. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/extras/platform_utils.py +0 -0
  59. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/extras/responses/__init__.py +0 -0
  60. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/extras/wrappers/__init__.py +0 -0
  61. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/extras/wrappers/add_methods.py +0 -0
  62. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/__init__.py +0 -0
  63. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/file_handlers/__init__.py +0 -0
  64. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/file_handlers/_base_file_handler.py +0 -0
  65. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/file_handlers/file_handler_factory.py +0 -0
  66. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/file_handlers/json_file_handler.py +0 -0
  67. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/file_handlers/log_file_handler.py +0 -0
  68. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/file_handlers/toml_file_handler.py +0 -0
  69. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/file_handlers/txt_file_handler.py +0 -0
  70. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/file_handlers/yaml_file_handler.py +0 -0
  71. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/files/ignore_parser.py +0 -0
  72. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/graphics/__init__.py +0 -0
  73. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/graphics/bear_gradient.py +0 -0
  74. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/graphics/image_helpers.py +0 -0
  75. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/gui/__init__.py +0 -0
  76. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/gui/gui_tools/__init__.py +0 -0
  77. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/gui/gui_tools/_settings.py +0 -0
  78. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/gui/gui_tools/_types.py +0 -0
  79. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/gui/gui_tools/qt_app.py +0 -0
  80. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/gui/gui_tools/qt_color_picker.py +0 -0
  81. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/gui/gui_tools/qt_file_handler.py +0 -0
  82. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/gui/gui_tools/qt_input_dialog.py +0 -0
  83. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/__init__.py +0 -0
  84. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/_common.py +0 -0
  85. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/_console_junk.py +0 -0
  86. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/_log_level.py +0 -0
  87. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/_styles.py +0 -0
  88. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/logger_protocol.py +0 -0
  89. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/__init__.py +0 -0
  90. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/_level_sin.py +0 -0
  91. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/base_logger.py +0 -0
  92. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/base_logger.pyi +0 -0
  93. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/basic_logger/__init__.py +0 -0
  94. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/basic_logger/logger.py +0 -0
  95. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/basic_logger/logger.pyi +0 -0
  96. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/buffer_logger.py +0 -0
  97. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/console_logger.py +0 -0
  98. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/console_logger.pyi +0 -0
  99. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/fastapi_logger.py +0 -0
  100. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/file_logger.py +0 -0
  101. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/simple_logger.py +0 -0
  102. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/sub_logger.py +0 -0
  103. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/logger_manager/loggers/sub_logger.pyi +0 -0
  104. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/monitoring/__init__.py +0 -0
  105. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/monitoring/_common.py +0 -0
  106. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/monitoring/host_monitor.py +0 -0
  107. {bear_utils-0.8.22 → bear_utils-0.8.23}/src/bear_utils/time/__init__.py +0 -0
  108. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/__init__.py +0 -0
  109. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/test_add_ord_suffix.py +0 -0
  110. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/test_clipboard.py +0 -0
  111. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/test_database_manager.py +0 -0
  112. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/test_default_shell.py +0 -0
  113. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/test_function_response.py +0 -0
  114. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/test_gradient.py +0 -0
  115. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/test_logger.py +0 -0
  116. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/test_platform_utils.py +0 -0
  117. {bear_utils-0.8.22 → bear_utils-0.8.23}/tests/test_prompt_helpers.py +0 -0
  118. {bear_utils-0.8.22 → bear_utils-0.8.23}/uv.lock +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 0.8.22
2
+ current_version = 0.8.23
3
3
 
4
4
  [bumpversion:file:pyproject.toml]
5
5
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bear-utils
3
- Version: 0.8.22
3
+ Version: 0.8.23
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
@@ -24,7 +24,7 @@ Provides-Extra: gui
24
24
  Requires-Dist: pyqt6>=6.9.0; extra == 'gui'
25
25
  Description-Content-Type: text/markdown
26
26
 
27
- # Bear Utils v# Bear Utils v0.8.22
27
+ # Bear Utils v# Bear Utils v0.8.23
28
28
 
29
29
  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.
30
30
 
@@ -1,4 +1,4 @@
1
- # Bear Utils v# Bear Utils v0.8.22
1
+ # Bear Utils v# Bear Utils v0.8.23
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
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bear-utils"
3
- version = "0.8.22"
3
+ version = "0.8.23"
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"
@@ -32,42 +32,35 @@ class DatabaseManager:
32
32
  raise ValueError("Base class is not set, failed to set base.")
33
33
  return cls._base
34
34
 
35
- def __init__(self, db_url: str | Path | None = None):
35
+ def __init__(self, db_url: str | Path | None = None, default_schema: str = "sqlite:///"):
36
36
  if db_url is None or db_url == "":
37
37
  raise ValueError("Database URL cannot be None or empty.")
38
- if isinstance(db_url, str) and not db_url.startswith("sqlite://"):
39
- db_url = f"sqlite:///{db_url}"
38
+ if isinstance(db_url, str) and not db_url.startswith(default_schema):
39
+ db_url = f"{default_schema}{db_url}"
40
40
  self.db_url: str = str(db_url)
41
41
  self.engine: Engine = create_engine(self.db_url, echo=False)
42
42
  base: DeclarativeMeta = DatabaseManager.get_base()
43
43
  self.metadata: MetaData = base.metadata
44
- self.SessionFactory = sessionmaker(bind=self.engine)
45
- self.session = scoped_session(self.SessionFactory)
44
+ self.SessionFactory: sessionmaker[Session] = sessionmaker(bind=self.engine)
45
+ self.session: scoped_session[Session] = scoped_session(self.SessionFactory)
46
46
  atexit.register(self.close_all)
47
47
  self.create_tables()
48
48
 
49
49
  def get_all_records(self, table_obj: type[TableType]) -> list[TableType]:
50
50
  """Get all records from a table."""
51
- with self.open_session() as session:
52
- return session.query(table_obj).all()
51
+ return self.session().query(table_obj).all()
53
52
 
54
53
  def count_records(self, table_obj: type[TableType]) -> int:
55
54
  """Count the number of records in a table."""
56
- with self.open_session() as session:
57
- count: int = session.query(table_obj).count()
58
- return count
55
+ return self.session().query(table_obj).count()
59
56
 
60
57
  def get_records_by_var(self, table_obj: type[TableType], variable: str, value: str) -> list[TableType]:
61
58
  """Get records from a table by a specific variable."""
62
- with self.open_session() as session:
63
- records: list[TableType] = session.query(table_obj).filter(getattr(table_obj, variable) == value).all()
64
- return records
59
+ return self.session().query(table_obj).filter(getattr(table_obj, variable) == value).all()
65
60
 
66
61
  def count_records_by_var(self, table_obj: type[TableType], variable: str, value: str) -> int:
67
62
  """Count the number of records in a table by a specific variable."""
68
- with self.open_session() as session:
69
- count: int = session.query(table_obj).filter(getattr(table_obj, variable) == value).count()
70
- return count
63
+ return self.session().query(table_obj).filter(getattr(table_obj, variable) == value).count()
71
64
 
72
65
  @contextmanager
73
66
  def open_session(self) -> Generator[Session, Any]:
@@ -14,13 +14,14 @@ from bear_utils.extras._async_helpers import AsyncResponseModel, create_async_ta
14
14
  # Pydantic will yell if we put this into a TYPE_CHECKING block.
15
15
  from bear_utils.logger_manager import AsyncLoggerProtocol, LoggerProtocol # noqa: TC001
16
16
 
17
- SUCCESS: list[str] = ["name", "success"]
18
- FAILURE: list[str] = ["name"]
19
-
20
17
  if TYPE_CHECKING:
21
18
  from collections.abc import Callable
22
19
 
23
20
 
21
+ SUCCESS: list[str] = ["name", "success", "number_of_tasks"]
22
+ FAILURE: list[str] = ["name", "number_of_tasks"]
23
+
24
+
24
25
  class FunctionResponse(BaseModel):
25
26
  """A class to represent the response of a function call, including success status, content, and error messages."""
26
27
 
@@ -337,10 +338,8 @@ class FunctionResponse(BaseModel):
337
338
  content = []
338
339
  if not isinstance(error, (list | str)):
339
340
  error = []
340
-
341
341
  if not content and not error:
342
342
  return
343
-
344
343
  res: AsyncResponseModel = create_async_task(
345
344
  _log_messages,
346
345
  content=content,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes