code: def update_changed_requirements():
      
      reqs_path = join(env.proj_path, env.reqs_path)
      get_reqs = lambda: run("cat %s" % reqs_path, show=False)
      old_reqs = get_reqs() if env.reqs_path else ""
      yield
      if old_reqs:
          new_reqs = get_reqs()
          if old_reqs == new_reqs:
              # Unpinned requirements should always be checked.
              for req in new_reqs.split("\n"):
                  if req.startswith("-e"):
                      if "@" not in req:
                          # Editable requirement without pinned commit.
                          break
                  elif req.strip() and not req.startswith("#"):
                      if not set(">=<") & set(req):
                          # PyPI requirement without version.
                          break
              else:
                  # All requirements are pinned.
                  return
          pip("-r %s/%s" % (env.proj_path, env.reqs_path))
docs: Checks for changes in the requirements file across an update,
      and gets new requirements if changes have occurred.