from __future__ import absolute_import, print_function, unicode_literals
from builtins import dict, str
import logging
import xml.etree.ElementTree as ET
from indra.util import UnicodeXMLTreeBuilder as UTB
from indra.sparser.processor import SparserProcessor

logger = logging.getLogger('sparser')

def process_xml(xml_str):
    try:
        tree = ET.XML(xml_str, parser=UTB())
    except ET.ParseError:
        logger.error('Could not parse XML string')
        return None
    sp = _process_elementtree(tree)
    return sp


def _process_elementtree(tree):
    sp = SparserProcessor(tree)
    sp.get_modifications()
    sp.get_activations()
    return sp

from __future__ import absolute_import, print_function, unicode_literals
from builtins import dict, str
import logging
import xml.etree.ElementTree as ET
from indra.util import UnicodeXMLTreeBuilder as UTB
from indra.sparser.processor import SparserProcessor

logger = logging.getLogger('sparser')

def process_xml(xml_str):
    try:
        tree = ET.XML(xml_str, parser=UTB())
    except ET.ParseError as e:
        logger.error('Could not parse XML string')
        logger.error(e)
        return None
    sp = _process_elementtree(tree)
    return sp


def _process_elementtree(tree):
    sp = SparserProcessor(tree)
    sp.get_modifications()
    sp.get_activations()
    return sp

Print XML parse errors in Sparser API
Print XML parse errors in Sparser API

  from __future__ import absolute_import, print_function, unicode_literals
  from builtins import dict, str
  import logging
  import xml.etree.ElementTree as ET
  from indra.util import UnicodeXMLTreeBuilder as UTB
  from indra.sparser.processor import SparserProcessor
  
  logger = logging.getLogger('sparser')
  
  def process_xml(xml_str):
      try:
          tree = ET.XML(xml_str, parser=UTB())
-     except ET.ParseError:
+     except ET.ParseError as e:
          logger.error('Could not parse XML string')
+         logger.error(e)
          return None
      sp = _process_elementtree(tree)
      return sp
  
  
  def _process_elementtree(tree):
      sp = SparserProcessor(tree)
      sp.get_modifications()
      sp.get_activations()
      return sp
  
Print XML parse errors in Sparser API
## Code Before:
from __future__ import absolute_import, print_function, unicode_literals
from builtins import dict, str
import logging
import xml.etree.ElementTree as ET
from indra.util import UnicodeXMLTreeBuilder as UTB
from indra.sparser.processor import SparserProcessor

logger = logging.getLogger('sparser')

def process_xml(xml_str):
    try:
        tree = ET.XML(xml_str, parser=UTB())
    except ET.ParseError:
        logger.error('Could not parse XML string')
        return None
    sp = _process_elementtree(tree)
    return sp


def _process_elementtree(tree):
    sp = SparserProcessor(tree)
    sp.get_modifications()
    sp.get_activations()
    return sp

## Instruction:
Print XML parse errors in Sparser API
## Code After:
from __future__ import absolute_import, print_function, unicode_literals
from builtins import dict, str
import logging
import xml.etree.ElementTree as ET
from indra.util import UnicodeXMLTreeBuilder as UTB
from indra.sparser.processor import SparserProcessor

logger = logging.getLogger('sparser')

def process_xml(xml_str):
    try:
        tree = ET.XML(xml_str, parser=UTB())
    except ET.ParseError as e:
        logger.error('Could not parse XML string')
        logger.error(e)
        return None
    sp = _process_elementtree(tree)
    return sp


def _process_elementtree(tree):
    sp = SparserProcessor(tree)
    sp.get_modifications()
    sp.get_activations()
    return sp
