devops.rules.rules

Module defining rules for devops.

Functions

filter_cpp_rules(rules)

Filter and return only C++ related rules.

filter_file_rules(rules)

Filter and return only file related rules.

filter_line_rules(rules)

Filter and return only line related rules.

is_file_rule(rule)

Check if a rule is a file-based rule.

is_line_rule(rule)

Check if a rule is a line-based rule.

Classes

FileRuleInput(file_content[, path])

Dataclass for file rule input.

Rule(name, func[, rule_type, ...])

Base class for defining a rule.

RuleInputType(*values)

Enumeration of rule input types for devops.

RuleType(*values)

Enumeration of rule types for devops.

class devops.rules.rules.RuleType(*values)[source]

Bases: StrEnum

Enumeration of rule types for devops.

GENERAL = 'GENERAL'
CPP_STYLE = 'CPP_STYLE'
classmethod cpp_rules()[source]

Get a set of C++ related rule types.

Returns:

set[RuleType] – A set containing the C++ related rule types.

Return type:

set[RuleType]

class devops.rules.rules.RuleInputType(*values)[source]

Bases: StrEnum

Enumeration of rule input types for devops.

NONE = 'NONE'
LINE = 'LINE'
FILE = 'FILE'
class devops.rules.rules.FileRuleInput(file_content, path=None)[source]

Bases: object

Dataclass for file rule input.

Parameters:
  • file_content (str)

  • path (Path | None)

file_content: str
path: Path | None = None
class devops.rules.rules.Rule(name, func, rule_type=RuleType.GENERAL, rule_input_type=RuleInputType.NONE, file_types=None, description=None)[source]

Bases: object

Base class for defining a rule.

Parameters:
cpp_style_rule_counter = 2
general_rule_counter = 0
classmethod increment_rule_counter(rule_type)[source]

Increment the rule counter based on the rule type.

Parameters:

rule_type (RuleType) – The type of the rule.

Returns:

tuple[str, int] – A string representing the rule type and the updated counter.

Raises:

ValueError – If the rule type is unknown.

Return type:

tuple[str, int]

classmethod increment_style_rule_counter()[source]

Increment the C++ style rule counter.

Returns:

int – The updated C++ style rule counter.

Return type:

int

classmethod increment_general_rule_counter()[source]

Increment the general rule counter.

Returns:

int – The updated general rule counter.

Return type:

int

apply(rule_input)[source]

Apply the rule on a specific line.

Parameters:

rule_input (Any) – The rule input to apply the rule on.

Returns:

ResultType – The result of applying the rule.

Return type:

ResultType

devops.rules.rules.filter_cpp_rules(rules)[source]

Filter and return only C++ related rules.

Parameters:

rules (list[Rule]) – The list of rules to filter.

Returns:

list[Rule] – A list of C++ related rules.

Return type:

list[Rule]

devops.rules.rules.filter_line_rules(rules)[source]

Filter and return only line related rules.

Parameters:

rules (list[Rule]) – The list of rules to filter.

Returns:

list[Rule] – A list of line related rules.

Return type:

list[Rule]

devops.rules.rules.filter_file_rules(rules)[source]

Filter and return only file related rules.

Parameters:

rules (list[Rule]) – The list of rules to filter.

Returns:

list[Rule] – A list of file related rules.

Return type:

list[Rule]

devops.rules.rules.is_line_rule(rule)[source]

Check if a rule is a line-based rule.

Parameters:

rule (Rule) – The rule to check.

Returns:

bool – True if the rule is line-based, False otherwise.

Return type:

bool

devops.rules.rules.is_file_rule(rule)[source]

Check if a rule is a file-based rule.

Parameters:

rule (Rule) – The rule to check.

Returns:

bool – True if the rule is file-based, False otherwise.

Return type:

bool