ry-app-bootstrap 0.1.0__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.
@@ -0,0 +1,13 @@
1
+ Metadata-Version: 2.4
2
+ Name: ry-app-bootstrap
3
+ Version: 0.1.0
4
+ Summary: Reusable runtime bootstrap helpers for Ross Python services
5
+ Author: Ross Yeager
6
+ Requires-Python: >=3.12
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: ry-pg-utils
9
+ Requires-Dist: ryutils
10
+
11
+ # ry-app-bootstrap
12
+
13
+ Shared runtime bootstrap helpers (logging and version loading).
@@ -0,0 +1,3 @@
1
+ # ry-app-bootstrap
2
+
3
+ Shared runtime bootstrap helpers (logging and version loading).
@@ -0,0 +1,21 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "ry-app-bootstrap"
7
+ version = "0.1.0"
8
+ description = "Reusable runtime bootstrap helpers for Ross Python services"
9
+ readme = "README.md"
10
+ requires-python = ">=3.12"
11
+ authors = [{ name = "Ross Yeager" }]
12
+ dependencies = [
13
+ "ry-pg-utils",
14
+ "ryutils",
15
+ ]
16
+
17
+ [tool.setuptools]
18
+ package-dir = {"" = "src"}
19
+
20
+ [tool.setuptools.packages.find]
21
+ where = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,6 @@
1
+ """Reusable runtime bootstrap helpers."""
2
+
3
+ from .logging import setup_logging
4
+ from .version import get_version
5
+
6
+ __all__ = ["setup_logging", "get_version"]
@@ -0,0 +1,52 @@
1
+ import logging
2
+ import typing as T
3
+
4
+ from google.protobuf.timestamp_pb2 import Timestamp
5
+ from ry_pg_utils.dynamic_table import DynamicTableDb
6
+ from ryutils import log
7
+
8
+ from .types import LogMessagePbProtocol
9
+
10
+ LOGGING_CALLBACK_DB = "LogErrorMessages"
11
+
12
+
13
+ def logging_error_db_callback(
14
+ message: str,
15
+ log_message_cls: type[LogMessagePbProtocol],
16
+ db_name: T.Optional[str] = None,
17
+ ) -> None:
18
+ message_pb = log_message_cls()
19
+
20
+ try:
21
+ message_pb.message = message
22
+ except Exception as exc: # pylint: disable=broad-except
23
+ err_message = f"Failed to log message to DB: {exc}"
24
+ print(err_message)
25
+ message_pb.message = err_message
26
+
27
+ if not db_name:
28
+ return
29
+
30
+ timestamp = Timestamp()
31
+ timestamp.GetCurrentTime()
32
+ message_pb.utime.CopyFrom(timestamp)
33
+ DynamicTableDb.log_data_to_db(message_pb, db_name, LOGGING_CALLBACK_DB, log_print_failure=False)
34
+
35
+
36
+ def setup_logging(
37
+ log_dir: str,
38
+ log_level: str,
39
+ log_name: str,
40
+ log_message_cls: type[LogMessagePbProtocol],
41
+ downsample_count: int = 1,
42
+ ) -> None:
43
+ callback = lambda msg, db_name=None: logging_error_db_callback(msg, log_message_cls, db_name)
44
+ log.setup(
45
+ log_dir,
46
+ log_level,
47
+ log_name,
48
+ use_multihandler=False,
49
+ downsample_count=downsample_count,
50
+ callback=callback,
51
+ callback_level=logging.ERROR,
52
+ )
@@ -0,0 +1,10 @@
1
+ import typing as T
2
+
3
+
4
+ class TimestampCopyProtocol(T.Protocol):
5
+ def CopyFrom(self, other: T.Any) -> None: ...
6
+
7
+
8
+ class LogMessagePbProtocol(T.Protocol):
9
+ message: str
10
+ utime: TimestampCopyProtocol
@@ -0,0 +1,9 @@
1
+ import os
2
+
3
+
4
+ def get_version(version_file_path: str) -> str:
5
+ if not os.path.exists(version_file_path):
6
+ return ""
7
+
8
+ with open(version_file_path, "r", encoding="utf-8") as infile:
9
+ return infile.read().strip()
@@ -0,0 +1,13 @@
1
+ Metadata-Version: 2.4
2
+ Name: ry-app-bootstrap
3
+ Version: 0.1.0
4
+ Summary: Reusable runtime bootstrap helpers for Ross Python services
5
+ Author: Ross Yeager
6
+ Requires-Python: >=3.12
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: ry-pg-utils
9
+ Requires-Dist: ryutils
10
+
11
+ # ry-app-bootstrap
12
+
13
+ Shared runtime bootstrap helpers (logging and version loading).
@@ -0,0 +1,11 @@
1
+ README.md
2
+ pyproject.toml
3
+ src/ry_app_bootstrap/__init__.py
4
+ src/ry_app_bootstrap/logging.py
5
+ src/ry_app_bootstrap/types.py
6
+ src/ry_app_bootstrap/version.py
7
+ src/ry_app_bootstrap.egg-info/PKG-INFO
8
+ src/ry_app_bootstrap.egg-info/SOURCES.txt
9
+ src/ry_app_bootstrap.egg-info/dependency_links.txt
10
+ src/ry_app_bootstrap.egg-info/requires.txt
11
+ src/ry_app_bootstrap.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ ry-pg-utils
2
+ ryutils
@@ -0,0 +1 @@
1
+ ry_app_bootstrap