diff --git a/src/jobflow/core/job.py b/src/jobflow/core/job.py index d00501b2..5daa0752 100644 --- a/src/jobflow/core/job.py +++ b/src/jobflow/core/job.py @@ -186,6 +186,7 @@ def job( """ def decorator(func): + from copy import deepcopy from functools import wraps # unwrap staticmethod or classmethod decorators @@ -214,7 +215,10 @@ def get_job(*args, **kwargs) -> Job: args = args[1:] return Job( - function=f, function_args=args, function_kwargs=kwargs, **job_kwargs + function=f, + function_args=args, + function_kwargs=kwargs, + **deepcopy(job_kwargs), ) get_job.original = func diff --git a/tests/core/test_job.py b/tests/core/test_job.py index f9416221..50c5e94f 100644 --- a/tests/core/test_job.py +++ b/tests/core/test_job.py @@ -1421,10 +1421,6 @@ def test_job_magic_methods(): assert hash(job1) != hash(job2) != hash(job3) -@pytest.mark.xfail( - reason="Mutating one job's config mutates all others created by that decorator.", - strict=True, -) def test_job_decorator_config_shared(): from jobflow import JobConfig, job