class_docstr: Magics to manage various aspects of the user's namespace.
  
  These include listing variables, introspecting into them, etc.
docstr: Provide detailed information about an object.
  
  '%pinfo object' is just a synonym for object? or ?object.
docstr_tok: ["Provide","detailed","information","about","an","object",".","'","%","pinfo","object","'","is","just","a","synonym","for","object","?","or","?","object","."]
code: def pinfo(self, parameter_s="", namespaces=None):
      """Provide detailed information about an object.
  
      '%pinfo object' is just a synonym for object? or ?object."""
  
      # print 'pinfo par: <%s>' % parameter_s  # dbg
      # detail_level: 0 -> obj? , 1 -> obj??
      detail_level = 0
      # We need to detect if we got called as 'pinfo pinfo foo', which can
      # happen if the user types 'pinfo foo?' at the cmd line.
      pinfo, qmark1, oname, qmark2 = re.match(
          r"(pinfo )?(\?*)(.*?)(\??$)", parameter_s
      ).groups()
      if pinfo or qmark1 or qmark2:
          detail_level = 1
      if "*" in oname:
          self.psearch(oname)
      else:
          self.shell._inspect(
              "pinfo",
              oname,
              detail_level=detail_level,
              namespaces=namespaces,
          )
  
imports: import gc
  import re
  import sys
  from IPython.core import page
  from IPython.core.error import StdinNotImplementedError, UsageError
  from IPython.core.magic import Magics, magics_class, line_magic
  from IPython.testing.skipdoctest import skip_doctest
  from IPython.utils.encoding import DEFAULT_ENCODING
  from IPython.utils.openpy import read_py_file
  from IPython.utils.path import get_py_filename
label_desc: Use image node_id 1 for calling the NamespaceMagics obj's underlying member method code with example usage: obj.pinfo(parameter_s, namespaces) without return types