code: def assert_postupdate_hooks(path, installed=True, flat=False):
      """
      Verify that post-update hook was installed (or not, if installed=False)
      """
      from glob import glob
  
      if flat:
          # there is no top level dataset
          datasets = glob(opj(path, "*"))
      else:
          ds = Dataset(path)
          datasets = [ds.path] + ds.subdatasets(
              result_xfm="paths", recursive=True, state="present"
          )
      for ds_ in datasets:
          ds_ = Dataset(ds_)
          hook_path = opj(ds_.path, ".git", "hooks", "post-update")
          if installed:
              ok_(
                  os.path.exists(hook_path),
                  msg="Missing %s" % hook_path,
              )
          else:
              ok_(
                  not os.path.exists(hook_path),
                  msg="%s exists when it shouldn't" % hook_path,
              )
  
imports: import logging
  import os
  import stat
  import sys
  from os import chmod
  from os.path import basename, exists
  from os.path import join
  import pytest
  from datalad.api import create_sibling, install, push
  from datalad.cmd import StdOutErrCapture
  from datalad.cmd import WitlessRunner
  from datalad.distribution.create_sibling import _RunnerAdapter
  from datalad.support.annexrepo import AnnexRepo
  from datalad.support.exceptions import CommandError, InsufficientArgumentsError
  from datalad.support.gitrepo import GitRepo
  from datalad.support.network import urlquote
  from datalad.tests.utils_testdatasets import _mk_submodule_annex
  from datalad.tests.utils_pytest import DEFAULT_BRANCH, DEFAULT_REMOTE, SkipTest, assert_dict_equal, assert_false, assert_in, assert_in_results, assert_no_errors_logged, assert_not_equal, assert_not_in, assert_raises, assert_repo_status, assert_result_count, assert_status, create_tree, eq_, get_mtimes_and_digests, get_ssh_port, known_failure_windows, ok_, ok_endswith, ok_file_has_content, ok_file_under_git, skip_if_on_windows, skip_if_root, skip_ssh, slow, swallow_logs, with_tempfile, with_testsui
  from datalad.utils import Path, _path_, chpwd, on_windows
  from ..dataset import Dataset
label_desc: Use image node_id 2 for calling a global function with example usage: assert_postupdate_hooks(path, installed, flat) without return types