diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e5b8c7b2eea9ca9c2e38714d5f27c0f28cd63fd..7bad2b405ee49661de3b268513b7bf6cf8c6f36c 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 dac71ea792496d8ca8a44d37a163863ed685dcc8..eec3dfbc5c7b058ad4cefa484de52aa54a72ad80 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