class_docstr: A ImageIO Plugin.
  
  This is an abstract plugin that documents the v3 plugin API interface. A
  plugin is an adapter/wrapper around a backend that converts a request from
  iio.core (e.g., read an image from file) into a sequence of instructions for
  the backend that fulfill the request.
  
  Plugin authors may choose to subclass this class when implementing a new
  plugin, but aren't obliged to do so. As long as the plugin class implements
  the interface (methods) described below the ImageIO core will treat it just
  like any other plugin.
  
  
  Parameters
  ----------
  request : iio.Request
      A request object that represents the users intent. It provides a
      standard interface to access the various ImageResources and serves them
      to the plugin as a file object (or file). Check the docs for details.
  **kwargs : Any
      Additional configuration arguments for the plugin or backend. Usually
      these match the configuration arguments available on the backend and
      are forwarded to it.
  
  
  Raises
  ------
  InitializationError
      During ``__init__`` the plugin tests if it can fulfill the request. If
      it can't, e.g., because the request points to a file in the wrong
      format, then it should raise an ``InitializationError`` and provide a
      reason for failure. This reason may be reported to the user.
  ImportError
      Plugins will be imported dynamically when listed in
      ``iio.config.known_plugins`` to fulfill requests. This way, users only
      have to load plugins/backends they actually use. If this plugin's backend
      is not installed, it should raise an ``ImportError`` either during
      module import or during class construction.
  
  Notes
  -----
  Upon successful construction the plugin takes ownership of the provided
  request. This means that it is the plugin's responsibility to call
  request.finish() to close the resource when it is no longer needed.
  
  Plugins _must_ implement a context manager that closes and cleans any
  resources held by the plugin upon exit.
class_docstr_tok: ["A","ImageIO","Plugin",".","This","is","an","abstract","plugin","that","documents","the","v3","plugin","API","interface",".","A","plugin","is","an","adapter\/wrapper","around","a","backend","that","converts","a","request","from","iio.core","(","e.g.",",","read","an","image","from","file",")","into","a","sequence","of","instructions","for","the","backend","that","fulfill","the","request",".","Plugin","authors","may","choose","to","subclass","this","class","when","implementing","a","new","plugin",",","but","are","n't","obliged","to","do","so",".","As","long","as","the","plugin","class","implements","the","interface","(","methods",")","described","below","the","ImageIO","core","will","treat","it","just","like","any","other","plugin",".","Parameters","--","--","--","--","--","request",":","iio.Request","A","request","object","that","represents","the","users","intent",".","It","provides","a","standard","interface","to","access","the","various","ImageResources","and","serves","them","to","the","plugin","as","a","file","object","(","or","file",")",".","Check","the","docs","for","details",".","*","*","kwargs",":","Any","Additional","configuration","arguments","for","the","plugin","or","backend",".","Usually","these","match","the","configuration","arguments","available","on","the","backend","and","are","forwarded","to","it",".","Raises","--","--","--","InitializationError","During","``","__init__","``","the","plugin","tests","if","it","can","fulfill","the","request",".","If","it","ca","n't",",","e.g.",",","because","the","request","points","to","a","file","in","the","wrong","format",",","then","it","should","raise","an","``","InitializationError","``","and","provide","a","reason","for","failure",".","This","reason","may","be","reported","to","the","user",".","ImportError","Plugins","will","be","imported","dynamically","when","listed","in","``","iio.config.known_plugins","``","to","fulfill","requests",".","This","way",",","users","only","have","to","load","plugins\/backends","they","actually","use",".","If","this","plugin","'s","backend","is","not","installed",",","it","should","raise","an","``","ImportError","``","either","during","module","import","or","during","class","construction",".","Notes","--","--","-","Upon","successful","construction","the","plugin","takes","ownership","of","the","provided","request",".","This","means","that","it","is","the","plugin","'s","responsibility","to","call","request.finish","(",")","to","close","the","resource","when","it","is","no","longer","needed",".","Plugins","_must_","implement","a","context","manager","that","closes","and","cleans","any","resources","held","by","the","plugin","upon","exit","."]
code: def __exit__(self, type, value, traceback) -> None:
      self.close()
  
file_path: imageio/imageio/core/v3_plugin_api.py
imports: from .None import Request
  from ..typing import ArrayLike
  import numpy
  from typing import Optional, Dict, Any, Tuple, Union, List, Iterator
  from dataclasses import dataclass
label_desc: Use image node_id 10 for calling the PluginV3 obj's underlying member method code with example usage: obj.__exit__(type, value, traceback) without return types