class_docstr: Interface specification for variable type instances.
  
  A :term:`Type` instance is mainly responsible for two things:
  
  - creating `Variable` instances (conventionally, `__call__` does this), and
  
  - filtering a value assigned to a `Variable` so that the value
    conforms to restrictions imposed by the type (also known as
    casting, this is done by `filter`).
class_docstr_tok: ["Interface","specification","for","variable","type","instances",".","A",":","term",":","`","Type","`","instance","is","mainly","responsible","for","two","things",":","-","creating","`","Variable","`","instances","(","conventionally",",","`","__call__","`","does","this",")",",","and","-","filtering","a","value","assigned","to","a","`","Variable","`","so","that","the","value","conforms","to","restrictions","imposed","by","the","type","(","also","known","as","casting",",","this","is","done","by","`","filter","`",")","."]
docstr: Return data or an appropriately wrapped/converted data by converting it in-place.
  
  This method allows one to reuse old allocated memory.  If this method
  is implemented, it will be called instead of `Type.filter`.
  
  As of now, this method is not implemented and was previously used for transferring memory to and from GPU.
  
  Parameters
  ----------
  value: array-like
  storage: array-like
      The old value (e.g. the old NumPy array)
  strict: bool
  allow_downcast: bool (optional)
  
  Raises
  ------
  NotImplementedError
docstr_tok: ["Return","data","or","an","appropriately","wrapped\/converted","data","by","converting","it","in-place",".","This","method","allows","one","to","reuse","old","allocated","memory",".","If","this","method","is","implemented",",","it","will","be","called","instead","of","`","Type.filter","`",".","As","of","now",",","this","method","is","not","implemented","and","was","previously","used","for","transferring","memory","to","and","from","GPU",".","Parameters","--","--","--","--","--","value",":","array-like","storage",":","array-like","The","old","value","(","e.g",".","the","old","NumPy","array",")","strict",":","bool","allow_downcast",":","bool","(","optional",")","Raises","--","--","--","NotImplementedError"]
code: def filter_inplace(
      self,
      value: Any,
      storage: Any,
      strict: bool = False,
      allow_downcast: Optional[bool] = None,
  ):
      """Return data or an appropriately wrapped/converted data by converting it in-place.
  
      This method allows one to reuse old allocated memory.  If this method
      is implemented, it will be called instead of `Type.filter`.
  
      As of now, this method is not implemented and was previously used for transferring memory to and from GPU.
  
      Parameters
      ----------
      value: array-like
      storage: array-like
          The old value (e.g. the old NumPy array)
      strict: bool
      allow_downcast: bool (optional)
  
      Raises
      ------
      NotImplementedError
      """
      raise NotImplementedError()
  
imports: from abc import abstractmethod
  from typing import Any, Generic, Optional, TypeVar, Union
  from typing_extensions import TypeAlias
  from pytensor.graph import utils
  from pytensor.graph.basic import Constant, Variable
  from pytensor.graph.utils import MetaObject
label_desc: Use image node_id 4 for calling the Type obj's underlying member method code with example usage: obj.filter_inplace(value, storage, strict, allow_downcast) without return types