Files
7000pctAUTO 70dd85ff20
Some checks failed
CI / test (push) Failing after 9s
Shellhist CI / build (push) Has been cancelled
Shellhist CI / test (push) Has been cancelled
fix: resolve CI type checking issues
- Add return type annotations to __hash__ (-> int) and __eq__ (-> bool) in HistoryEntry
- Add TextIO import and type annotations for file parameters
- Add type ignore comment for fuzzywuzzy import
- Add HistoryEntry import and list type annotations in time_analysis
- Add assert statements for Optional[datetime] timestamps
- Add TypedDict classes for type-safe pattern dictionaries
- Add CommandPattern import and list[CommandPattern] type annotation
- Add -> None return types to all test methods
- Remove unused HistoryEntry import (F401)
2026-01-31 14:19:22 +00:00

39 lines
1.0 KiB
Python

"""Utility functions for shell history automation."""
import os
import re
from datetime import datetime
from typing import Optional
def normalize_command(command: str) -> str:
"""Normalize a shell command for comparison."""
return command.strip()
def extract_command_keywords(command: str) -> list[str]:
"""Extract keywords from a command."""
parts = command.split()
keywords = [p for p in parts if not p.startswith("-")]
return keywords
def format_timestamp(dt: Optional[datetime]) -> str:
"""Format a datetime object to a readable string."""
if dt is None:
return "Unknown"
return dt.strftime("%Y-%m-%d %H:%M:%S")
def parse_timestamp(ts: str) -> Optional[datetime]:
"""Parse a timestamp string to datetime."""
try:
return datetime.strptime(ts, "%Y-%m-%d %H:%M:%S")
except ValueError:
return None
def escape_shell_string(s: str) -> str:
"""Escape special characters in a string for shell use."""
return re.sub(r"([\\'"])", r"\\\1", s)