Hi,
When I try to add level_map as an instance variable in my classes __init__() method, I get an error message saying that it’s not a writable attribute.
When I add a level_map as a class variable, it doesn’t complain, but it doesn’t appear to use it in the mapping. With this mapping, everything is still tagged as CRITICAL or ERROR.
class XMLErrorLog(etree.PyErrorLog): level_map = { etree.ErrorLevels.WARNING : logging.WARNING, etree.ErrorLevels.ERROR : logging.WARNING, etree.ErrorLevels.FATAL : logging.WARNING }
The PyError logs level_map attribute is indeed read-only: # https://github.com/lxml/lxml/blob/582b598fd7aa49fecd64fea2ad88e969832f2beb/s... cdef class PyErrorLog(_BaseErrorLog): # ... cdef readonly dict level_map But you can update the level map dict in a subclass as it's a mutable:
class XMLErrorLog(etree.PyErrorLog): ... def __init__(self, *args, **kwargs): ... super(XMLErrorLog, self).__init__(self, *args, **kwargs) ... self.level_map.update({ ... etree.ErrorLevels.WARNING : logging.WARNING, ... etree.ErrorLevels.ERROR : logging.WARNING, ... etree.ErrorLevels.FATAL : logging.WARNING, ... }) ... etree.use_global_python_log(XMLErrorLog(logger=logging.getLogger (__name__).getChild('XMLParser'))) etree.fromstring('<root><x></root>') WARNING:__main__.XMLParser:<string>:1:17:FATAL:PARSER:ERR_TAG_NAME_MISMATCH: Opening and ending tag mismatch: x line 1 and root WARNING:__main__.XMLParser:<string>:1:17:FATAL:PARSER:ERR_TAG_NOT_FINISHED: Premature end of data in tag root line 1
Holger Landesbank Baden-Wuerttemberg Anstalt des oeffentlichen Rechts Hauptsitze: Stuttgart, Karlsruhe, Mannheim, Mainz HRA 12704 Amtsgericht Stuttgart HRA 4356, HRA 104 440 Amtsgericht Mannheim HRA 40687 Amtsgericht Mainz Die LBBW verarbeitet gemaess Erfordernissen der DSGVO Ihre personenbezogenen Daten. Informationen finden Sie unter https://www.lbbw.de/datenschutz.