updates
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
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,
|
||||
}
|
||||
Reference in New Issue
Block a user