base
base
¶
Base classes and protocols for remedies.
Defines the Remedy protocol and supporting types that all concrete remedy implementations must follow.
Classes¶
RemedyCategory
¶
Bases: str, Enum
Determines how a remedy is applied.
AUTOMATIC: Applied without asking (safe, reversible operations) SUGGESTED: Requires user confirmation (modifies files) DIAGNOSTIC: Cannot auto-fix, provides guidance only
RiskLevel
¶
Bases: str, Enum
Risk level of applying the remedy.
Used to inform users about the potential impact of the fix.
RemedyResult
dataclass
¶
RemedyResult(success, message, action_taken, rollback_command=None, created_paths=list(), modified_files=list(), backup_paths=list())
Result of applying a remedy.
Tracks what was done and how to undo it if needed.
Attributes¶
rollback_command
class-attribute
instance-attribute
¶
Shell command to undo the remedy (if possible).
created_paths
class-attribute
instance-attribute
¶
Paths that were created by the remedy.
modified_files
class-attribute
instance-attribute
¶
Files that were modified by the remedy.
backup_paths
class-attribute
instance-attribute
¶
Backup files created before modification.
Functions¶
Remedy
¶
Bases: Protocol
Protocol for remediation actions.
Remedies diagnose specific error patterns and can optionally apply fixes. Each remedy must implement: - name: Unique identifier - category: AUTOMATIC, SUGGESTED, or DIAGNOSTIC - risk_level: LOW, MEDIUM, or HIGH - description: Human-readable explanation - diagnose(): Check if this remedy applies - preview(): Show what would change - apply(): Make the actual changes - rollback(): Undo changes if needed - generate_diagnostic(): Provide guidance for manual fix
Attributes¶
Functions¶
diagnose
¶
Check if this remedy applies to the error.
Returns Diagnosis if applicable, None otherwise. The diagnosis includes confidence score and fix suggestion.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
context
|
ErrorContext
|
Error context with diagnostic information. |
required |
Returns:
| Type | Description |
|---|---|
Diagnosis | None
|
Diagnosis if this remedy can help, None otherwise. |
Source code in src/marianne/healing/remedies/base.py
preview
¶
Show what would be changed without making changes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
context
|
ErrorContext
|
Error context. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Human-readable description of planned changes. |
apply
¶
Apply the remedy.
Only called if diagnose() returned a Diagnosis and: - category == AUTOMATIC, or - category == SUGGESTED and user confirmed
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
context
|
ErrorContext
|
Error context. |
required |
Returns:
| Type | Description |
|---|---|
RemedyResult
|
Result with success status and details. |
Source code in src/marianne/healing/remedies/base.py
rollback
¶
Undo the remedy if possible.
Called if remedy was applied but subsequent validation failed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
result
|
RemedyResult
|
The result from apply(). |
required |
Returns:
| Type | Description |
|---|---|
bool
|
True if rollback succeeded, False otherwise. |
Source code in src/marianne/healing/remedies/base.py
generate_diagnostic
¶
Generate detailed diagnostic message.
Called for DIAGNOSTIC category, or when user declines SUGGESTED.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
context
|
ErrorContext
|
Error context. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Formatted guidance for manual fix. |
Source code in src/marianne/healing/remedies/base.py
BaseRemedy
¶
Base class providing common remedy functionality.
Concrete remedies can inherit from this to get default implementations of common methods.
Attributes¶
Functions¶
diagnose
¶
preview
¶
apply
¶
rollback
¶
Default rollback - remove created paths.
Source code in src/marianne/healing/remedies/base.py
generate_diagnostic
¶
Default diagnostic message.