2025-09-26 22:15:45 +02:00
|
|
|
"""
|
|
|
|
|
Domain-specific exceptions for issue management.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IssueDomainError(Exception):
|
|
|
|
|
"""Base exception for issue domain errors."""
|
|
|
|
|
|
|
|
|
|
def __init__(self, message: str, issue_number: int = None):
|
|
|
|
|
super().__init__(message)
|
|
|
|
|
self.issue_number = issue_number
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IssueValidationError(IssueDomainError):
|
|
|
|
|
"""Exception raised when issue validation fails."""
|
|
|
|
|
|
|
|
|
|
def __init__(self, message: str, field: str = None, value=None):
|
|
|
|
|
super().__init__(message)
|
|
|
|
|
self.field = field
|
|
|
|
|
self.value = value
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IssueStateError(IssueDomainError):
|
|
|
|
|
"""Exception raised when invalid state transitions are attempted."""
|
|
|
|
|
|
|
|
|
|
def __init__(self, message: str, current_state: str, attempted_state: str):
|
|
|
|
|
super().__init__(message)
|
|
|
|
|
self.current_state = current_state
|
2025-09-26 22:36:35 +02:00
|
|
|
self.attempted_state = attempted_state
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IssueNotFoundError(IssueDomainError):
|
|
|
|
|
"""Exception raised when an issue cannot be found."""
|
|
|
|
|
|
|
|
|
|
def __init__(self, message: str, issue_number: int = None):
|
|
|
|
|
super().__init__(message, issue_number)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IssueLabelError(IssueDomainError):
|
|
|
|
|
"""Exception raised when there are label-related issues."""
|
|
|
|
|
|
|
|
|
|
def __init__(self, message: str, label_name: str = None):
|
|
|
|
|
super().__init__(message)
|
|
|
|
|
self.label_name = label_name
|