parameters: (self, obj, attr, value)
return_statement: return not (attr.startswith('_') or is_internal_attribute(obj, attr))
docstring: The sandboxed environment will call this method to check if the
          attribute of an object is safe to access.  Per default all attributes
          starting with an underscore are considered private as well as the
          special attributes of internal python objects as returned by the
          :func:`is_internal_attribute` function.
docstring_summary: The sandboxed environment will call this method to check if the
          attribute of an object is safe to access.  Per default all attributes
          starting with an underscore are considered private as well as the
          special attributes of internal python objects as returned by the
          :func:`is_internal_attribute` function.
docstring_tokens: The sandboxed environment will call this method to check if the attribute of an object is safe to access . Per default all attributes starting with an underscore are considered private as well as the special attributes of internal python objects as returned by the : func : is_internal_attribute function .
function: def is_safe_attribute(self, obj, attr, value):
          """The sandboxed environment will call this method to check if the
          attribute of an object is safe to access.  Per default all attributes
          starting with an underscore are considered private as well as the
          special attributes of internal python objects as returned by the
          :func:`is_internal_attribute` function.
          """
          return not (attr.startswith('_') or is_internal_attribute(obj, attr))
function_tokens: def is_safe_attribute ( self , obj , attr , value ) : return not ( attr . startswith ( '_' ) or is_internal_attribute ( obj , attr ) )