bear-utils 0.8.27__py3-none-any.whl → 0.9.2__py3-none-any.whl

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.
@@ -0,0 +1 @@
1
+ version = "0.9.2"
@@ -15,6 +15,9 @@ import sys
15
15
  from typing import Any
16
16
 
17
17
  from bear_utils._internal import debug
18
+ from bear_utils._internal._version import version as _version
19
+ from bear_utils.cli._get_version import VALID_BUMP_TYPES, cli_bump
20
+ from bear_utils.constants import ExitCode
18
21
 
19
22
 
20
23
  class _DebugInfo(Action):
@@ -23,7 +26,7 @@ class _DebugInfo(Action):
23
26
 
24
27
  def __call__(self, *_: Any, **__: Any) -> None:
25
28
  debug._print_debug_info()
26
- sys.exit(0)
29
+ sys.exit(ExitCode.SUCCESS)
27
30
 
28
31
 
29
32
  class _About(Action):
@@ -32,14 +35,43 @@ class _About(Action):
32
35
 
33
36
  def __call__(self, *_: Any, **__: Any) -> None:
34
37
  print(debug._get_package_info())
35
- sys.exit(0)
38
+ sys.exit(ExitCode.SUCCESS)
39
+
40
+
41
+ class _Version(Action):
42
+ def __init__(self, nargs: int | str | None = 0, **kwargs: Any) -> None:
43
+ super().__init__(nargs=nargs, **kwargs)
44
+
45
+ def __call__(self, *_: Any, **__: Any) -> None:
46
+ version: str = f"{debug._get_name()} v{_version}"
47
+ print(version)
48
+ sys.exit(ExitCode.SUCCESS)
49
+
50
+
51
+ def get_version() -> ExitCode:
52
+ """CLI command to get the version of the package."""
53
+ print(_version)
54
+ return ExitCode.SUCCESS
55
+
56
+
57
+ def bump_version() -> ExitCode:
58
+ """CLI command to bump the version of the package."""
59
+ parser = ArgumentParser(description="Bump the version of the package.")
60
+ parser.add_argument(
61
+ "bump_type",
62
+ type=str,
63
+ choices=VALID_BUMP_TYPES,
64
+ help=f"Type of version bump: {', '.join(VALID_BUMP_TYPES)}",
65
+ )
66
+ args: Namespace = parser.parse_args(sys.argv[1:])
67
+ bump_args = [args.bump_type, debug.__PACKAGE_NAME__, _version]
68
+ return cli_bump(bump_args)
36
69
 
37
70
 
38
71
  def get_parser() -> ArgumentParser:
39
- name: str = debug._get_name()
40
- version: str = f"{name} v{debug._get_version()}"
72
+ name = debug._get_name()
41
73
  parser = ArgumentParser(description=name.capitalize(), prog=name, exit_on_error=False)
42
- parser.add_argument("-V", "--version", action="version", version=version)
74
+ parser.add_argument("-V", "--version", action=_Version, help="Print the version of the package")
43
75
  parser.add_argument("--about", action=_About, help="Print information about the package")
44
76
  parser.add_argument("--debug_info", action=_DebugInfo, help="Print debug information")
45
77
  return parser
@@ -65,8 +97,8 @@ def main(args: list[str] | None = None) -> int:
65
97
  print(opts)
66
98
  except Exception as e:
67
99
  print(f"Error initializing CLI: {e}", file=sys.stderr)
68
- return 1
69
- return 0
100
+ return ExitCode.FAILURE
101
+ return ExitCode.SUCCESS
70
102
 
71
103
 
72
104
  if __name__ == "__main__":
@@ -7,6 +7,8 @@ import os
7
7
  import platform
8
8
  import sys
9
9
 
10
+ from bear_utils._internal._version import version as _version
11
+
10
12
  __PACKAGE_NAME__ = "bear-utils"
11
13
 
12
14
 
@@ -16,7 +18,7 @@ class _Package:
16
18
 
17
19
  name: str = __PACKAGE_NAME__
18
20
  """Package name."""
19
- version: str = "0.0.0"
21
+ version: str = _version
20
22
  """Package version."""
21
23
  description: str = "No description available."
22
24
  """Package description."""
@@ -69,7 +71,7 @@ def _get_package_info(dist: str = __PACKAGE_NAME__) -> _Package:
69
71
  try:
70
72
  return _Package(
71
73
  name=dist,
72
- version=version(dist),
74
+ version=_version or version(dist),
73
75
  description=metadata(dist)["Summary"],
74
76
  )
75
77
  except PackageNotFoundError:
@@ -0,0 +1,206 @@
1
+ from __future__ import annotations
2
+
3
+ from argparse import ArgumentParser, Namespace
4
+ from contextlib import redirect_stdout
5
+ from importlib.metadata import PackageNotFoundError, version
6
+ from io import StringIO
7
+ import sys
8
+ from typing import Literal, Self
9
+
10
+ from pydantic import BaseModel
11
+
12
+ from bear_utils.constants import ExitCode
13
+ from bear_utils.constants._meta import RichStrEnum, StrValue as Value
14
+
15
+
16
+ class VersionParts(RichStrEnum):
17
+ """Enumeration for version parts."""
18
+
19
+ MAJOR = Value("major", "Major version")
20
+ MINOR = Value("minor", "Minor version")
21
+ PATCH = Value("patch", "Patch version")
22
+
23
+ @classmethod
24
+ def choices(cls) -> list[str]:
25
+ """Return a list of valid version parts."""
26
+ return [version_part.value for version_part in cls]
27
+
28
+ @classmethod
29
+ def num(cls) -> int:
30
+ """Return the number of valid version parts."""
31
+ return len(cls.choices())
32
+
33
+
34
+ VALID_BUMP_TYPES: list[str] = VersionParts.choices()
35
+ NUM_PARTS: int = VersionParts.num()
36
+ MAJOR = VersionParts.MAJOR.str()
37
+ MINOR = VersionParts.MINOR.str()
38
+ PATCH = VersionParts.PATCH.str()
39
+
40
+
41
+ class Version(BaseModel):
42
+ """Model to represent a version string."""
43
+
44
+ major: int
45
+ """Major version number."""
46
+ minor: int
47
+ """Minor version number."""
48
+ patch: int
49
+ """Patch version number."""
50
+
51
+ @classmethod
52
+ def from_string(cls, version_str: str) -> Self:
53
+ """Create a Version instance from a version string.
54
+
55
+ Args:
56
+ version_str: A version string in the format "major.minor.patch".
57
+
58
+ Returns:
59
+ A Version instance.
60
+
61
+ Raises:
62
+ ValueError: If the version string is not in the correct format.
63
+ """
64
+ parts = version_str.split(".")
65
+ if len(parts) != VersionParts.num() or not all(part.isdigit() for part in parts):
66
+ raise ValueError(f"Invalid version format: {version_str}")
67
+ return cls(major=int(parts[0]), minor=int(parts[1]), patch=int(parts[2]))
68
+
69
+ @property
70
+ def version_string(self) -> str:
71
+ """Return the version as a string in the format "major.minor.patch".
72
+
73
+ Returns:
74
+ A string representation of the version.
75
+ """
76
+ return f"{self.major}.{self.minor}.{self.patch}"
77
+
78
+ def new_version(self, bump_type: Literal["major", "minor", "patch"]) -> Version:
79
+ """Return a new version string based on the bump type.
80
+
81
+ Args:
82
+ bump_type: The type of bump ("major", "minor", or "patch").
83
+
84
+ Returns:
85
+ A new version string.
86
+
87
+ Raises:
88
+ ValueError: If the bump_type is unsupported.
89
+ """
90
+ match bump_type:
91
+ case VersionParts.MAJOR:
92
+ self.major += 1
93
+ self.minor = 0
94
+ self.patch = 0
95
+ case VersionParts.MINOR:
96
+ self.minor += 1
97
+ self.patch = 0
98
+ case VersionParts.PATCH:
99
+ self.patch += 1
100
+ case _:
101
+ raise ValueError(f"Unsupported bump type: {bump_type}")
102
+ return self
103
+
104
+ @classmethod
105
+ def from_func(cls, package_name: str) -> Self:
106
+ """Create a Version instance from the current package version.
107
+
108
+ Returns:
109
+ A Version instance with the current package version.
110
+
111
+ Raises:
112
+ PackageNotFoundError: If the package is not found.
113
+ """
114
+ try:
115
+ current_version = version(package_name)
116
+ return cls.from_string(current_version)
117
+ except PackageNotFoundError as e:
118
+ raise PackageNotFoundError(f"Package '{package_name}' not found: {e}") from e
119
+
120
+
121
+ def _bump_version(version: str, bump_type: Literal["major", "minor", "patch"]) -> Version:
122
+ """Bump the version based on the specified type.
123
+
124
+ Args:
125
+ version: The current version string (e.g., "1.2.3").
126
+ bump_type: The type of bump ("major", "minor", or "patch").
127
+
128
+ Returns:
129
+ The new version string.
130
+
131
+ Raises:
132
+ ValueError: If the version format is invalid or bump_type is unsupported.
133
+ """
134
+ ver: Version = Version.from_string(version)
135
+ return ver.new_version(bump_type)
136
+
137
+
138
+ def cli_get_version(args: list[str] | None = None) -> ExitCode:
139
+ """Get the version of the current package.
140
+
141
+ Returns:
142
+ The version of the package.
143
+ """
144
+ if args is None:
145
+ args = sys.argv[1:]
146
+ parser = ArgumentParser(description="Get the version of the package.")
147
+ parser.add_argument("package_name", nargs="?", type=str, help="Name of the package to get the version for.")
148
+ arguments: Namespace = parser.parse_args(args)
149
+ if not arguments.package_name:
150
+ print("No package name provided. Please specify a package name.")
151
+ return ExitCode.FAILURE
152
+ package_name: str = arguments.package_name
153
+ try:
154
+ current_version = version(package_name)
155
+ print(current_version)
156
+ except PackageNotFoundError:
157
+ print(f"Package '{package_name}' not found.")
158
+ return ExitCode.FAILURE
159
+ return ExitCode.SUCCESS
160
+
161
+
162
+ def _get_version(package_name: str) -> str:
163
+ """Get the version of the specified package.
164
+
165
+ Args:
166
+ package_name: The name of the package to get the version for.
167
+
168
+ Returns:
169
+ A Version instance representing the current version of the package.
170
+
171
+ Raises:
172
+ PackageNotFoundError: If the package is not found.
173
+ """
174
+ record = StringIO()
175
+ with redirect_stdout(record):
176
+ cli_get_version([package_name])
177
+ return record.getvalue().strip()
178
+
179
+
180
+ def cli_bump(args: list[str] | None = None) -> ExitCode:
181
+ if args is None:
182
+ args = sys.argv[1:]
183
+ parser = ArgumentParser(description="Bump the version of the package.")
184
+ parser.add_argument("bump_type", type=str, choices=VALID_BUMP_TYPES, default="patch")
185
+ parser.add_argument("package_name", nargs="?", type=str, help="Name of the package to bump the version for.")
186
+ parser.add_argument("current_version", type=str, help="Current version of the package.")
187
+ arguments: Namespace = parser.parse_args(args)
188
+ bump_type: Literal["major", "minor", "patch"] = arguments.bump_type
189
+ if not arguments.package_name:
190
+ print("No package name provided.")
191
+ return ExitCode.FAILURE
192
+ package_name: str = arguments.package_name
193
+ if bump_type not in VALID_BUMP_TYPES:
194
+ print(f"Invalid argument '{bump_type}'. Use one of: {', '.join(VALID_BUMP_TYPES)}.")
195
+ return ExitCode.FAILURE
196
+ current_version: str = arguments.current_version or _get_version(package_name)
197
+ try:
198
+ new_version: Version = _bump_version(version=current_version, bump_type=bump_type)
199
+ print(new_version.version_string)
200
+ return ExitCode.SUCCESS
201
+ except ValueError as e:
202
+ print(f"Error: {e}")
203
+ return ExitCode.FAILURE
204
+ except Exception as e:
205
+ print(f"Unexpected error: {e}")
206
+ return ExitCode.FAILURE
@@ -9,6 +9,7 @@ from bear_utils.constants._exit_code import (
9
9
  COMMAND_NOT_FOUND,
10
10
  EXIT_STATUS_OUT_OF_RANGE,
11
11
  FAIL,
12
+ FAILURE,
12
13
  INVALID_ARGUMENT_TO_EXIT,
13
14
  MISUSE_OF_SHELL_COMMAND,
14
15
  PROCESS_KILLED_BY_SIGKILL,
@@ -28,7 +29,7 @@ from bear_utils.constants._http_status_code import (
28
29
  UNAUTHORIZED,
29
30
  HTTPStatusCode,
30
31
  )
31
- from bear_utils.constants._meta import NullFile, RichIntEnum, Value
32
+ from bear_utils.constants._meta import IntValue, NullFile, RichIntEnum, RichStrEnum, StrValue
32
33
 
33
34
  VIDEO_EXTS = [".mp4", ".mov", ".avi", ".mkv"]
34
35
  """Extensions for video files."""
@@ -58,6 +59,7 @@ __all__ = [
58
59
  "CONFLICT",
59
60
  "EXIT_STATUS_OUT_OF_RANGE",
60
61
  "FAIL",
62
+ "FAILURE",
61
63
  "FILE_EXTS",
62
64
  "FORBIDDEN",
63
65
  "GLOBAL_VENV",
@@ -80,7 +82,9 @@ __all__ = [
80
82
  "VIDEO_EXTS",
81
83
  "ExitCode",
82
84
  "HTTPStatusCode",
85
+ "IntValue",
83
86
  "NullFile",
84
87
  "RichIntEnum",
85
- "Value",
88
+ "RichStrEnum",
89
+ "StrValue",
86
90
  ]
@@ -1,4 +1,4 @@
1
- from bear_utils.constants._meta import RichIntEnum, Value
1
+ from bear_utils.constants._meta import RichIntEnum, IntValue as Value
2
2
 
3
3
 
4
4
  class ExitCode(RichIntEnum):
@@ -1,6 +1,6 @@
1
1
  """HTTP status codes."""
2
2
 
3
- from bear_utils.constants._meta import RichIntEnum, Value
3
+ from bear_utils.constants._meta import IntValue as Value, RichIntEnum
4
4
 
5
5
 
6
6
  class HTTPStatusCode(RichIntEnum):
@@ -1,22 +1,51 @@
1
1
  from dataclasses import dataclass
2
- from enum import IntEnum
2
+ from enum import IntEnum, StrEnum
3
3
  from typing import Any, Self, TextIO
4
4
 
5
5
 
6
6
  @dataclass(frozen=True)
7
- class Value:
8
- """A frozen dataclass for holding constant values."""
7
+ class IntValue:
8
+ """A frozen dataclass for holding constant integer values."""
9
9
 
10
10
  value: int
11
11
  text: str
12
12
 
13
13
 
14
+ @dataclass(frozen=True)
15
+ class StrValue:
16
+ """A frozen dataclass for holding constant string values."""
17
+
18
+ value: str
19
+ text: str
20
+
21
+
22
+ class RichStrEnum(StrEnum):
23
+ """Base class for StrEnums with rich metadata."""
24
+
25
+ text: str
26
+
27
+ def __new__(cls, value: StrValue) -> Self:
28
+ _value: str = value.value
29
+ text: str = value.text
30
+ obj: Self = str.__new__(cls, _value)
31
+ obj._value_ = _value
32
+ obj.text = text
33
+ return obj
34
+
35
+ def __str__(self) -> str:
36
+ return f"{self.name} ({self.value}): {self.text}"
37
+
38
+ def str(self) -> str:
39
+ """Return the string value of the enum."""
40
+ return self.value
41
+
42
+
14
43
  class RichIntEnum(IntEnum):
15
44
  """Base class for IntEnums with rich metadata."""
16
45
 
17
46
  text: str
18
47
 
19
- def __new__(cls, value: Value) -> Self:
48
+ def __new__(cls, value: IntValue) -> Self:
20
49
  _value: int = value.value
21
50
  text: str = value.text
22
51
  obj: Self = int.__new__(cls, _value)
@@ -3,9 +3,7 @@
3
3
  from rich.align import Align
4
4
  from rich.console import Console
5
5
 
6
- from bear_utils.graphics.font._theme import CyberTheme as Theme
7
-
8
- from ._raw_block_letters import (
6
+ from bear_utils.graphics.font._raw_block_letters import (
9
7
  ASTERISK,
10
8
  AT,
11
9
  BACKWARD_SLASH,
@@ -58,6 +56,7 @@ from ._raw_block_letters import (
58
56
  Y,
59
57
  Z,
60
58
  )
59
+ from bear_utils.graphics.font._theme import CyberTheme as Theme
61
60
 
62
61
  BLOCK_LETTERS: dict[str, list[str]] = {
63
62
  "A": A,
@@ -121,7 +120,7 @@ def char_to_block(char: str) -> list[str]:
121
120
  return BLOCK_LETTERS.get(char.upper(), [" "] * 5)
122
121
 
123
122
 
124
- def word_to_block(word: str) -> list[str]:
123
+ def _word_to_block(word: str) -> list[str]:
125
124
  """Convert a word to its block font representation."""
126
125
  clean_text: str = "".join(char for char in word.upper() if char in BLOCK_LETTERS)
127
126
 
@@ -136,15 +135,25 @@ def word_to_block(word: str) -> list[str]:
136
135
  return rows
137
136
 
138
137
 
138
+ def word_to_block(word: str) -> str:
139
+ """Convert a word to its block font representation as a single string."""
140
+ block_rows = _word_to_block(word)
141
+ return "\n".join(block_rows)
142
+
143
+
139
144
  def print_block_font(text: str, color: str = Theme.neon_green) -> None:
140
145
  """Print block font text with cyberpunk styling."""
141
- block_rows = word_to_block(text)
146
+ block_rows = _word_to_block(text)
142
147
 
143
- console.print()
144
148
  for row in block_rows:
145
149
  console.print(Align.center(f"[{color}]{row}[/{color}]"))
146
- console.print()
147
150
 
148
151
 
149
152
  __all__ = ["BLOCK_LETTERS", "char_to_block", "word_to_block"]
150
153
  # fmt: on
154
+
155
+ if __name__ == "__main__":
156
+ WORD = "BANKER"
157
+ BANKER = word_to_block(WORD)
158
+
159
+ console.print(Align.center(f"[{Theme.error}]{BANKER}[/{Theme.error}]"))
@@ -1,6 +1,6 @@
1
1
  from typing import Literal
2
2
 
3
- from bear_utils.constants._meta import RichIntEnum, Value
3
+ from bear_utils.constants._meta import IntValue as Value, RichIntEnum
4
4
 
5
5
  FAILURE: Literal[45] = 45
6
6
  ERROR: Literal[40] = 40
@@ -13,6 +13,19 @@ VERBOSE: Literal[5] = 5
13
13
  NOTSET: Literal[0] = 0
14
14
 
15
15
 
16
+ class LogLevel(RichIntEnum):
17
+ """Enumeration for logging levels."""
18
+
19
+ NOTSET = Value(NOTSET, "NOTSET")
20
+ VERBOSE = Value(VERBOSE, "VERBOSE")
21
+ DEBUG = Value(DEBUG, "DEBUG")
22
+ INFO = Value(INFO, "INFO")
23
+ WARNING = Value(WARNING, "WARNING")
24
+ ERROR = Value(ERROR, "ERROR")
25
+ FAILURE = Value(FAILURE, "FAILURE")
26
+ SUCCESS = Value(SUCCESS, "SUCCESS")
27
+
28
+
16
29
  level_to_name = {
17
30
  FAILURE: "FAILURE",
18
31
  ERROR: "ERROR",
@@ -35,16 +48,3 @@ name_to_level = {
35
48
  "VERBOSE": VERBOSE,
36
49
  "NOTSET": NOTSET,
37
50
  }
38
-
39
-
40
- class LogLevel(RichIntEnum):
41
- """Enumeration for logging levels."""
42
-
43
- NOTSET = Value(NOTSET, "NOTSET")
44
- VERBOSE = Value(VERBOSE, "VERBOSE")
45
- DEBUG = Value(DEBUG, "DEBUG")
46
- INFO = Value(INFO, "INFO")
47
- WARNING = Value(WARNING, "WARNING")
48
- ERROR = Value(ERROR, "ERROR")
49
- FAILURE = Value(FAILURE, "FAILURE")
50
- SUCCESS = Value(SUCCESS, "SUCCESS")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bear-utils
3
- Version: 0.8.27
3
+ Version: 0.9.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
@@ -25,7 +25,7 @@ Provides-Extra: gui
25
25
  Requires-Dist: pyqt6>=6.9.0; extra == 'gui'
26
26
  Description-Content-Type: text/markdown
27
27
 
28
- # Bear Utils v# Bear Utils v0.8.27
28
+ # Bear Utils
29
29
 
30
30
  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.
31
31
 
@@ -1,8 +1,9 @@
1
1
  bear_utils/__init__.py,sha256=Cin66XUC7cwuJ7ePZwgfdDnwFFPX_CHXOI3dMBWuyY8,1515
2
2
  bear_utils/__main__.py,sha256=-FlPquBlI1Tg2RoeX6d0Z8jTAiMFnJ0V06ZeRyiq58k,355
3
3
  bear_utils/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- bear_utils/_internal/cli.py,sha256=w3Cj8AM4iW5FNyM3ffCkBmwRoCWHc4JNYF26A35cxzw,2447
5
- bear_utils/_internal/debug.py,sha256=_Y2UzSuKqLYqNekuDR4NTE3CST5c4TnUHKnTRQ421Jk,4277
4
+ bear_utils/_internal/_version.py,sha256=DD0Z_9sibi1fvTl06e8BFOfZNivv3L6dD-1Z5VTp1ds,18
5
+ bear_utils/_internal/cli.py,sha256=RhxLz8qOvcLFVGYwYHUNmOWabUvi4Jj7TuUp_oWWMBc,3593
6
+ bear_utils/_internal/debug.py,sha256=UBSBZZUyIvoDxzpFz9CZ6IdKFctTkldg5l8tttVEaFc,4353
6
7
  bear_utils/ai/__init__.py,sha256=Q5P1KpSYS6iMt3vRbmasdWU5Oy5UkXfOGGyDI7Qy3Po,747
7
8
  bear_utils/ai/ai_helpers/__init__.py,sha256=6SiOQ71NNGvIkMX8pMnZ3lxK9WDZ2Zgo3P6TRS5pvP4,4351
8
9
  bear_utils/ai/ai_helpers/_common.py,sha256=KgaOb_IePfC8Z1VsdA0EiodfS_YGVYYnrZFR2ZdsUYM,418
@@ -12,6 +13,7 @@ bear_utils/ai/ai_helpers/_types.py,sha256=rmnl8mTlUj0LyL9USzTb-EN_31TtXY6qzhkOEu
12
13
  bear_utils/cache/__init__.py,sha256=c9z1mLhWpZJHZdXRlviYQXl8tc9KTJCM8vin3moDO3I,4578
13
14
  bear_utils/cli/__init__.py,sha256=PXyieBmyYk4ceIB5gL5KMH8Prpc5xfiUW0_d2zI3bSU,629
14
15
  bear_utils/cli/_args.py,sha256=u5gcJGI90gdLLFH3klWGmGD6e8r2j6Zu8X_d0c7pfmM,285
16
+ bear_utils/cli/_get_version.py,sha256=swIFf_ABFfvgUvmUxm3UxZyPStUGq6d0fwPiplc8AFQ,6869
15
17
  bear_utils/cli/commands.py,sha256=5ppEjvVV_g28WLaIFtKgz-ctzwoo-g-KpHTXNx9xBzo,3161
16
18
  bear_utils/cli/prompt_helpers.py,sha256=VGNwbPDYXO-FoYkACI0Zq7_IUWThexGlycvt9RBzjEU,6844
17
19
  bear_utils/cli/typer_bridge.py,sha256=RE30vf7LQzdGeWvP08W_N_FZ3r2hoD372uHOqTmzcK0,3405
@@ -23,12 +25,12 @@ bear_utils/config/__init__.py,sha256=HC_lWpmLF0kbPr5i1Wa2FLER2b446E_GecgU9EPmc04
23
25
  bear_utils/config/config_manager.py,sha256=Xj0xOmY-wo_rwfcWiXyxNZWX9NknX_Jm9W56Gx8yyHQ,8244
24
26
  bear_utils/config/dir_manager.py,sha256=slIy1oRr7VIPdsiwN66-xQiuSvgqm_j6d1IrKhxRsSk,2028
25
27
  bear_utils/config/settings_manager.py,sha256=0hvqLzSiA8f9UVN45UY2-SIHMmOsg1eDctbg293qyyU,5978
26
- bear_utils/constants/__init__.py,sha256=DUn9znp04gY1YddPdc8DvKa2lFBw5ohiD6-ndmaA6xs,2093
28
+ bear_utils/constants/__init__.py,sha256=sKcb6f5PG5iKt4QjF04DBnX8uvdwIWCiGPMBEAuRxgc,2185
27
29
  bear_utils/constants/_exceptions.py,sha256=gnAGTmuD9NYpJakeLrYHAyPrAQPHDNahY_rS42Ct39k,251
28
- bear_utils/constants/_exit_code.py,sha256=0VR9SW_MSc6oLh8_0OErmsHWDyiPpox33dZnawFq0hw,2606
29
- bear_utils/constants/_http_status_code.py,sha256=LPNRxst_VxZOYOwt2fXjcQwpiPyU3-LooQa_YAFIRxg,1174
30
+ bear_utils/constants/_exit_code.py,sha256=wXNddil8NhY2a4PJRIpzOEXxx9w0A7D_L0G0xgSXFls,2618
31
+ bear_utils/constants/_http_status_code.py,sha256=C-wH9VDdeer7DWogaEsLsLlxdYYfPcczz6w8-R80ioU,1186
30
32
  bear_utils/constants/_lazy_typing.py,sha256=WfuWpRqx9XchvuyPWg3tVjMC5-C4QA-Bhwfskf4YmAE,339
31
- bear_utils/constants/_meta.py,sha256=P87e5C0zg3W_HHHW1MfbS4h2CQWE_51KqYZRvKNfZ9c,3026
33
+ bear_utils/constants/_meta.py,sha256=xIihBq4tpe-byHmkyLgUH2N5863aQ-m9x5F2OZ3p6TA,3708
32
34
  bear_utils/constants/date_related.py,sha256=vwgPPGamVJ8p12iRFu3IzTksmGfhqYULwrk-W2LLiZU,559
33
35
  bear_utils/constants/time_related.py,sha256=Mykb27THqC-K0HFrbbrdkTNJUKhzBEOfmPJ0rx2-L6E,705
34
36
  bear_utils/database/__init__.py,sha256=dS_HHJKESpsI6BFDLVx055o0GCJV9CMYOQVuHs7EfgY,192
@@ -61,7 +63,7 @@ bear_utils/graphics/image_helpers.py,sha256=AaDQm6uunIdVkcMSXmoiaNQ68zRQQJ6bbhoA
61
63
  bear_utils/graphics/font/__init__.py,sha256=lW6ZPepKHS9fBkWEwV_n5YSqlS5S9bMMogHtaXaHHd0,291
62
64
  bear_utils/graphics/font/_raw_block_letters.py,sha256=i85DN-Va_u3D-gXvbIYyjL0FDv9jd-1UcmObw5rxgMY,7143
63
65
  bear_utils/graphics/font/_theme.py,sha256=H1kNvpd_9T_SdO5nF3oA_47lMV62P3a6ZoFE2dc8f4U,344
64
- bear_utils/graphics/font/block_font.py,sha256=CZP7mlMqPpQqiQSMXrWn-if1PBYdAGKQWvln4-oNuw4,2542
66
+ bear_utils/graphics/font/block_font.py,sha256=iFxZFpVvuiN0Xjj5dTzeMXznyYIWx3oLS86vZz9Th1I,2873
65
67
  bear_utils/graphics/font/glitch_font.py,sha256=154PlocfMZcPe-26hP5hd6wFSi-DX5P4ql1gqYM5MIY,2012
66
68
  bear_utils/gui/__init__.py,sha256=z_rOZ-nN3E6Hd_nGD6SdDVqE61VUk2OOogI6U89nkkA,349
67
69
  bear_utils/gui/gui_tools/__init__.py,sha256=cD6cKxU1cmKDVaBRT8KsqsCbulf6TUNAmVr50XGPpo8,446
@@ -74,7 +76,7 @@ bear_utils/gui/gui_tools/qt_input_dialog.py,sha256=5KaCM9q8kmoy-Fd0j1FbXIVrLlE7W
74
76
  bear_utils/logger_manager/__init__.py,sha256=rzBrDWHwwPTe29pi5YdJP_s_5u-Ufm64WX4R9-bCFAw,3863
75
77
  bear_utils/logger_manager/_common.py,sha256=kPTE4e0FKI8IBW1B5X7jJPVJtqgJtKYsX8gy8obg9OQ,1866
76
78
  bear_utils/logger_manager/_console_junk.py,sha256=2fwiYjZZps3GrH5An7aU3Bgvb_aAJiqNzTnKaku6m-0,4916
77
- bear_utils/logger_manager/_log_level.py,sha256=fAMaMHqjOfGCe5V-keH1tWYCuiLQ1uvmL4Q0aFtEfpQ,1097
79
+ bear_utils/logger_manager/_log_level.py,sha256=qg2LmxDPp6u5qbYBlD6DA8hJrMHQhR5pyV1BjVGdG_c,1109
78
80
  bear_utils/logger_manager/_styles.py,sha256=1mYHnENhLUWHB2QSpT9CB3_dzgBjhBxM1sh5UGEUULU,2527
79
81
  bear_utils/logger_manager/logger_protocol.py,sha256=FONihllK314pVir01RhlJ4sxcluuwYwAt_JZs2TWT-s,1300
80
82
  bear_utils/logger_manager/loggers/__init__.py,sha256=ashcnkvQIUQDLbUtU6QILkMjP_fMaeHAN1w7pHLWqQk,67
@@ -98,6 +100,7 @@ bear_utils/monitoring/__init__.py,sha256=9DKNIWTp_voLnaWgiP-wJ-o_N0hYixo-MzjUmg8
98
100
  bear_utils/monitoring/_common.py,sha256=LYQFxgTP9fk0cH71IQTuGwBYYPWCqHP_mMRNecoD76M,657
99
101
  bear_utils/monitoring/host_monitor.py,sha256=e0TYRJw9iDj5Ga6y3ck1TBFEeH42Cax5mQYaNU8yams,13241
100
102
  bear_utils/time/__init__.py,sha256=VctjJG17SyEHAFXytI1sZrOrq7zm3hVenIDOJFdaMN0,1424
101
- bear_utils-0.8.27.dist-info/METADATA,sha256=qNjArkYhouFy1Ab9kTwRrTksBWDw3-gwB6fJRxPMP-0,8792
102
- bear_utils-0.8.27.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
103
- bear_utils-0.8.27.dist-info/RECORD,,
103
+ bear_utils-0.9.2.dist-info/METADATA,sha256=DPxOotXwR1EJk8VTKce4ROTalUkfP5eXi1rCZsFctko,8769
104
+ bear_utils-0.9.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
105
+ bear_utils-0.9.2.dist-info/entry_points.txt,sha256=ZG_lgmgtQVuC19anERWKEmvGn5BBUO1UfTxuCb2MVDk,114
106
+ bear_utils-0.9.2.dist-info/RECORD,,
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ bump = bear_utils._internal.cli:bump_version
3
+ get-version = bear_utils._internal.cli:get_version