ry-pg-utils 1.0.10__py3-none-any.whl → 1.0.14__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.
ry_pg_utils/config.py CHANGED
@@ -39,14 +39,14 @@ pg_config = Config(
39
39
  postgres_db=os.getenv("POSTGRES_DB"),
40
40
  postgres_user=os.getenv("POSTGRES_USER"),
41
41
  postgres_password=os.getenv("POSTGRES_PASSWORD"),
42
- do_publish_db=False,
42
+ do_publish_db=True,
43
43
  use_local_db_only=True,
44
44
  backend_id=(
45
45
  os.getenv("POSTGRES_USER")
46
46
  or f"{socket.gethostname()}_{socket.gethostbyname(socket.gethostname())}"
47
47
  ),
48
- add_backend_to_all=True,
49
- add_backend_to_tables=True,
48
+ add_backend_to_all=False,
49
+ add_backend_to_tables=False,
50
50
  raise_on_use_before_init=True,
51
51
  ssh_host=os.getenv("SSH_HOST"),
52
52
  ssh_port=_ssh_port,
ry_pg_utils/connect.py CHANGED
@@ -5,11 +5,10 @@ import threading
5
5
  import typing as T
6
6
 
7
7
  from ryutils import log
8
- from sqlalchemy import Column, String, create_engine, event
8
+ from sqlalchemy import String, create_engine, event
9
9
  from sqlalchemy.engine.base import Engine
10
10
  from sqlalchemy.exc import OperationalError
11
- from sqlalchemy.orm import declarative_base, declared_attr, scoped_session, sessionmaker
12
- from sqlalchemy.orm.decl_api import DeclarativeMeta
11
+ from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, scoped_session, sessionmaker
13
12
  from sqlalchemy.orm.scoping import ScopedSession
14
13
  from sqlalchemy_utils import database_exists
15
14
  from tenacity import retry, stop_after_attempt, wait_exponential
@@ -22,20 +21,19 @@ BACKEND_ID_VARIABLE = "backend_id"
22
21
  ENGINE: T.Dict[str, Engine] = {}
23
22
  THREAD_SAFE_SESSION_FACTORY: T.Dict[str, ScopedSession] = {}
24
23
 
25
- # Base class with optional backend_id field
24
+
25
+ # Modern SQLAlchemy 2.0 declarative base
26
26
  if config.pg_config.add_backend_to_all:
27
- # Add any common fields here
28
- class CommonBaseModel:
29
- @declared_attr
30
- def backend_id(cls: T.Any) -> Column: # pylint: disable=no-self-argument
31
- return Column(String(256), nullable=False)
32
27
 
33
- Base = declarative_base(name="Base", cls=CommonBaseModel)
28
+ class Base(DeclarativeBase):
29
+ """Base class with automatic backend_id field."""
30
+
31
+ backend_id: Mapped[str] = mapped_column(String(256), nullable=False)
32
+
34
33
  else:
35
- Base = declarative_base(name="Base")
36
34
 
37
- # Add type annotation for Base
38
- Base: DeclarativeMeta # type: ignore
35
+ class Base(DeclarativeBase): # type: ignore[no-redef]
36
+ """Base class for all SQLAlchemy models."""
39
37
 
40
38
 
41
39
  def get_table_name(
@@ -1,11 +1,11 @@
1
1
  from ry_redis_bus.channels import Channel
2
2
 
3
- from ry_pg_utils.pb_types.database_pb2 import DatabaseConfigPb # pylint: disable=no-name-in-module
4
3
  from ry_pg_utils.pb_types.database_pb2 import ( # pylint: disable=no-name-in-module
5
4
  DatabaseNotificationPb,
5
+ PostgresMessagePb,
6
6
  )
7
7
 
8
8
  # Channels
9
- DATABASE_CHANNEL = Channel("DATABASE_CHANNEL", DatabaseConfigPb)
10
- DATABASE_CONFIG_CHANNEL = Channel("DATABASE_CONFIG_CHANNEL", DatabaseConfigPb)
9
+ DATABASE_CHANNEL = Channel("DATABASE_CHANNEL", PostgresMessagePb)
10
+ DATABASE_CONFIG_CHANNEL = Channel("DATABASE_CONFIG_CHANNEL", PostgresMessagePb)
11
11
  DATABASE_NOTIFY_CHANNEL = Channel("DATABASE_NOTIFY_CHANNEL", DatabaseNotificationPb)
ry_pg_utils/updater.py CHANGED
@@ -45,14 +45,12 @@ def get_database_settings(
45
45
  class DbUpdater(RedisClientBase):
46
46
  do_publish_db: bool
47
47
  postgres_info: PostgresInfo
48
- backend_id: str
49
48
  logging_error_db_callback: T.Callable[[str, str], None] | None
50
49
 
51
50
  def __init__(
52
51
  self,
53
52
  redis_info: RedisInfo,
54
53
  args: argparse.Namespace,
55
- backend_id: str,
56
54
  verbose: Verbose,
57
55
  logging_error_db_callback: T.Callable[[str, str], None] | None = None,
58
56
  ):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ry-pg-utils
3
- Version: 1.0.10
3
+ Version: 1.0.14
4
4
  Summary: Utility functions for PostgreSQL
5
5
  Author: Ross Yeager
6
6
  Author-email: ryeager12@email.com
@@ -1,22 +1,22 @@
1
1
  ry_pg_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- ry_pg_utils/config.py,sha256=7W-JLNxZDoursPArtoKyOiEqUABGyO1ZEkTdlVBzdVM,1522
3
- ry_pg_utils/connect.py,sha256=jF-Sj9oySPDfTlOh4_C6c03t4KW5Sef_MLHx_sh52a4,10108
2
+ ry_pg_utils/config.py,sha256=56FQwRdkAjrzR4IFWKLZdt6NeULxAIrQyhnKC5XJ7-M,1523
3
+ ry_pg_utils/connect.py,sha256=ECasbbwXCsj1pJwz_er2aKW613X73X30EQyS_TgX5i0,9942
4
4
  ry_pg_utils/dynamic_table.py,sha256=VBkfbATRk_pW3EtAFHvMkGG0fLZMebw_LdWkFaDDugw,6866
5
5
  ry_pg_utils/notify_trigger.py,sha256=_dsuPkoqjnSQqWrsdZK3FqI6zG5UuygVXHwtERwN99Y,12069
6
6
  ry_pg_utils/parse_args.py,sha256=swFYq2-nBggul67C9ibNzsf9goEXDKZkLNSISbJZgOw,751
7
7
  ry_pg_utils/postgres_info.py,sha256=mj9er830jvrJXUFuFKx1EmZMjuEpMDcd901kgYb_Cck,1495
8
8
  ry_pg_utils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- ry_pg_utils/updater.py,sha256=vmsmiRZuKQlwNbtz6MAYOOfQPvq0lJm2pQuHCMdPCU0,5606
9
+ ry_pg_utils/updater.py,sha256=qEj1Wc4f-z5ixw_twqvG4vXdlTICSi7fBPZzzbGeafY,5561
10
10
  ry_pg_utils/ipc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- ry_pg_utils/ipc/channels.py,sha256=3w88R_BW5wLW7NX4iNAS3akgXo0JFQufdR7y-l_dNGE,499
11
+ ry_pg_utils/ipc/channels.py,sha256=U8MKblm8I-LfokmkC-WuCJmUjr-1KGQJB5Fsdnc1R8M,424
12
12
  ry_pg_utils/pb_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  ry_pg_utils/pb_types/database_pb2.py,sha256=j56AaBNQOFHp19O-8egcil3e0x8rujhlnAFuXIyMvx0,1886
14
14
  ry_pg_utils/pb_types/database_pb2.pyi,sha256=PtBakRFPx_o9PkpvYgn0doNoaoz6X03eI9TrnpfamkI,3267
15
15
  ry_pg_utils/pb_types/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  ry_pg_utils/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  ry_pg_utils/tools/db_query.py,sha256=sQESUB3zxv3h2bKcodfwJHKHGXdSn6BNaBiyZvg6eNY,19557
18
- ry_pg_utils-1.0.10.dist-info/licenses/LICENSE,sha256=PYnig94SABlde939TWrqvOqQkkfjuHttf8KpWKlPFlA,1068
19
- ry_pg_utils-1.0.10.dist-info/METADATA,sha256=RyQKGCyHMMGCXymlI1PJeb7cXn8jPAq-cRhYKN3BB8c,18040
20
- ry_pg_utils-1.0.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
- ry_pg_utils-1.0.10.dist-info/top_level.txt,sha256=OruzbmsQHYyPnAw8RichQ5GK1Sxj-MQwWfJ93PEHXIM,12
22
- ry_pg_utils-1.0.10.dist-info/RECORD,,
18
+ ry_pg_utils-1.0.14.dist-info/licenses/LICENSE,sha256=PYnig94SABlde939TWrqvOqQkkfjuHttf8KpWKlPFlA,1068
19
+ ry_pg_utils-1.0.14.dist-info/METADATA,sha256=24mYDITuQCHhUnq-VyogPzhDiLIFhLn0u721srSkF3o,18040
20
+ ry_pg_utils-1.0.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
+ ry_pg_utils-1.0.14.dist-info/top_level.txt,sha256=OruzbmsQHYyPnAw8RichQ5GK1Sxj-MQwWfJ93PEHXIM,12
22
+ ry_pg_utils-1.0.14.dist-info/RECORD,,