parameters: (self, deep=True)
return_statement: return res
docstring: Make deep or shallow copy of BlockManager
  
          Parameters
          ----------
          deep : bool or string, default True
              If False, return shallow copy (do not copy data)
              If 'all', copy data and a deep copy of the index
  
          Returns
          -------
          BlockManager
docstring_summary: Make deep or shallow copy of BlockManager
docstring_tokens: Make deep or shallow copy of BlockManager
function: def copy(self, deep=True):
          """
          Make deep or shallow copy of BlockManager
  
          Parameters
          ----------
          deep : bool or string, default True
              If False, return shallow copy (do not copy data)
              If 'all', copy data and a deep copy of the index
  
          Returns
          -------
          BlockManager
          """
          # this preserves the notion of view copying of axes
          if deep:
              # hit in e.g. tests.io.json.test_pandas
  
              def copy_func(ax):
                  if deep == "all":
                      return ax.copy(deep=True)
                  else:
                      return ax.view()
  
              new_axes = [copy_func(ax) for ax in self.axes]
          else:
              new_axes = list(self.axes)
  
          res = self.apply("copy", deep=deep)
          res.axes = new_axes
          return res
function_tokens: def copy ( self , deep = True ) : # this preserves the notion of view copying of axes if deep : # hit in e.g. tests.io.json.test_pandas def copy_func ( ax ) : if deep == "all" : return ax . copy ( deep = True ) else : return ax . view ( ) new_axes = [ copy_func ( ax ) for ax in self . axes ] else : new_axes = list ( self . axes ) res = self . apply ( "copy" , deep = deep ) res . axes = new_axes return res