New submission from Alisson Oliveira <[email protected]>:
`functools.singledispatchmethod` doesn't handle named arguments. Ex:
```python
from functools import singledispatchmethod
class Test:
def __init__(self):
...
@singledispatchmethod
def get(self, filters):
return 'Not Implemented!'
@get.register
def _(self, filters: dict):
for k, v in filters.items():
print(k, ' => ' , v)
@get.register
def _(self, filters: list):
for f in filters:
print(f)
if __name__ == '__main__':
t = Test()
t.get({'a': 'A'})
t.get(['a'])
t.get(filters={'a': 'A'})
```
This will raise an error:
```
a => A
a
Traceback (most recent call last):
File "/Users/alisson.oliveira/Farfetch/Git/blueprints-package/main.py", line
33, in <module>
t.get(filters={'a': 'A'})
File
"/usr/local/Cellar/[email protected]/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/functools.py",
line 926, in _method
method = self.dispatcher.dispatch(args[0].__class__)
IndexError: tuple index out of range
```
the problem is the lib always assume positional arguments in line 194:
https://github.com/python/cpython/blob/main/Lib/functools.py#L914
----------
components: Library (Lib)
messages: 407273
nosy: alisson276
priority: normal
severity: normal
status: open
title: singledispatchmethod doesn't handle named arguments
type: behavior
versions: Python 3.10, Python 3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue45926>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com