From bcd9e4cca0cbb799a43928b675855eecab9fcba8 Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Fri, 13 Feb 2026 18:09:56 +0100 Subject: [PATCH] WIP: part 4 of module 6 --- 06/alchemy/grimoire/__init__.py | 6 ++++++ 06/alchemy/grimoire/spellbook.py | 8 ++++++++ 06/alchemy/grimoire/validator.py | 8 ++++++++ 06/ft_circular_curse.py | 14 ++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 06/alchemy/grimoire/__init__.py create mode 100644 06/alchemy/grimoire/spellbook.py create mode 100644 06/alchemy/grimoire/validator.py create mode 100644 06/ft_circular_curse.py diff --git a/06/alchemy/grimoire/__init__.py b/06/alchemy/grimoire/__init__.py new file mode 100644 index 0000000..b5b1b8a --- /dev/null +++ b/06/alchemy/grimoire/__init__.py @@ -0,0 +1,6 @@ +from .spellbook import record_spell +from .validator import validate_ingredients + +__version__ = "1.0.0" +__author__ = "Master Pythonicus" +__all__ = ["record_spell", "validate_ingredients"] diff --git a/06/alchemy/grimoire/spellbook.py b/06/alchemy/grimoire/spellbook.py new file mode 100644 index 0000000..0407924 --- /dev/null +++ b/06/alchemy/grimoire/spellbook.py @@ -0,0 +1,8 @@ +def record_spell(spell_name: str, ingredients: str) -> str: + from .validator import validate_ingredients + + validation_res = validate_ingredients(ingredients) + if validation_res == f"{ingredients} - VALID": + return f"Spell recorded: {spell_name} ({validation_res})" + else: + return f"Spell rejected: {spell_name} ({validation_res})" diff --git a/06/alchemy/grimoire/validator.py b/06/alchemy/grimoire/validator.py new file mode 100644 index 0000000..affefae --- /dev/null +++ b/06/alchemy/grimoire/validator.py @@ -0,0 +1,8 @@ +def validate_ingredients(ingredients: str) -> str: + try: + for ingredient in ingredients.split(" "): + if ingredient not in ["fire", "water", "earth", "air"]: + raise ValueError + return f"{ingredients} - VALID" + except ValueError: + return f"{ingredients} - INVALID" diff --git a/06/ft_circular_curse.py b/06/ft_circular_curse.py new file mode 100644 index 0000000..adcb2da --- /dev/null +++ b/06/ft_circular_curse.py @@ -0,0 +1,14 @@ +def ingredients_validation() -> None: + import alchemy.grimoire + + print( + f'validate_ingredients("fire air"): {validate_ingredients("fire air")}' + ) + + +def main() -> None: + ingredients_validation() + + +if __name__ == "__main__": + main()