Files
Hotel-Booking/Backend/venv/lib/python3.12/site-packages/safety/tool/intents.py
Iliyan Angelov 62c1fe5951 updates
2025-12-01 06:50:10 +02:00

72 lines
1.8 KiB
Python

from dataclasses import dataclass, field
from enum import Enum, auto
from typing import Any, Dict, List, Optional, Set
class ToolIntentionType(Enum):
"""
High-level intentions that are common across tools
"""
ADD_PACKAGE = auto()
REMOVE_PACKAGE = auto()
UPDATE_PACKAGE = auto()
DOWNLOAD_PACKAGE = auto()
SEARCH_PACKAGES = auto()
SYNC_PACKAGES = auto()
LIST_PACKAGES = auto()
INIT_PROJECT = auto()
BUILD_PROJECT = auto()
RUN_SCRIPT = auto()
UNKNOWN = auto()
@dataclass
class Dependency:
"""
Common representation of a dependency
"""
name: str
arg_index: int
original_text: str
version_constraint: Optional[str] = None
extras: Set[str] = field(default_factory=set)
is_dev_dependency: bool = False
corrected_text: Optional[str] = None
@dataclass
class CommandToolIntention:
"""
Represents a parsed tool command with normalized intention
"""
tool: str
command: str
intention_type: ToolIntentionType
command_chain: List[str] = field(default_factory=list)
packages: List[Dependency] = field(default_factory=list)
options: Dict[str, Any] = field(default_factory=dict)
raw_args: List[str] = field(default_factory=list)
def modifies_packages(self) -> bool:
"""
Check if this intention type modifies installed packages.
"""
return self.intention_type in {
ToolIntentionType.ADD_PACKAGE,
ToolIntentionType.REMOVE_PACKAGE,
ToolIntentionType.UPDATE_PACKAGE,
ToolIntentionType.SYNC_PACKAGES,
}
def queries_packages(self) -> bool:
"""
Check if this intention type queries for packages.
"""
return self.intention_type in {
ToolIntentionType.SEARCH_PACKAGES,
ToolIntentionType.LIST_PACKAGES,
}