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