code: def ensure_lockfile(keep_outdated=False, pypi_mirror=None):
      
      if not keep_outdated:
          keep_outdated = project.settings.get("keep_outdated")
      # Write out the lockfile if it doesn't exist, but not if the Pipfile is being ignored
      if project.lockfile_exists:
          old_hash = project.get_lockfile_hash()
          new_hash = project.calculate_pipfile_hash()
          if new_hash != old_hash:
              click.echo(
                  crayons.red(
                      fix_utf8("Pipfile.lock ({0}) out of date, updating to ({1})…".format(
                          old_hash[-6:], new_hash[-6:]
                      )),
                      bold=True,
                  ),
                  err=True,
              )
              do_lock(keep_outdated=keep_outdated, pypi_mirror=pypi_mirror)
      else:
          do_lock(keep_outdated=keep_outdated, pypi_mirror=pypi_mirror)
docs: Ensures that the lockfile is up-to-date.