class_docstr: Perform advanced syntax checking, based on strict aliases analysis:
  - is there a function redefinition?
  - is there a function call that does not match the called expression arity?
  - is there an operation that updates a global variable?
class_docstr_tok: ["Perform","advanced","syntax","checking",",","based","on","strict","aliases","analysis",":","-","is","there","a","function","redefinition","?","-","is","there","a","function","call","that","does","not","match","the","called","expression","arity","?","-","is","there","an","operation","that","updates","a","global","variable","?"]
code: def check_global_with_side_effect(self, node, arg):
      if not isinstance(arg, ast.Call):
          return
      try:
          aliases = self.strict_aliases[arg.func]
      except KeyError:
          return
  
      for alias in aliases:
          if is_global_constant(alias):
              raise PythranSyntaxError(
                  (
                      "Cannot modify '{}': global variables are constant "
                      "in pythran."
                  ).format(alias.name),
                  arg.func,
              )
  
file_path: catboost/contrib/python/pythran/pythran/analyses/extended_syntax_check.py
imports: from pythran.passmanager import ModuleAnalysis
  from pythran.analyses import StrictAliases, ArgumentEffects
  from pythran.syntax import PythranSyntaxError
  from pythran.intrinsic import ConstantIntr, FunctionIntr
  from pythran import metadata
  import gast
label_desc: Use image node_id 2 for calling the ExtendedSyntaxCheck obj's underlying member method code with example usage: obj.check_global_with_side_effect(node, arg) without return types