diff --git a/src/processor.py b/src/processor.py index 1234567..abcdefg 100644 --- a/src/processor.py +++ b/src/processor.py @@ -1,5 +1,65 @@ """Data processor module.""" +def process_data(data: dict, config: dict, options: dict | None = None) -> dict: + """Process data with many nested conditions.""" + result = {} + options = options or {} + + if data.get("type") == "A": + if config.get("mode") == "strict": + if options.get("validate"): + if data.get("value") > 100: + if config.get("transform"): + result["processed"] = data["value"] * 2 + else: + result["processed"] = data["value"] + else: + if options.get("default"): + result["processed"] = options["default"] + else: + result["processed"] = 0 + else: + result["processed"] = data.get("value", 0) + else: + result["processed"] = data.get("value", 0) + elif data.get("type") == "B": + if config.get("mode") == "strict": + if options.get("validate"): + if data.get("items"): + result["processed"] = len(data["items"]) + else: + result["processed"] = 0 + else: + result["processed"] = len(data.get("items", [])) + else: + result["processed"] = len(data.get("items", [])) + elif data.get("type") == "C": + if config.get("mode") == "strict": + if options.get("validate"): + if data.get("text"): + result["processed"] = data["text"].upper() + else: + result["processed"] = "" + else: + result["processed"] = data.get("text", "").upper() + else: + result["processed"] = data.get("text", "").upper() + else: + if config.get("fallback"): + result["processed"] = config["fallback"] + else: + result["processed"] = None + + if options.get("timestamp"): + result["timestamp"] = options["timestamp"] + if options.get("source"): + result["source"] = options["source"] + + return result + + def simple_function(x: int) -> int: """A simple function.""" return x * 2