This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Signature error for methods of class configparser.Interpolation
Type: compile error Stage:
Components: Argument Clinic Versions: Python 3.8, Python 3.7, Python 3.6
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: acue, asvetlov, larry, lukasz.langa, terry.reedy, yselivanov
Priority: normal Keywords:

Created on 2018-03-27 02:39 by acue, last changed 2022-04-11 14:58 by admin.

Messages (2)
msg314493 - (view) Author: Arno-Can Uestuensoez (acue) Date: 2018-03-27 02:39
I am not sure whether this is already covered by an issue, it is present in 3.6.2 and 3.6.4.

The class Interpolation in the configparser module causes an exception:

  File "/opt/python/python-3.6.4/lib/python3.6/configparser.py", line 1123, in _join_multiline_values
    name, val)
TypeError: before_read() missing 1 required positional argument: 'value'


This is due to the missing 'parser' parameter at the call of 'Interploation.xyz()' methods, also the case for several other method calls.


class Interpolation:
    """Dummy interpolation that passes the value through with no changes."""

    def before_read(self, parser, section, option, value):
        return value

   ...

Same for derived classes see e.g.

   class BasicInterpolation(Interpolation):
   ...

   class ExtendedInterpolation(Interpolation):
   ...

A work around seems to be:

- defining a dummy with changed signatures as parameter 'interpolation'
msg314720 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2018-03-30 21:11
Can you write a test case that raises the exception?  Use .read_string to create the CF instance, as that calls .read_file, which calls ._read, which calls ._join_multiline_values.

I wonder if we could delete .before_read and replace its call with the value passed and intended to be returned.  None of the Interpolation subclasses override it, and it is undocumented in both code and docs.  Ditto for .before_write.
History
Date User Action Args
2022-04-11 14:58:59adminsetgithub: 77331
2019-07-29 18:35:31nanjekyejoannahsetnosy: - nanjekyejoannah
2019-04-25 16:50:03nanjekyejoannahsetnosy: + nanjekyejoannah
2018-03-30 21:11:43terry.reedysetversions: + Python 3.7, Python 3.8
nosy: + terry.reedy

messages: + msg314720

components: - Build, asyncio
2018-03-27 07:07:49serhiy.storchakasetnosy: + lukasz.langa
2018-03-27 02:39:48acuecreate