TypeError: 'NoneType' object is not callable

Hi, I have created a new docType named Machines in my customer app, Just after creating this docType I am not able to save any changes. Its popup the following error.

Traceback (most recent call last):
      File "/home/frappe/frappe-bench/apps/frappe/frappe/desk/form/save.py", line 22, in savedocs
        doc.save()
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 260, in save
        return self._save(*args, **kwargs)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 296, in _save
        self.run_before_save_methods()
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 876, in run_before_save_methods
        self.run_method("validate")
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 772, in run_method
        out = Document.hook(fn)(self, *args, **kwargs)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1048, in composer
        return composed(self, method, *args, **kwargs)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1031, in runner
        add_to_return_value(self, fn(self, *args, **kwargs))
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 766, in <lambda>
        fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 78, in validate
        self.setup_fields_to_fetch()
      File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 110, in setup_fields_to_fetch
        old_meta = frappe.get_meta(frappe.get_doc('DocType', self.name), cached=False)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 749, in get_meta
        return frappe.model.meta.get_meta(doctype, cached=cached)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/meta.py", line 44, in get_meta
        return load_meta(doctype)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/meta.py", line 47, in load_meta
        return Meta(doctype)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/meta.py", line 82, in __init__
        self.process()
    TypeError: 'NoneType' object is not callable

    Traceback (most recent call last):
      File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 61, in application
        response = frappe.handler.handle()
      File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 21, in handle
        data = execute_cmd(cmd)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 56, in execute_cmd
        return frappe.call(method, **frappe.form_dict)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 1026, in call
        return fn(*args, **newargs)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/desk/form/save.py", line 22, in savedocs
        doc.save()
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 260, in save
        return self._save(*args, **kwargs)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 296, in _save
        self.run_before_save_methods()
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 876, in run_before_save_methods
        self.run_method("validate")
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 772, in run_method
        out = Document.hook(fn)(self, *args, **kwargs)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1048, in composer
        return composed(self, method, *args, **kwargs)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1031, in runner
        add_to_return_value(self, fn(self, *args, **kwargs))
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 766, in <lambda>
        fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 78, in validate
        self.setup_fields_to_fetch()
      File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 110, in setup_fields_to_fetch
        old_meta = frappe.get_meta(frappe.get_doc('DocType', self.name), cached=False)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 749, in get_meta
        return frappe.model.meta.get_meta(doctype, cached=cached)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/meta.py", line 44, in get_meta
        return load_meta(doctype)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/meta.py", line 47, in load_meta
        return Meta(doctype)
      File "/home/frappe/frappe-bench/apps/frappe/frappe/model/meta.py", line 82, in __init__
        self.process()
    TypeError: 'NoneType' object is not callable

Seems like you created a field named process which is overriding the process method of the Document class. Please rename the field to something less generic.

4 Likes

@snv Thanks for the reply. It worked. But I had to created the docType with updated docFields name.

I’m getting same error
TypeError: ‘NoneType’ object is not callable

I just made the same mistake. I checked that method too but couldn’t figure that it was clashing. I feel many may name their fields this way and would have to come to the forum to get clarified. I humbly suggest the frappe team to choose a more specific name for the method if it’s possible. Just a suggestion.