Skip to content

Base

provide.testkit.quality.base

Base classes and protocols for quality analysis tools.

Classes

BaseQualityFixture

BaseQualityFixture(
    config: dict[str, Any] | None = None,
    artifact_dir: Path | None = None,
)

Bases: ABC

Base class for pytest quality fixtures.

Provides common functionality for quality analysis fixtures including configuration management, artifact handling, and result tracking.

Initialize the fixture.

Parameters:

Name Type Description Default
config dict[str, Any] | None

Tool-specific configuration

None
artifact_dir Path | None

Directory to store artifacts

None
Source code in provide/testkit/quality/base.py
def __init__(self, config: dict[str, Any] | None = None, artifact_dir: Path | None = None) -> None:
    """Initialize the fixture.

    Args:
        config: Tool-specific configuration
        artifact_dir: Directory to store artifacts
    """
    self.config = config or {}
    self.artifact_dir = artifact_dir or Path(".quality")
    self.results: list[QualityResult] = []
    self._setup_complete = False
Functions
add_result
add_result(result: QualityResult) -> None

Add a result to the tracked results.

Source code in provide/testkit/quality/base.py
def add_result(self, result: QualityResult) -> None:
    """Add a result to the tracked results."""
    self.results.append(result)
create_artifact_dir
create_artifact_dir(subdir: str | None = None) -> Path

Create and return artifact directory.

Parameters:

Name Type Description Default
subdir str | None

Optional subdirectory name

None

Returns:

Type Description
Path

Path to the artifact directory

Source code in provide/testkit/quality/base.py
def create_artifact_dir(self, subdir: str | None = None) -> Path:
    """Create and return artifact directory.

    Args:
        subdir: Optional subdirectory name

    Returns:
        Path to the artifact directory
    """
    artifact_path = self.artifact_dir / subdir if subdir else self.artifact_dir

    artifact_path.mkdir(parents=True, exist_ok=True)
    return artifact_path
ensure_setup
ensure_setup() -> None

Ensure setup has been called.

Source code in provide/testkit/quality/base.py
def ensure_setup(self) -> None:
    """Ensure setup has been called."""
    if not self._setup_complete:
        self.setup()
        self._setup_complete = True
get_results
get_results() -> list[QualityResult]

Get all tracked results.

Source code in provide/testkit/quality/base.py
def get_results(self) -> list[QualityResult]:
    """Get all tracked results."""
    return self.results.copy()
get_results_by_tool
get_results_by_tool() -> dict[str, QualityResult]

Get results indexed by tool name.

Source code in provide/testkit/quality/base.py
def get_results_by_tool(self) -> dict[str, QualityResult]:
    """Get results indexed by tool name."""
    return {result.tool: result for result in self.results}
setup abstractmethod
setup() -> None

Setup the quality tool.

Source code in provide/testkit/quality/base.py
@abstractmethod
def setup(self) -> None:
    """Setup the quality tool."""
    pass
teardown abstractmethod
teardown() -> None

Cleanup after quality check.

Source code in provide/testkit/quality/base.py
@abstractmethod
def teardown(self) -> None:
    """Cleanup after quality check."""
    pass

QualityConfigError

QualityConfigError(
    message: str,
    tool: str | None = None,
    details: dict[str, Any] | None = None,
)

Bases: QualityError

Exception for configuration errors.

Source code in provide/testkit/quality/base.py
def __init__(self, message: str, tool: str | None = None, details: dict[str, Any] | None = None) -> None:
    """Initialize quality error.

    Args:
        message: Error message
        tool: Name of tool that caused the error
        details: Additional error details
    """
    super().__init__(message)
    self.tool = tool
    self.details = details or {}

QualityError

QualityError(
    message: str,
    tool: str | None = None,
    details: dict[str, Any] | None = None,
)

Bases: Exception

Base exception for quality analysis errors.

Initialize quality error.

Parameters:

Name Type Description Default
message str

Error message

required
tool str | None

Name of tool that caused the error

None
details dict[str, Any] | None

Additional error details

None
Source code in provide/testkit/quality/base.py
def __init__(self, message: str, tool: str | None = None, details: dict[str, Any] | None = None) -> None:
    """Initialize quality error.

    Args:
        message: Error message
        tool: Name of tool that caused the error
        details: Additional error details
    """
    super().__init__(message)
    self.tool = tool
    self.details = details or {}
Functions

QualityResult dataclass

QualityResult(
    tool: str,
    passed: bool,
    score: float | None = None,
    details: dict[str, Any] = dict(),
    artifacts: list[Path] = list(),
    execution_time: float | None = None,
)

Result from a quality analysis tool.

Attributes:

Name Type Description
tool str

Name of the tool that generated this result

passed bool

Whether the quality check passed

score float | None

Numeric score (0-100) if applicable

details dict[str, Any]

Tool-specific details and metrics

artifacts list[Path]

List of artifact files created

execution_time float | None

Time taken to run the analysis in seconds

Attributes
summary property
summary: str

Human-readable summary of the result.

QualityTool

Bases: Protocol

Protocol for quality analysis tools.

Functions
analyze
analyze(path: Path, **kwargs: Any) -> QualityResult

Run analysis on the given path.

Parameters:

Name Type Description Default
path Path

Path to analyze (file or directory)

required
**kwargs Any

Tool-specific options

{}

Returns:

Type Description
QualityResult

QualityResult containing analysis results

Source code in provide/testkit/quality/base.py
def analyze(self, path: Path, **kwargs: Any) -> QualityResult:
    """Run analysis on the given path.

    Args:
        path: Path to analyze (file or directory)
        **kwargs: Tool-specific options

    Returns:
        QualityResult containing analysis results
    """
    ...
report
report(
    result: QualityResult, format: str = "terminal"
) -> str

Generate a report from analysis result.

Parameters:

Name Type Description Default
result QualityResult

Result to generate report for

required
format str

Output format (terminal, json, html, markdown)

'terminal'

Returns:

Type Description
str

Formatted report string

Source code in provide/testkit/quality/base.py
def report(self, result: QualityResult, format: str = "terminal") -> str:
    """Generate a report from analysis result.

    Args:
        result: Result to generate report for
        format: Output format (terminal, json, html, markdown)

    Returns:
        Formatted report string
    """
    ...

QualityToolError

QualityToolError(
    message: str,
    tool: str | None = None,
    details: dict[str, Any] | None = None,
)

Bases: QualityError

Exception for tool execution errors.

Source code in provide/testkit/quality/base.py
def __init__(self, message: str, tool: str | None = None, details: dict[str, Any] | None = None) -> None:
    """Initialize quality error.

    Args:
        message: Error message
        tool: Name of tool that caused the error
        details: Additional error details
    """
    super().__init__(message)
    self.tool = tool
    self.details = details or {}