python3-cyberfusion-queue-support 2.6.3__tar.gz → 2.7__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 (49) hide show
  1. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/PKG-INFO +1 -1
  2. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/pyproject.toml +1 -1
  3. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/__init__.py +2 -8
  4. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/database.py +28 -12
  5. python3_cyberfusion_queue_support-2.7/src/cyberfusion/QueueSupport/encoders.py +42 -0
  6. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_user_drop.py +3 -3
  7. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_user_ensure_state.py +3 -3
  8. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/PKG-INFO +1 -1
  9. python3_cyberfusion_queue_support-2.6.3/src/cyberfusion/QueueSupport/encoders.py +0 -21
  10. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/README.md +0 -0
  11. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/setup.cfg +0 -0
  12. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/exceptions/__init__.py +0 -0
  13. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/interfaces.py +0 -0
  14. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/__init__.py +0 -0
  15. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/chmod.py +0 -0
  16. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/chown.py +0 -0
  17. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/command.py +0 -0
  18. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/copy.py +0 -0
  19. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_create.py +0 -0
  20. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_drop.py +0 -0
  21. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_user_grant_grant.py +0 -0
  22. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/database_user_grant_revoke.py +0 -0
  23. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/mkdir.py +0 -0
  24. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/move.py +0 -0
  25. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/rmtree.py +0 -0
  26. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_daemon_reload.py +0 -0
  27. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_tmp_files_create.py +0 -0
  28. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_disable.py +0 -0
  29. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_enable.py +0 -0
  30. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_reload.py +0 -0
  31. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_restart.py +0 -0
  32. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_start.py +0 -0
  33. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/systemd_unit_stop.py +0 -0
  34. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/items/unlink.py +0 -0
  35. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/__init__.py +0 -0
  36. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/env.py +0 -0
  37. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/versions/571e55ab5ed5_initial_migration.py +0 -0
  38. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/versions/8023b9eecdd1_add_traceback_to_queue_items.py +0 -0
  39. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/versions/9ae29b5db790_add_string_to_queue_item_outcomes.py +0 -0
  40. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/migrations/versions/__init__.py +0 -0
  41. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/outcomes.py +0 -0
  42. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/sentinels.py +0 -0
  43. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/settings.py +0 -0
  44. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/cyberfusion/QueueSupport/utilities.py +0 -0
  45. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/SOURCES.txt +0 -0
  46. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/dependency_links.txt +0 -0
  47. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/entry_points.txt +0 -0
  48. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/requires.txt +0 -0
  49. {python3_cyberfusion_queue_support-2.6.3 → python3_cyberfusion_queue_support-2.7}/src/python3_cyberfusion_queue_support.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-cyberfusion-queue-support
3
- Version: 2.6.3
3
+ Version: 2.7
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python3-cyberfusion-queue-support"
7
- version = "2.6.3"
7
+ version = "2.7"
8
8
  description = "Library to queue actions."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -1,7 +1,6 @@
1
1
  """Classes for queue."""
2
2
 
3
3
  import logging
4
- from copy import copy
5
4
  from dataclasses import dataclass
6
5
  from typing import List
7
6
  import traceback
@@ -62,18 +61,13 @@ class Queue:
62
61
  else:
63
62
  deduplicated = True
64
63
 
65
- item_dict = copy(item.__dict__)
66
-
67
- del item_dict["_reference"]
68
- del item_dict["_hide_outcomes"]
69
-
70
64
  object_ = QueueItem(
71
65
  queue=self.queue_database_object,
72
66
  type=item.__class__.__name__,
73
67
  reference=item.reference,
74
68
  hide_outcomes=item.hide_outcomes,
75
69
  deduplicated=deduplicated,
76
- attributes=item_dict,
70
+ attributes=item,
77
71
  traceback=None,
78
72
  )
79
73
 
@@ -141,7 +135,7 @@ class Queue:
141
135
  queue_item=item_mapping.database_object,
142
136
  queue_process=process_object,
143
137
  type=outcome.__class__.__name__,
144
- attributes=outcome.__dict__,
138
+ attributes=outcome,
145
139
  string=str(outcome),
146
140
  )
147
141
  )
@@ -1,3 +1,5 @@
1
+ import json
2
+
1
3
  from alembic.config import Config
2
4
  import os
3
5
  import functools
@@ -13,19 +15,13 @@ from sqlalchemy.ext.declarative import declarative_base
13
15
  from sqlalchemy import event
14
16
  from sqlalchemy.types import JSON
15
17
 
16
- from cyberfusion.QueueSupport.encoders import json_serialize
18
+ from cyberfusion.QueueSupport.encoders import CustomEncoder
17
19
  from cyberfusion.QueueSupport.settings import settings
18
20
 
19
21
 
20
22
  def set_sqlite_pragma(
21
23
  dbapi_connection: sqlite3.Connection, connection_record: _ConnectionRecord
22
24
  ) -> None:
23
- """Enable foreign key support.
24
-
25
- This is needed for cascade deletes to work.
26
-
27
- See https://docs.sqlalchemy.org/en/13/dialects/sqlite.html#sqlite-foreign-keys
28
- """
29
25
  cursor = dbapi_connection.cursor()
30
26
 
31
27
  cursor.execute("PRAGMA foreign_keys=ON")
@@ -51,7 +47,7 @@ def run_migrations() -> None:
51
47
  def make_database_session() -> Session:
52
48
  engine = create_engine(
53
49
  settings.database_path,
54
- json_serializer=json_serialize,
50
+ json_serializer=lambda obj: json.dumps(obj, cls=CustomEncoder),
55
51
  )
56
52
 
57
53
  event.listen(engine, "connect", set_sqlite_pragma)
@@ -88,6 +84,15 @@ class Queue(BaseModel):
88
84
 
89
85
  __tablename__ = "queues"
90
86
 
87
+ queue_items = relationship(
88
+ "QueueItem",
89
+ back_populates="queue",
90
+ )
91
+ queue_processes = relationship(
92
+ "QueueProcess",
93
+ back_populates="queue",
94
+ )
95
+
91
96
 
92
97
  class QueueProcess(BaseModel):
93
98
  """QueueProcess model."""
@@ -95,9 +100,14 @@ class QueueProcess(BaseModel):
95
100
  __tablename__ = "queue_processes"
96
101
 
97
102
  queue_id = Column(Integer, ForeignKey("queues.id"), nullable=False)
98
- queue = relationship("Queue")
99
103
  preview = Column(Boolean, nullable=False)
100
104
 
105
+ queue = relationship("Queue", back_populates="queue_processes")
106
+ queue_item_outcomes = relationship(
107
+ "QueueItemOutcome",
108
+ back_populates="queue_process",
109
+ )
110
+
101
111
 
102
112
  class QueueItem(BaseModel):
103
113
  """QueueItem model."""
@@ -105,7 +115,6 @@ class QueueItem(BaseModel):
105
115
  __tablename__ = "queue_items"
106
116
 
107
117
  queue_id = Column(Integer, ForeignKey("queues.id"), nullable=False)
108
- queue = relationship("Queue")
109
118
  type = Column(String(length=255), nullable=False)
110
119
  reference = Column(String(length=255), nullable=True)
111
120
  hide_outcomes = Column(Boolean, nullable=False)
@@ -113,6 +122,12 @@ class QueueItem(BaseModel):
113
122
  attributes = Column(JSON, nullable=False)
114
123
  traceback = Column(String(), nullable=True)
115
124
 
125
+ queue = relationship("Queue", back_populates="queue_items")
126
+ queue_item_outcomes = relationship(
127
+ "QueueItemOutcome",
128
+ back_populates="queue_item",
129
+ )
130
+
116
131
 
117
132
  class QueueItemOutcome(BaseModel):
118
133
  """QueueItemOutcome model."""
@@ -120,9 +135,10 @@ class QueueItemOutcome(BaseModel):
120
135
  __tablename__ = "queue_item_outcomes"
121
136
 
122
137
  queue_item_id = Column(Integer, ForeignKey("queue_items.id"), nullable=False)
123
- queue_item = relationship("QueueItem")
124
138
  queue_process_id = Column(Integer, ForeignKey("queue_processes.id"), nullable=False)
125
- queue_process = relationship("QueueProcess")
126
139
  type = Column(String(length=255), nullable=False)
127
140
  attributes = Column(JSON, nullable=False)
128
141
  string = Column(String(length=255), nullable=False)
142
+
143
+ queue_item = relationship("QueueItem", back_populates="queue_item_outcomes")
144
+ queue_process = relationship("QueueProcess", back_populates="queue_item_outcomes")
@@ -0,0 +1,42 @@
1
+ from json import JSONEncoder
2
+ from typing import Any
3
+
4
+ from cyberfusion.DatabaseSupport.database_user_grants import DatabaseUserGrant
5
+ from cyberfusion.DatabaseSupport.database_users import DatabaseUser
6
+ from cyberfusion.DatabaseSupport.databases import Database
7
+ from cyberfusion.SystemdSupport import Unit
8
+
9
+ from cyberfusion.QueueSupport.outcomes import OutcomeInterface
10
+ from cyberfusion.QueueSupport.items import _Item
11
+ from cyberfusion.QueueSupport.sentinels import UNKNOWN
12
+
13
+
14
+ class CustomEncoder(JSONEncoder):
15
+ def default(self, o: Any) -> Any:
16
+ if isinstance(o, _Item):
17
+ return {
18
+ key: value for key, value in vars(o).items() if not key.startswith("_")
19
+ }
20
+ elif isinstance(o, OutcomeInterface):
21
+ return vars(o)
22
+ elif isinstance(o, Unit):
23
+ return {"name": o.name}
24
+ elif isinstance(o, Database):
25
+ return {"name": o.name, "server_software_name": o.server_software_name}
26
+ elif isinstance(o, DatabaseUser):
27
+ return {
28
+ "name": o.name,
29
+ "server_software_name": o.server_software_name,
30
+ "host": o.host,
31
+ }
32
+ elif isinstance(o, DatabaseUserGrant):
33
+ return {
34
+ "database": o.database,
35
+ "database_user": o.database_user,
36
+ "privileges_name": o.privilege_names,
37
+ "table_name": o.table_name,
38
+ }
39
+ elif o == UNKNOWN:
40
+ return "unknown"
41
+
42
+ return super().default(o)
@@ -31,7 +31,7 @@ class DatabaseUserDropItem(_Item):
31
31
  """Set attributes."""
32
32
  self.server_software_name = server_software_name
33
33
  self.name = name
34
- self._host = host
34
+ self.host = host
35
35
  self._reference = reference
36
36
  self._hide_outcomes = hide_outcomes
37
37
 
@@ -43,7 +43,7 @@ class DatabaseUserDropItem(_Item):
43
43
  ),
44
44
  name=self.name,
45
45
  server_software_name=self.server_software_name,
46
- host=self._host,
46
+ host=self.host,
47
47
  )
48
48
 
49
49
  @property
@@ -77,5 +77,5 @@ class DatabaseUserDropItem(_Item):
77
77
  return (
78
78
  other.server_software_name == self.server_software_name
79
79
  and other.name == self.name
80
- and other._host == self._host
80
+ and other.host == self.host
81
81
  )
@@ -34,7 +34,7 @@ class DatabaseUserEnsureStateItem(_Item):
34
34
  self.server_software_name = server_software_name
35
35
  self.name = name
36
36
  self.password = password
37
- self._host = host
37
+ self.host = host
38
38
  self._reference = reference
39
39
  self._hide_outcomes = hide_outcomes
40
40
 
@@ -47,7 +47,7 @@ class DatabaseUserEnsureStateItem(_Item):
47
47
  name=self.name,
48
48
  server_software_name=self.server_software_name,
49
49
  password=self.password,
50
- host=self._host,
50
+ host=self.host,
51
51
  )
52
52
 
53
53
  @property
@@ -95,6 +95,6 @@ class DatabaseUserEnsureStateItem(_Item):
95
95
  return (
96
96
  other.server_software_name == self.server_software_name
97
97
  and other.name == self.name
98
- and other._host == self._host
98
+ and other.host == self.host
99
99
  and other.password == self.password
100
100
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-cyberfusion-queue-support
3
- Version: 2.6.3
3
+ Version: 2.7
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
@@ -1,21 +0,0 @@
1
- import json
2
- from json import JSONEncoder
3
- from typing import Any
4
-
5
- from cyberfusion.SystemdSupport import Unit
6
-
7
- from cyberfusion.QueueSupport.sentinels import UNKNOWN
8
-
9
-
10
- class CustomEncoder(JSONEncoder):
11
- def default(self, o: Any) -> Any:
12
- if isinstance(o, Unit):
13
- return {"name": o.name}
14
- elif o == UNKNOWN:
15
- return "unknown"
16
-
17
- return super().default(o)
18
-
19
-
20
- def json_serialize(obj: Any) -> str:
21
- return json.dumps(obj, cls=CustomEncoder)