Skip to content

Commit

Permalink
Run black on the entire codebase
Browse files Browse the repository at this point in the history
  • Loading branch information
mostafa committed Jul 4, 2023
1 parent 85279fd commit a6b11ef
Show file tree
Hide file tree
Showing 51 changed files with 10,330 additions and 5,962 deletions.
21 changes: 11 additions & 10 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@
#
import os
import sys
sys.path.insert(0, os.path.abspath('..'))

sys.path.insert(0, os.path.abspath(".."))


# -- Project information -----------------------------------------------------

project = 'pySigma'
copyright = '2021'
author = 'Thomas Patzke'
project = "pySigma"
copyright = "2021"
author = "Thomas Patzke"


# -- General configuration ---------------------------------------------------
Expand All @@ -28,27 +29,27 @@
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.autosummary',
"sphinx.ext.autodoc",
"sphinx.ext.autosummary",
]

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
templates_path = ["_templates"]

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]


# -- Options for HTML output -------------------------------------------------

# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'alabaster'
html_theme = "alabaster"

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = []
html_static_path = []
2 changes: 1 addition & 1 deletion print-coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
elif coverage >= 85.0:
print("COVERAGE_COLOR=orange")
else:
print("COVERAGE_COLOR=red")
print("COVERAGE_COLOR=red")
2 changes: 1 addition & 1 deletion sigma/backends/test/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
backends = {
"test": TextQueryTestBackend,
"test_mandatory": MandatoryPipelineTestBackend,
}
}
150 changes: 86 additions & 64 deletions sigma/backends/test/backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
from sigma.processing.transformations import FieldMappingTransformation
from sigma.types import SigmaCompareExpression


class TextQueryTestBackend(TextQueryBackend):
name : str = "Test backend"
formats : Dict[str, str] = {
name: str = "Test backend"
formats: Dict[str, str] = {
"default": "Default format",
"test": "Dummy test format that equals default format",
"state": "Test format that obtains information from state",
Expand All @@ -20,84 +21,98 @@ class TextQueryTestBackend(TextQueryBackend):
"bytes": "Plain query as bytes",
}

group_expression : ClassVar[str] = "({expr})"
group_expression: ClassVar[str] = "({expr})"

or_token : ClassVar[str] = "or"
and_token : ClassVar[str] = "and"
not_token : ClassVar[str] = "not"
eq_token : ClassVar[str] = "="
or_token: ClassVar[str] = "or"
and_token: ClassVar[str] = "and"
not_token: ClassVar[str] = "not"
eq_token: ClassVar[str] = "="

field_quote : ClassVar[str] = "'"
field_quote_pattern : ClassVar[Pattern] = re.compile("^\w+$")
field_quote: ClassVar[str] = "'"
field_quote_pattern: ClassVar[Pattern] = re.compile("^\w+$")

str_quote : ClassVar[str] = '"'
escape_char : ClassVar[str] = "\\"
wildcard_multi : ClassVar[str] = "*"
wildcard_single : ClassVar[str] = "?"
add_escaped : ClassVar[str] = ":"
filter_chars : ClassVar[str] = "&"
bool_values : ClassVar[Dict[bool, str]] = {
str_quote: ClassVar[str] = '"'
escape_char: ClassVar[str] = "\\"
wildcard_multi: ClassVar[str] = "*"
wildcard_single: ClassVar[str] = "?"
add_escaped: ClassVar[str] = ":"
filter_chars: ClassVar[str] = "&"
bool_values: ClassVar[Dict[bool, str]] = {
True: "1",
False: "0",
}

startswith_expression : ClassVar[str] = "{field} startswith {value}"
endswith_expression : ClassVar[str] = "{field} endswith {value}"
contains_expression : ClassVar[str] = "{field} contains {value}"
wildcard_match_expression : ClassVar[str] = "{field} match {value}"
startswith_expression: ClassVar[str] = "{field} startswith {value}"
endswith_expression: ClassVar[str] = "{field} endswith {value}"
contains_expression: ClassVar[str] = "{field} contains {value}"
wildcard_match_expression: ClassVar[str] = "{field} match {value}"

field_exists_expression : ClassVar[str] = "exists({field})"
field_not_exists_expression : ClassVar[str] = "notexists({field})"
field_exists_expression: ClassVar[str] = "exists({field})"
field_not_exists_expression: ClassVar[str] = "notexists({field})"

re_expression : ClassVar[str] = "{field}=/{regex}/"
re_escape_char : ClassVar[str] = "\\"
re_escape : ClassVar[Tuple[str]] = ("/", "bar")
re_expression: ClassVar[str] = "{field}=/{regex}/"
re_escape_char: ClassVar[str] = "\\"
re_escape: ClassVar[Tuple[str]] = ("/", "bar")

case_sensitive_match_expression = "{field} casematch {value}"
case_sensitive_startswith_expression : ClassVar[str] = "{field} startswith_cased {value}"
case_sensitive_endswith_expression : ClassVar[str] = "{field} endswith_cased {value}"
case_sensitive_contains_expression : ClassVar[str] = "{field} contains_cased {value}"

cidr_expression : ClassVar[str] = "cidrmatch('{field}', \"{value}\")"

compare_op_expression : ClassVar[str] = "{field}{operator}{value}"
compare_operators : ClassVar[Dict[SigmaCompareExpression.CompareOperators, str]] = {
SigmaCompareExpression.CompareOperators.LT : "<",
SigmaCompareExpression.CompareOperators.LTE : "<=",
SigmaCompareExpression.CompareOperators.GT : ">",
SigmaCompareExpression.CompareOperators.GTE : ">=",
case_sensitive_startswith_expression: ClassVar[
str
] = "{field} startswith_cased {value}"
case_sensitive_endswith_expression: ClassVar[str] = "{field} endswith_cased {value}"
case_sensitive_contains_expression: ClassVar[str] = "{field} contains_cased {value}"

cidr_expression: ClassVar[str] = "cidrmatch('{field}', \"{value}\")"

compare_op_expression: ClassVar[str] = "{field}{operator}{value}"
compare_operators: ClassVar[Dict[SigmaCompareExpression.CompareOperators, str]] = {
SigmaCompareExpression.CompareOperators.LT: "<",
SigmaCompareExpression.CompareOperators.LTE: "<=",
SigmaCompareExpression.CompareOperators.GT: ">",
SigmaCompareExpression.CompareOperators.GTE: ">=",
}

field_equals_field_expression : ClassVar[str] = "{field1}=fieldref({field2})"
field_equals_field_expression: ClassVar[str] = "{field1}=fieldref({field2})"

field_null_expression : ClassVar[str] = "{field} is null"
field_null_expression: ClassVar[str] = "{field} is null"

convert_or_as_in : ClassVar[bool] = True
convert_and_as_in : ClassVar[bool] = True
in_expressions_allow_wildcards : ClassVar[bool] = True
field_in_list_expression : ClassVar[str] = "{field} {op} ({list})"
or_in_operator : ClassVar[Optional[str]] = "in"
and_in_operator : ClassVar[Optional[str]] = "contains-all"
list_separator : ClassVar[str] = ", "
convert_or_as_in: ClassVar[bool] = True
convert_and_as_in: ClassVar[bool] = True
in_expressions_allow_wildcards: ClassVar[bool] = True
field_in_list_expression: ClassVar[str] = "{field} {op} ({list})"
or_in_operator: ClassVar[Optional[str]] = "in"
and_in_operator: ClassVar[Optional[str]] = "contains-all"
list_separator: ClassVar[str] = ", "

unbound_value_str_expression : ClassVar[str] = '_={value}'
unbound_value_num_expression : ClassVar[str] = '_={value}'
unbound_value_re_expression : ClassVar[str] = '_=/{value}/'
unbound_value_str_expression: ClassVar[str] = "_={value}"
unbound_value_num_expression: ClassVar[str] = "_={value}"
unbound_value_re_expression: ClassVar[str] = "_=/{value}/"

deferred_start : ClassVar[str] = " | "
deferred_separator : ClassVar[str] = " | "
deferred_only_query : ClassVar[str] = "*"
deferred_start: ClassVar[str] = " | "
deferred_separator: ClassVar[str] = " | "
deferred_only_query: ClassVar[str] = "*"

backend_processing_pipeline = dummy_test_pipeline()
output_format_processing_pipeline = defaultdict(ProcessingPipeline,
test=ProcessingPipeline([
ProcessingItem(FieldMappingTransformation({
"fieldC": "mappedC",
}))
])
output_format_processing_pipeline = defaultdict(
ProcessingPipeline,
test=ProcessingPipeline(
[
ProcessingItem(
FieldMappingTransformation(
{
"fieldC": "mappedC",
}
)
)
]
),
)

def __init__(self, processing_pipeline: Optional[ProcessingPipeline] = None, collect_errors: bool = False, testparam: Optional[str] = None):
def __init__(
self,
processing_pipeline: Optional[ProcessingPipeline] = None,
collect_errors: bool = False,
testparam: Optional[str] = None,
):
super().__init__(processing_pipeline, collect_errors)
self.testparam = testparam

Expand All @@ -107,8 +122,14 @@ def finalize_query_test(self, rule, query, index, state):
def finalize_output_test(self, queries):
return self.finalize_output_default(queries)

def finalize_query_state(self, rule, query, index, state : ConversionState):
return "index=" + state.processing_state.get("index", "default") + " (" + self.finalize_query_default(rule, query, index, state) + ")"
def finalize_query_state(self, rule, query, index, state: ConversionState):
return (
"index="
+ state.processing_state.get("index", "default")
+ " ("
+ self.finalize_query_default(rule, query, index, state)
+ ")"
)

def finalize_output_state(self, queries):
return self.finalize_output_default(queries)
Expand All @@ -118,9 +139,9 @@ def finalize_query_list_of_dict(self, rule, query, index, state):

def finalize_output_list_of_dict(self, queries):
return [
{ "query": query, "test": self.testparam }
{"query": query, "test": self.testparam}
if self.testparam is not None
else { "query": query }
else {"query": query}
for query in self.finalize_output_default(queries)
]

Expand All @@ -136,5 +157,6 @@ def finalize_query_str(self, rule, query, index, state):
def finalize_output_str(self, queries):
return "\n".join(self.finalize_output_default(queries))


class MandatoryPipelineTestBackend(TextQueryTestBackend):
requires_pipeline : bool = True
requires_pipeline: bool = True
Loading

0 comments on commit a6b11ef

Please sign in to comment.