From a9d099d53897b80a042b0f5855e23f75376ccaa0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Sch=C3=A4fer?= <david.schaefer@ufz.de>
Date: Wed, 29 Mar 2023 13:41:56 +0200
Subject: [PATCH] forbid arument duplications

---
 CHANGELOG.md          |  1 +
 saqc/core/register.py | 10 +++++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1e5b8c7b2..7bad2b405 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
 ### Changed
 ### Removed
 ### Fixed
+- fail on duplicated arguments to test methods
 
 ## [2.3.0](https://git.ufz.de/rdm-software/saqc/-/tags/v2.3.0) - 2023-01-17
 [List of commits](https://git.ufz.de/rdm-software/saqc/-/compare/v2.2.1...v2.3.0)
diff --git a/saqc/core/register.py b/saqc/core/register.py
index dac71ea79..eec3dfbc5 100644
--- a/saqc/core/register.py
+++ b/saqc/core/register.py
@@ -333,7 +333,15 @@ def register(
             paramnames = tuple(func_signature.parameters.keys())[
                 2:
             ]  # skip (self, field)
-            kwargs = {**dict(zip(paramnames, args)), **kwargs}
+
+            # check for duplicated arguments
+            args_map = dict(zip(paramnames, args))
+            intersection = set(args_map).intersection(set(kwargs))
+            if intersection:
+                raise TypeError(
+                    f"SaQC.{func.__name__}() got multiple values for argument '{intersection.pop()}'"
+                )
+            kwargs = {**args_map, **kwargs}
             kwargs["dfilter"] = _getDfilter(func_signature, saqc._scheme, kwargs)
 
             # translate flag
-- 
GitLab