code: def copy(self, filename, id_=-1, pre_callback=None, post_callback=None):
          
          for repo in self._children:
              if is_package(filename):
                  copy_method = repo.copy_pkg
              else:
                  # All other file types can go to scripts.
                  copy_method = repo.copy_script
              if pre_callback:
                  pre_callback(repo.connection)
              copy_method(filename, id_)
              if post_callback:
                  post_callback(repo.connection)
docs: Copy a package or script to all repos.
  
          Determines appropriate location (for file shares) and type based
          on file extension.
  
          Args:
              filename: String path to the local file to copy.
              id_: Package or Script object ID to target. For use with JDS
                  and CDP DP's only. If uploading a package that does not
                  have a corresponding object, use id_ of -1, which is the
                  default.
              pre_callback: Func to call before each distribution point
                  starts copying. Should accept a Repository connection
                  dictionary as a parameter. Will be called like:
                      `pre_callback(repo.connection)`
              post_callback: Func to call after each distribution point
                  finishes copying. Should accept a Repository connection
                  dictionary as a parameter. Will be called like:
                      `pre_callback(repo.connection)`