class_docstr: Interface specification for `Type`\s that can be arguments to a `CLinkerOp`.
  
  A `CLinkerType` instance is mainly responsible  for providing the C code that
  interfaces python objects with a C `CLinkerOp` implementation.
class_docstr_tok: ["Interface","specification","for","`","Type","`","\\s","that","can","be","arguments","to","a","`","CLinkerOp","`",".","A","`","CLinkerType","`","instance","is","mainly","responsible","for","providing","the","C","code","that","interfaces","python","objects","with","a","C","`","CLinkerOp","`","implementation","."]
docstr: Return C code to extract a ``PyObject *`` instance.
  
  Unlike :math:`CLinkerType.c_extract`, :meth:`CLinkerType.c_extract_out` has to
  accept ``Py_None``, meaning that the variable should be left
  uninitialized.
code: def c_extract_out(
      self,
      name: str,
      sub: dict[str, str],
      check_input: bool = True,
      **kwargs,
  ) -> str:
      """Return C code to extract a ``PyObject *`` instance.
  
      Unlike :math:`CLinkerType.c_extract`, :meth:`CLinkerType.c_extract_out` has to
      accept ``Py_None``, meaning that the variable should be left
      uninitialized.
  
      """
      return """
          if (py_%(name)s == Py_None)
          {
              %(c_init_code)s
          }
          else
          {
              %(c_extract_code)s
          }
          """ % dict(
          name=name,
          c_init_code=self.c_init(name, sub),
          c_extract_code=self.c_extract(name, sub, check_input),
      )
  
imports: import typing
  import warnings
  from abc import abstractmethod
  from typing import Callable, Optional
  from pytensor.graph.basic import Apply, Constant
  from pytensor.graph.utils import MethodNotDefined
label_desc: Use image node_id 8 for calling the CLinkerType obj's underlying member method code with example usage: obj.c_extract_out(name, sub, check_input) and returns: unknown