From 7591306e6b6d5b2f4495086b90a8dd9319d73d11 Mon Sep 17 00:00:00 2001 From: Kadambari Date: Mon, 6 Apr 2026 15:31:51 +0200 Subject: [PATCH 1/5] Add simple use-effect-like behavior simulation in Python --- dynamic_programming/use_effect_simulation.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 dynamic_programming/use_effect_simulation.py diff --git a/dynamic_programming/use_effect_simulation.py b/dynamic_programming/use_effect_simulation.py new file mode 100644 index 000000000000..e69de29bb2d1 From 6ae5134a2fc7591131abe2dec25787b6384110d1 Mon Sep 17 00:00:00 2001 From: Kadambari Date: Tue, 7 Apr 2026 14:23:03 +0200 Subject: [PATCH 2/5] Fix: add actual implementation for use effect simulation --- dynamic_programming/use_effect_simulation.py | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 dynamic_programming/use_effect_simulation.py diff --git a/dynamic_programming/use_effect_simulation.py b/dynamic_programming/use_effect_simulation.py new file mode 100644 index 000000000000..7a249ac30b2a --- /dev/null +++ b/dynamic_programming/use_effect_simulation.py @@ -0,0 +1,39 @@ +""" +Simulation of a simple useEffect-like behavior in Python. + +This demonstrates executing a function when a dependency changes. +Reference: +https://en.wikipedia.org/wiki/Reactive_programming +""" + +from typing import Callable, Any + + +def use_effect_simulation(callback: Callable[[], None], dependency: Any) -> None: + """ + Executes the callback when the dependency changes. + + >>> calls = [] + >>> def cb(): + ... calls.append("called") + >>> use_effect_simulation(cb, 1) + >>> use_effect_simulation(cb, 1) + >>> use_effect_simulation(cb, 2) + >>> calls + ['called', 'called'] + """ + if not hasattr(use_effect_simulation, "_prev"): + use_effect_simulation._prev = None # type: ignore + + if use_effect_simulation._prev != dependency: + callback() + use_effect_simulation._prev = dependency + + +if __name__ == "__main__": + def example(): + print("Effect triggered!") + + use_effect_simulation(example, 1) + use_effect_simulation(example, 1) + use_effect_simulation(example, 2) \ No newline at end of file From 7903a22dab45a6a05f746962ec5f5cbb554f2371 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 7 Apr 2026 12:30:48 +0000 Subject: [PATCH 3/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dynamic_programming/use_effect_simulation.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dynamic_programming/use_effect_simulation.py b/dynamic_programming/use_effect_simulation.py index 7a249ac30b2a..2729b09b88b8 100644 --- a/dynamic_programming/use_effect_simulation.py +++ b/dynamic_programming/use_effect_simulation.py @@ -31,9 +31,10 @@ def use_effect_simulation(callback: Callable[[], None], dependency: Any) -> None if __name__ == "__main__": + def example(): print("Effect triggered!") use_effect_simulation(example, 1) use_effect_simulation(example, 1) - use_effect_simulation(example, 2) \ No newline at end of file + use_effect_simulation(example, 2) From 7880455d0e4404599bdd1e1a008f74affff8970b Mon Sep 17 00:00:00 2001 From: Kadambari Date: Fri, 10 Apr 2026 09:09:07 +0200 Subject: [PATCH 4/5] Fix: correct indentation for example function --- dynamic_programming/use_effect_simulation.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dynamic_programming/use_effect_simulation.py b/dynamic_programming/use_effect_simulation.py index 7a249ac30b2a..82fc42dd7eb1 100644 --- a/dynamic_programming/use_effect_simulation.py +++ b/dynamic_programming/use_effect_simulation.py @@ -31,7 +31,13 @@ def use_effect_simulation(callback: Callable[[], None], dependency: Any) -> None if __name__ == "__main__": - def example(): + def example() -> None: + """ + Example function to demonstrate the effect. + + >>> example() + Effect triggered! + """ print("Effect triggered!") use_effect_simulation(example, 1) From 2588d16f7344057661228be2cb6a429bb40be764 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 10 Apr 2026 07:12:56 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dynamic_programming/use_effect_simulation.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dynamic_programming/use_effect_simulation.py b/dynamic_programming/use_effect_simulation.py index fc978f7c42f6..6a764698de9e 100644 --- a/dynamic_programming/use_effect_simulation.py +++ b/dynamic_programming/use_effect_simulation.py @@ -31,6 +31,7 @@ def use_effect_simulation(callback: Callable[[], None], dependency: Any) -> None if __name__ == "__main__": + def example() -> None: """ Example function to demonstrate the effect.