Skip to content

Commit

Permalink
Requirement is now default constructable
Browse files Browse the repository at this point in the history
This is commit 1 of N to make RepoAuditor classes default constructable for easier command line processing.

Once these changes are complete, command line arguments will be passed to the modules as dictionaries rather than provided to modules as constructor arguments. This large set of changes is broken into smaller changes to make them easier to review.
  • Loading branch information
davidbrownell committed May 10, 2024
1 parent a28b894 commit 22df0d9
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 23 deletions.
27 changes: 15 additions & 12 deletions src/RepoAuditor/Requirement.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ class EvaluateResult(Enum):


# ----------------------------------------------------------------------
@dataclass(frozen=True)
class Requirement(ABC):
"""A single requirement that can be evaluated against a set of data."""

Expand All @@ -49,20 +48,24 @@ class EvaluateInfo:

# ----------------------------------------------------------------------
# |
# | Public Data
# | Public Methods
# |
# ----------------------------------------------------------------------
name: str
description: str
style: ExecutionStyle

resolution_template: str
rationale_template: str
def __init__(
self,
name: str,
description: str,
style: ExecutionStyle,
resolution_template: str,
rationale_template: str,
) -> None:
self.name = name
self.description = description
self.style = style

self.resolution_template = resolution_template
self.rationale_template = rationale_template

# ----------------------------------------------------------------------
# |
# | Public Methods
# |
# ----------------------------------------------------------------------
def Evaluate(
self,
Expand Down
16 changes: 14 additions & 2 deletions tests/Executor_UnitTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,21 @@ def GetData(


# ----------------------------------------------------------------------
@dataclass(frozen=True)
class MyRequirement(Requirement):
result: EvaluateResult
# ----------------------------------------------------------------------
def __init__(
self,
name: str,
description: str,
style: ExecutionStyle,
resolution_template: str,
rationale_template: str,
result: EvaluateResult,
) -> None:
super(MyRequirement, self).__init__(
name, description, style, resolution_template, rationale_template
)
self.result = result

# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
Expand Down
16 changes: 14 additions & 2 deletions tests/Module_UnitTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,21 @@ def GetData(


# ----------------------------------------------------------------------
@dataclass(frozen=True)
class MyRequirement(Requirement):
evaluate_result: EvaluateResult
# ----------------------------------------------------------------------
def __init__(
self,
name: str,
description: str,
style: ExecutionStyle,
resolution_template: str,
rationale_template: str,
evaluate_result: EvaluateResult,
) -> None:
super(MyRequirement, self).__init__(
name, description, style, resolution_template, rationale_template
)
self.evaluate_result = evaluate_result

# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
Expand Down
20 changes: 17 additions & 3 deletions tests/Query_UnitTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,24 @@ def GetData(


# ----------------------------------------------------------------------
@dataclass(frozen=True)
class MyRequirement(Requirement):
expected_result: EvaluateResult
context: Optional[str] = field(default=None)
# ----------------------------------------------------------------------
def __init__(
self,
name: str,
description: str,
style: ExecutionStyle,
resolution_template: str,
rationale_template: str,
expected_result: EvaluateResult,
context: Optional[str] = None,
) -> None:
super(MyRequirement, self).__init__(
name, description, style, resolution_template, rationale_template
)

self.expected_result = expected_result
self.context = context

# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
Expand Down
21 changes: 17 additions & 4 deletions tests/Requirement_UnitTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
# -------------------------------------------------------------------------------
"""Unit tests for Requirement.py"""

from dataclasses import dataclass, field
from unittest.mock import Mock

from dbrownell_Common.Types import override
Expand All @@ -15,10 +14,24 @@


# ----------------------------------------------------------------------
@dataclass(frozen=True)
class MyRequirement(Requirement):
expected_result: EvaluateResult
context: Optional[str] = field(default=None)
# ----------------------------------------------------------------------
def __init__(
self,
name: str,
description: str,
style: ExecutionStyle,
resolution_template: str,
rationale_template: str,
expected_result: EvaluateResult,
context: Optional[str] = None,
) -> None:
super(MyRequirement, self).__init__(
name, description, style, resolution_template, rationale_template
)

self.expected_result = expected_result
self.context = context

# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
Expand Down

0 comments on commit 22df0d9

Please sign in to comment.