python3-cyberfusion-queue-support 3.0.3__tar.gz → 3.2__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 (56) hide show
  1. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/PKG-INFO +1 -1
  2. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/pyproject.toml +1 -1
  3. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/database.py +4 -6
  4. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/exceptions/__init__.py +9 -6
  5. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/mkdir.py +23 -10
  6. python3_cyberfusion_queue_support-3.2/src/cyberfusion/QueueSupport/migrations/versions/93c79cb2baba_add_indexes.py +52 -0
  7. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/outcomes.py +0 -13
  8. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/scripts/purge_queues.py +2 -5
  9. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/python3_cyberfusion_queue_support.egg-info/PKG-INFO +1 -1
  10. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/python3_cyberfusion_queue_support.egg-info/SOURCES.txt +1 -0
  11. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/README.md +0 -0
  12. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/setup.cfg +0 -0
  13. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/__init__.py +0 -0
  14. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/encoders.py +0 -0
  15. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/enums.py +0 -0
  16. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/interfaces.py +0 -0
  17. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/__init__.py +0 -0
  18. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/chmod.py +0 -0
  19. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/chown.py +0 -0
  20. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/command.py +0 -0
  21. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/copy.py +0 -0
  22. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/database_create.py +0 -0
  23. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/database_drop.py +0 -0
  24. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/database_user_drop.py +0 -0
  25. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/database_user_ensure_state.py +0 -0
  26. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/database_user_grant_grant.py +0 -0
  27. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/database_user_grant_revoke.py +0 -0
  28. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/move.py +0 -0
  29. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/rmtree.py +0 -0
  30. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/systemd_daemon_reload.py +0 -0
  31. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/systemd_tmp_files_create.py +0 -0
  32. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/systemd_unit_disable.py +0 -0
  33. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/systemd_unit_enable.py +0 -0
  34. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/systemd_unit_reload.py +0 -0
  35. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/systemd_unit_restart.py +0 -0
  36. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/systemd_unit_start.py +0 -0
  37. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/systemd_unit_stop.py +0 -0
  38. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/items/unlink.py +0 -0
  39. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/__init__.py +0 -0
  40. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/env.py +0 -0
  41. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/versions/03d4e411c575_add_fail_silently.py +0 -0
  42. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/versions/2f4316506856_add_cascade_deletes.py +0 -0
  43. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/versions/52d1b17abcd0_add_status.py +0 -0
  44. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/versions/571e55ab5ed5_initial_migration.py +0 -0
  45. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/versions/8023b9eecdd1_add_traceback_to_queue_items.py +0 -0
  46. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/versions/8406a0af7394_set_status_on_existing_queue_processes.py +0 -0
  47. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/versions/9ae29b5db790_add_string_to_queue_item_outcomes.py +0 -0
  48. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/migrations/versions/__init__.py +0 -0
  49. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/scripts/__init__.py +0 -0
  50. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/sentinels.py +0 -0
  51. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/settings.py +0 -0
  52. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/cyberfusion/QueueSupport/utilities.py +0 -0
  53. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/python3_cyberfusion_queue_support.egg-info/dependency_links.txt +0 -0
  54. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/python3_cyberfusion_queue_support.egg-info/entry_points.txt +0 -0
  55. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/src/python3_cyberfusion_queue_support.egg-info/requires.txt +0 -0
  56. {python3_cyberfusion_queue_support-3.0.3 → python3_cyberfusion_queue_support-3.2}/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: 3.0.3
3
+ Version: 3.2
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 = "3.0.3"
7
+ version = "3.2"
8
8
  description = "Library to queue actions."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -104,9 +104,7 @@ class QueueProcess(BaseModel):
104
104
  __tablename__ = "queue_processes"
105
105
 
106
106
  queue_id = Column(
107
- Integer,
108
- ForeignKey("queues.id", ondelete="CASCADE"),
109
- nullable=False,
107
+ Integer, ForeignKey("queues.id", ondelete="CASCADE"), nullable=False, index=True
110
108
  )
111
109
  preview = Column(Boolean, nullable=False)
112
110
  status = Column(Enum(QueueProcessStatus), nullable=True)
@@ -125,9 +123,7 @@ class QueueItem(BaseModel):
125
123
  __tablename__ = "queue_items"
126
124
 
127
125
  queue_id = Column(
128
- Integer,
129
- ForeignKey("queues.id", ondelete="CASCADE"),
130
- nullable=False,
126
+ Integer, ForeignKey("queues.id", ondelete="CASCADE"), nullable=False, index=True
131
127
  )
132
128
  type = Column(String(length=255), nullable=False)
133
129
  reference = Column(String(length=255), nullable=True)
@@ -154,11 +150,13 @@ class QueueItemOutcome(BaseModel):
154
150
  Integer,
155
151
  ForeignKey("queue_items.id", ondelete="CASCADE"),
156
152
  nullable=False,
153
+ index=True,
157
154
  )
158
155
  queue_process_id = Column(
159
156
  Integer,
160
157
  ForeignKey("queue_processes.id", ondelete="CASCADE"),
161
158
  nullable=False,
159
+ index=True,
162
160
  )
163
161
  type = Column(String(length=255), nullable=False)
164
162
  attributes = Column(JSON, nullable=False)
@@ -7,27 +7,30 @@ from cyberfusion.QueueSupport.items import _Item
7
7
 
8
8
 
9
9
  class ItemError(Exception):
10
- """Issues with item."""
11
-
12
10
  pass
13
11
 
14
12
 
15
13
  @dataclass
16
14
  class PathIsSymlinkError(ItemError):
17
- """Path is symlink."""
15
+ path: str
18
16
 
17
+
18
+ @dataclass
19
+ class PathIsFileError(ItemError):
19
20
  path: str
20
21
 
21
22
 
22
23
  @dataclass
23
- class CommandQueueFulfillFailed(Exception):
24
- """Error occurred while fulfilling queue, with command item."""
24
+ class ParentNotFoundError(ItemError):
25
+ parent: str
26
+
25
27
 
28
+ @dataclass
29
+ class CommandQueueFulfillFailed(Exception):
26
30
  item: _Item
27
31
  command: List[str]
28
32
  stdout: str
29
33
  stderr: str
30
34
 
31
35
  def __str__(self) -> str:
32
- """Get string representation."""
33
36
  return f"Command:\n\n{self.command}\n\nStdout:\n\n{self.stdout}\n\nStderr:\n\n{self.stderr}"
@@ -2,9 +2,14 @@
2
2
 
3
3
  import logging
4
4
  import os
5
+ from pathlib import Path
5
6
  from typing import List, Optional
6
7
 
7
- from cyberfusion.QueueSupport.exceptions import PathIsSymlinkError
8
+ from cyberfusion.QueueSupport.exceptions import (
9
+ PathIsSymlinkError,
10
+ PathIsFileError,
11
+ ParentNotFoundError,
12
+ )
8
13
  from cyberfusion.QueueSupport.items import _Item
9
14
  from cyberfusion.QueueSupport.outcomes import MkdirItemCreateOutcome
10
15
 
@@ -18,30 +23,38 @@ class MkdirItem(_Item):
18
23
  self,
19
24
  *,
20
25
  path: str,
26
+ recursively: bool = False,
21
27
  reference: Optional[str] = None,
22
28
  hide_outcomes: bool = False,
23
29
  fail_silently: bool = False,
24
30
  ) -> None:
25
31
  """Set attributes."""
26
32
  self.path = path
33
+ self.recursively = recursively
27
34
  self._reference = reference
28
35
  self._hide_outcomes = hide_outcomes
29
36
  self._fail_silently = fail_silently
30
37
 
31
- if os.path.islink(self.path):
32
- raise PathIsSymlinkError(self.path)
33
-
34
38
  @property
35
39
  def outcomes(self) -> List[MkdirItemCreateOutcome]:
36
40
  """Get outcomes of item."""
37
41
  outcomes = []
38
42
 
39
- if not os.path.isdir(self.path):
40
- outcomes.append(
41
- MkdirItemCreateOutcome(
42
- path=self.path,
43
- )
44
- )
43
+ path_elements = list(reversed(Path(self.path).parents))
44
+ path_elements.append(Path(self.path))
45
+
46
+ for path in path_elements:
47
+ if os.path.islink(path):
48
+ raise PathIsSymlinkError(str(path))
49
+ elif os.path.isfile(path):
50
+ raise PathIsFileError(str(path))
51
+ elif os.path.isdir(path):
52
+ continue
53
+
54
+ if not self.recursively and str(path) != self.path:
55
+ raise ParentNotFoundError(str(path))
56
+
57
+ outcomes.append(MkdirItemCreateOutcome(path=str(path)))
45
58
 
46
59
  return outcomes
47
60
 
@@ -0,0 +1,52 @@
1
+ """Add indexes
2
+
3
+ Revision ID: 93c79cb2baba
4
+ Revises: 2f4316506856
5
+ Create Date: 2025-10-03 13:55:00.001141
6
+
7
+ """
8
+
9
+ from alembic import op
10
+
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "93c79cb2baba"
14
+ down_revision = "2f4316506856"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade() -> None:
20
+ with op.batch_alter_table("queue_item_outcomes", schema=None) as batch_op:
21
+ batch_op.create_index(
22
+ batch_op.f("ix_queue_item_outcomes_queue_item_id"),
23
+ ["queue_item_id"],
24
+ unique=False,
25
+ )
26
+ batch_op.create_index(
27
+ batch_op.f("ix_queue_item_outcomes_queue_process_id"),
28
+ ["queue_process_id"],
29
+ unique=False,
30
+ )
31
+
32
+ with op.batch_alter_table("queue_items", schema=None) as batch_op:
33
+ batch_op.create_index(
34
+ batch_op.f("ix_queue_items_queue_id"), ["queue_id"], unique=False
35
+ )
36
+
37
+ with op.batch_alter_table("queue_processes", schema=None) as batch_op:
38
+ batch_op.create_index(
39
+ batch_op.f("ix_queue_processes_queue_id"), ["queue_id"], unique=False
40
+ )
41
+
42
+
43
+ def downgrade() -> None:
44
+ with op.batch_alter_table("queue_processes", schema=None) as batch_op:
45
+ batch_op.drop_index(batch_op.f("ix_queue_processes_queue_id"))
46
+
47
+ with op.batch_alter_table("queue_items", schema=None) as batch_op:
48
+ batch_op.drop_index(batch_op.f("ix_queue_items_queue_id"))
49
+
50
+ with op.batch_alter_table("queue_item_outcomes", schema=None) as batch_op:
51
+ batch_op.drop_index(batch_op.f("ix_queue_item_outcomes_queue_process_id"))
52
+ batch_op.drop_index(batch_op.f("ix_queue_item_outcomes_queue_item_id"))
@@ -483,19 +483,6 @@ class DatabaseUserEnsureStateItemEditPasswordOutcome(OutcomeInterface):
483
483
  if not isinstance(other, DatabaseUserEnsureStateItemEditPasswordOutcome):
484
484
  return False
485
485
 
486
- print(
487
- other.database_user.server_software_name,
488
- other.database_user.name,
489
- other.database_user.password,
490
- other.database_user.host,
491
- )
492
- print(
493
- self.database_user.server_software_name,
494
- self.database_user.name,
495
- self.database_user.password,
496
- self.database_user.host,
497
- )
498
-
499
486
  return (
500
487
  other.database_user.server_software_name
501
488
  == self.database_user.server_software_name
@@ -11,11 +11,8 @@ def main() -> None:
11
11
  days=settings.queue_purge_days
12
12
  )
13
13
 
14
- queues = (
15
- database_session.query(Queue).filter(Queue.created_at < purge_before_date).all()
16
- )
14
+ queues = database_session.query(Queue).filter(Queue.created_at < purge_before_date)
17
15
 
18
- for queue in queues:
19
- database_session.delete(queue)
16
+ queues.delete()
20
17
 
21
18
  database_session.commit()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-cyberfusion-queue-support
3
- Version: 3.0.3
3
+ Version: 3.2
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
@@ -42,6 +42,7 @@ src/cyberfusion/QueueSupport/migrations/versions/52d1b17abcd0_add_status.py
42
42
  src/cyberfusion/QueueSupport/migrations/versions/571e55ab5ed5_initial_migration.py
43
43
  src/cyberfusion/QueueSupport/migrations/versions/8023b9eecdd1_add_traceback_to_queue_items.py
44
44
  src/cyberfusion/QueueSupport/migrations/versions/8406a0af7394_set_status_on_existing_queue_processes.py
45
+ src/cyberfusion/QueueSupport/migrations/versions/93c79cb2baba_add_indexes.py
45
46
  src/cyberfusion/QueueSupport/migrations/versions/9ae29b5db790_add_string_to_queue_item_outcomes.py
46
47
  src/cyberfusion/QueueSupport/migrations/versions/__init__.py
47
48
  src/cyberfusion/QueueSupport/scripts/__init__.py