python3-cyberfusion-queue-support 3.2.1__tar.gz → 3.3.1__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 (58) hide show
  1. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/PKG-INFO +5 -5
  2. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/pyproject.toml +5 -5
  3. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/database.py +71 -38
  4. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/env.py +2 -2
  5. python3_cyberfusion_queue_support-3.3.1/src/cyberfusion/QueueSupport/settings.py +16 -0
  6. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/python3_cyberfusion_queue_support.egg-info/PKG-INFO +5 -5
  7. python3_cyberfusion_queue_support-3.3.1/src/python3_cyberfusion_queue_support.egg-info/requires.txt +5 -0
  8. python3_cyberfusion_queue_support-3.2.1/src/cyberfusion/QueueSupport/settings.py +0 -15
  9. python3_cyberfusion_queue_support-3.2.1/src/python3_cyberfusion_queue_support.egg-info/requires.txt +0 -5
  10. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/README.md +0 -0
  11. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/setup.cfg +0 -0
  12. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/__init__.py +0 -0
  13. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/encoders.py +0 -0
  14. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/enums.py +0 -0
  15. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/exceptions/__init__.py +0 -0
  16. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/interfaces.py +0 -0
  17. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/__init__.py +0 -0
  18. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/chmod.py +0 -0
  19. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/chown.py +0 -0
  20. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/command.py +0 -0
  21. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/copy.py +0 -0
  22. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/database_create.py +0 -0
  23. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/database_drop.py +0 -0
  24. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/database_user_drop.py +0 -0
  25. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/database_user_ensure_state.py +0 -0
  26. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/database_user_grant_grant.py +0 -0
  27. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/database_user_grant_revoke.py +0 -0
  28. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/mkdir.py +0 -0
  29. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/move.py +0 -0
  30. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/rmtree.py +0 -0
  31. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/systemd_daemon_reload.py +0 -0
  32. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/systemd_tmp_files_create.py +0 -0
  33. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/systemd_unit_disable.py +0 -0
  34. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/systemd_unit_enable.py +0 -0
  35. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/systemd_unit_reload.py +0 -0
  36. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/systemd_unit_restart.py +0 -0
  37. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/systemd_unit_start.py +0 -0
  38. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/systemd_unit_stop.py +0 -0
  39. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/items/unlink.py +0 -0
  40. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/__init__.py +0 -0
  41. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/versions/03d4e411c575_add_fail_silently.py +0 -0
  42. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/versions/2f4316506856_add_cascade_deletes.py +0 -0
  43. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/versions/52d1b17abcd0_add_status.py +0 -0
  44. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/versions/571e55ab5ed5_initial_migration.py +0 -0
  45. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/versions/8023b9eecdd1_add_traceback_to_queue_items.py +0 -0
  46. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/versions/8406a0af7394_set_status_on_existing_queue_processes.py +0 -0
  47. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/versions/93c79cb2baba_add_indexes.py +0 -0
  48. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/versions/9ae29b5db790_add_string_to_queue_item_outcomes.py +0 -0
  49. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/migrations/versions/__init__.py +0 -0
  50. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/outcomes.py +0 -0
  51. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/scripts/__init__.py +0 -0
  52. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/scripts/purge_queues.py +0 -0
  53. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/sentinels.py +0 -0
  54. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/cyberfusion/QueueSupport/utilities.py +0 -0
  55. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/python3_cyberfusion_queue_support.egg-info/SOURCES.txt +0 -0
  56. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/python3_cyberfusion_queue_support.egg-info/dependency_links.txt +0 -0
  57. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/python3_cyberfusion_queue_support.egg-info/entry_points.txt +0 -0
  58. {python3_cyberfusion_queue_support-3.2.1 → python3_cyberfusion_queue_support-3.3.1}/src/python3_cyberfusion_queue_support.egg-info/top_level.txt +0 -0
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-cyberfusion-queue-support
3
- Version: 3.2.1
3
+ Version: 3.3.1
4
4
  Summary: Library to queue actions.
5
5
  Author-email: Cyberfusion <support@cyberfusion.io>
6
6
  Project-URL: Source, https://github.com/CyberfusionIO/python3-cyberfusion-queue-support
7
7
  Description-Content-Type: text/markdown
8
8
  Requires-Dist: python3-cyberfusion-systemd-support~=2.2
9
- Requires-Dist: python3-cyberfusion-database-support~=3.0
10
- Requires-Dist: alembic==1.8.1
11
- Requires-Dist: SQLAlchemy==1.4.46
12
- Requires-Dist: pydantic[dotenv]==1.10.4
9
+ Requires-Dist: python3-cyberfusion-database-support~=3.2
10
+ Requires-Dist: alembic==1.13.2
11
+ Requires-Dist: SQLAlchemy==2.0.40
12
+ Requires-Dist: pydantic-settings==2.8.1
13
13
 
14
14
  # python3-cyberfusion-queue-support
15
15
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python3-cyberfusion-queue-support"
7
- version = "3.2.1"
7
+ version = "3.3.1"
8
8
  description = "Library to queue actions."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -12,10 +12,10 @@ authors = [
12
12
  ]
13
13
  dependencies = [
14
14
  "python3-cyberfusion-systemd-support~=2.2",
15
- "python3-cyberfusion-database-support~=3.0",
16
- "alembic==1.8.1",
17
- "SQLAlchemy==1.4.46",
18
- "pydantic[dotenv]==1.10.4",
15
+ "python3-cyberfusion-database-support~=3.2",
16
+ "alembic==1.13.2",
17
+ "SQLAlchemy==2.0.40",
18
+ "pydantic-settings==2.8.1",
19
19
  ]
20
20
 
21
21
  [project.urls]
@@ -1,3 +1,4 @@
1
+ from typing import List, Optional
1
2
  import json
2
3
  from sqlalchemy import Enum
3
4
 
@@ -7,12 +8,11 @@ import functools
7
8
  from alembic import command
8
9
  import sqlite3
9
10
  from datetime import datetime, timezone
10
-
11
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
11
12
  from sqlalchemy.pool.base import _ConnectionRecord
12
13
  from sqlalchemy import ForeignKey, MetaData, Boolean
13
- from sqlalchemy import create_engine, Column, DateTime, Integer, String
14
- from sqlalchemy.orm import Session, sessionmaker, relationship
15
- from sqlalchemy.ext.declarative import declarative_base
14
+ from sqlalchemy import create_engine, DateTime, Integer, String
15
+ from sqlalchemy.orm import Session, sessionmaker, DeclarativeBase
16
16
  from sqlalchemy import event
17
17
  from sqlalchemy.types import JSON
18
18
 
@@ -65,19 +65,22 @@ naming_convention = {
65
65
  "pk": "pk_%(table_name)s",
66
66
  }
67
67
 
68
- metadata = MetaData(naming_convention=naming_convention)
68
+ metadata_obj = MetaData(naming_convention=naming_convention)
69
+
69
70
 
70
- Base = declarative_base(metadata=metadata)
71
+ class Base(DeclarativeBase):
72
+ metadata = metadata_obj
71
73
 
72
74
 
73
- class BaseModel(Base): # type: ignore[misc, valid-type]
75
+ class BaseModel(Base):
74
76
  """Base model."""
75
77
 
76
78
  __abstract__ = True
77
79
 
78
- id = Column(Integer, primary_key=True)
79
- created_at = Column(
80
- DateTime, default=functools.partial(datetime.now, timezone.utc), nullable=False
80
+ id: Mapped[int] = mapped_column(Integer, primary_key=True)
81
+ created_at: Mapped[datetime] = mapped_column(
82
+ DateTime,
83
+ default=functools.partial(datetime.now, timezone.utc),
81
84
  )
82
85
 
83
86
 
@@ -86,12 +89,12 @@ class Queue(BaseModel):
86
89
 
87
90
  __tablename__ = "queues"
88
91
 
89
- queue_items = relationship(
92
+ queue_items: Mapped[List["QueueItem"]] = relationship(
90
93
  "QueueItem",
91
94
  back_populates="queue",
92
95
  cascade="all, delete",
93
96
  )
94
- queue_processes = relationship(
97
+ queue_processes: Mapped[List["QueueProcess"]] = relationship(
95
98
  "QueueProcess",
96
99
  back_populates="queue",
97
100
  cascade="all, delete",
@@ -103,14 +106,20 @@ class QueueProcess(BaseModel):
103
106
 
104
107
  __tablename__ = "queue_processes"
105
108
 
106
- queue_id = Column(
107
- Integer, ForeignKey("queues.id", ondelete="CASCADE"), nullable=False, index=True
109
+ queue_id: Mapped[int] = mapped_column(
110
+ Integer, ForeignKey("queues.id", ondelete="CASCADE"), index=True
111
+ )
112
+ preview: Mapped[bool] = mapped_column(
113
+ Boolean,
114
+ )
115
+ status: Mapped[Optional[QueueProcessStatus]] = mapped_column(
116
+ Enum(QueueProcessStatus),
108
117
  )
109
- preview = Column(Boolean, nullable=False)
110
- status = Column(Enum(QueueProcessStatus), nullable=True)
111
118
 
112
- queue = relationship("Queue", back_populates="queue_processes")
113
- queue_item_outcomes = relationship(
119
+ queue: Mapped["Queue"] = relationship(
120
+ "Queue", back_populates="queue_processes", uselist=False
121
+ )
122
+ queue_item_outcomes: Mapped[List["QueueItemOutcome"]] = relationship(
114
123
  "QueueItemOutcome",
115
124
  back_populates="queue_process",
116
125
  cascade="all, delete",
@@ -122,19 +131,35 @@ class QueueItem(BaseModel):
122
131
 
123
132
  __tablename__ = "queue_items"
124
133
 
125
- queue_id = Column(
126
- Integer, ForeignKey("queues.id", ondelete="CASCADE"), nullable=False, index=True
134
+ queue_id: Mapped[int] = mapped_column(
135
+ Integer, ForeignKey("queues.id", ondelete="CASCADE"), index=True
136
+ )
137
+ type: Mapped[str] = mapped_column(
138
+ String(length=255),
139
+ )
140
+ reference: Mapped[Optional[str]] = mapped_column(
141
+ String(length=255),
142
+ )
143
+ hide_outcomes: Mapped[bool] = mapped_column(
144
+ Boolean,
145
+ )
146
+ fail_silently: Mapped[bool] = mapped_column(
147
+ Boolean,
148
+ )
149
+ deduplicated: Mapped[bool] = mapped_column(
150
+ Boolean,
151
+ )
152
+ attributes: Mapped[dict] = mapped_column(
153
+ JSON,
154
+ )
155
+ traceback: Mapped[Optional[str]] = mapped_column(
156
+ String(),
127
157
  )
128
- type = Column(String(length=255), nullable=False)
129
- reference = Column(String(length=255), nullable=True)
130
- hide_outcomes = Column(Boolean, nullable=False)
131
- fail_silently = Column(Boolean, nullable=False)
132
- deduplicated = Column(Boolean, nullable=False)
133
- attributes = Column(JSON, nullable=False)
134
- traceback = Column(String(), nullable=True)
135
158
 
136
- queue = relationship("Queue", back_populates="queue_items")
137
- queue_item_outcomes = relationship(
159
+ queue: Mapped["Queue"] = relationship(
160
+ "Queue", back_populates="queue_items", uselist=False
161
+ )
162
+ queue_item_outcomes: Mapped[List["QueueItemOutcome"]] = relationship(
138
163
  "QueueItemOutcome",
139
164
  back_populates="queue_item",
140
165
  cascade="all, delete",
@@ -146,21 +171,29 @@ class QueueItemOutcome(BaseModel):
146
171
 
147
172
  __tablename__ = "queue_item_outcomes"
148
173
 
149
- queue_item_id = Column(
174
+ queue_item_id: Mapped[int] = mapped_column(
150
175
  Integer,
151
176
  ForeignKey("queue_items.id", ondelete="CASCADE"),
152
- nullable=False,
153
177
  index=True,
154
178
  )
155
- queue_process_id = Column(
179
+ queue_process_id: Mapped[int] = mapped_column(
156
180
  Integer,
157
181
  ForeignKey("queue_processes.id", ondelete="CASCADE"),
158
- nullable=False,
159
182
  index=True,
160
183
  )
161
- type = Column(String(length=255), nullable=False)
162
- attributes = Column(JSON, nullable=False)
163
- string = Column(String(length=255), nullable=False)
184
+ type: Mapped[str] = mapped_column(
185
+ String(length=255),
186
+ )
187
+ attributes: Mapped[dict] = mapped_column(
188
+ JSON,
189
+ )
190
+ string: Mapped[str] = mapped_column(
191
+ String(length=255),
192
+ )
164
193
 
165
- queue_item = relationship("QueueItem", back_populates="queue_item_outcomes")
166
- queue_process = relationship("QueueProcess", back_populates="queue_item_outcomes")
194
+ queue_item: Mapped["QueueItem"] = relationship(
195
+ "QueueItem", back_populates="queue_item_outcomes", uselist=False
196
+ )
197
+ queue_process: Mapped["QueueProcess"] = relationship(
198
+ "QueueProcess", back_populates="queue_item_outcomes"
199
+ )
@@ -5,14 +5,14 @@ from sqlalchemy import pool
5
5
 
6
6
  from alembic import context
7
7
 
8
- from cyberfusion.QueueSupport import database
8
+ from cyberfusion.QueueSupport.database import Base
9
9
 
10
10
  config = context.config
11
11
 
12
12
  if config.config_file_name is not None:
13
13
  fileConfig(config.config_file_name)
14
14
 
15
- target_metadata = database.metadata
15
+ target_metadata = Base.metadata
16
16
 
17
17
 
18
18
  def run_migrations_offline() -> None:
@@ -0,0 +1,16 @@
1
+ from pydantic_settings import BaseSettings, SettingsConfigDict
2
+
3
+
4
+ class Settings(BaseSettings):
5
+ model_config = SettingsConfigDict(
6
+ env_prefix="queue_support_",
7
+ env_file=(".env", "/etc/queue-support.conf"),
8
+ extra="ignore",
9
+ )
10
+
11
+ database_path: str = "sqlite:///./queue-support.db"
12
+
13
+ queue_purge_days: int = 30
14
+
15
+
16
+ settings = Settings()
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-cyberfusion-queue-support
3
- Version: 3.2.1
3
+ Version: 3.3.1
4
4
  Summary: Library to queue actions.
5
5
  Author-email: Cyberfusion <support@cyberfusion.io>
6
6
  Project-URL: Source, https://github.com/CyberfusionIO/python3-cyberfusion-queue-support
7
7
  Description-Content-Type: text/markdown
8
8
  Requires-Dist: python3-cyberfusion-systemd-support~=2.2
9
- Requires-Dist: python3-cyberfusion-database-support~=3.0
10
- Requires-Dist: alembic==1.8.1
11
- Requires-Dist: SQLAlchemy==1.4.46
12
- Requires-Dist: pydantic[dotenv]==1.10.4
9
+ Requires-Dist: python3-cyberfusion-database-support~=3.2
10
+ Requires-Dist: alembic==1.13.2
11
+ Requires-Dist: SQLAlchemy==2.0.40
12
+ Requires-Dist: pydantic-settings==2.8.1
13
13
 
14
14
  # python3-cyberfusion-queue-support
15
15
 
@@ -0,0 +1,5 @@
1
+ python3-cyberfusion-systemd-support~=2.2
2
+ python3-cyberfusion-database-support~=3.2
3
+ alembic==1.13.2
4
+ SQLAlchemy==2.0.40
5
+ pydantic-settings==2.8.1
@@ -1,15 +0,0 @@
1
- from pydantic import BaseSettings
2
-
3
-
4
- class Settings(BaseSettings):
5
- database_path: str = "sqlite:///./queue-support.db"
6
-
7
- queue_purge_days: int = 30
8
-
9
- class Config:
10
- env_prefix = "queue_support_"
11
-
12
- env_file = ".env", "/etc/queue-support.conf"
13
-
14
-
15
- settings = Settings()
@@ -1,5 +0,0 @@
1
- python3-cyberfusion-systemd-support~=2.2
2
- python3-cyberfusion-database-support~=3.0
3
- alembic==1.8.1
4
- SQLAlchemy==1.4.46
5
- pydantic[dotenv]==1.10.4