code: def test_no_c_code(self):
      class IncOnePython(Op):
          """An Op with only a Python (perform) implementation"""
  
          __props__ = ()
  
          def make_node(self, input):
              input = scalar.as_scalar(input)
              output = input.type()
              return Apply(self, [input], [output])
  
          def perform(self, node, inputs, outputs):
              (input,) = inputs
              (output,) = outputs
              output[0] = input + 1
  
      i = scalar.int32("i")
      o = IncOnePython()(i)
  
      # Check that the c_code function is not implemented
      self.assertRaises(
          (NotImplementedError, utils.MethodNotDefined),
          o.owner.op.c_code,
          o.owner,
          "o",
          ["x"],
          "z",
          {"fail": ""},
      )
  
      storage_map = {i: [np.int32(3)], o: [None]}
      compute_map = {i: [True], o: [False]}
  
      thunk = o.owner.op.make_thunk(
          o.owner, storage_map, compute_map, no_recycling=[]
      )
  
      required = thunk()
      # Check everything went OK
      assert not required  # We provided all inputs
      assert compute_map[o][0]
      assert storage_map[o][0] == 4
  
imports: from __future__ import absolute_import, print_function, division
  import unittest
  from nose.plugins.skip import SkipTest
  import numpy
  import theano
  import theano.gof.op
  from six import string_types
  from theano.gof.type import Type, Generic
  from theano.gof.graph import Apply, Variable
  import theano.tensor
  from theano import scalar
  from theano import shared
label_desc: Use image node_id 1 for calling the TestMakeThunk obj's underlying member method code with example usage: obj.test_no_c_code() and returns: Apply