hunk.code_window:     certinfo = []
       checker = ocsp.RevocationChecker(config)
       for cert in parsed_certs:
           now = pytz.UTC.fromutc(datetime.datetime.utcnow())
           status = ""
           if cert.is_test_cert:
               status = "INVALID: TEST_CERT"
           if cert.target_expiry <= now:
  
hunk.labels: keep keep add keep keep keep keep keep
hunk.after_edit:         if config.certname and cert.lineagename != config.certname:
               continue
           if config.domains and not set(config.domains).issubset(cert.names()):
               continue
  
hunk.file_path: certbot/cert_manager.py
hunk.type: add
file: #!/bin/sh -xe
  
  VENV_NAME=${VENV_NAME:-venv}
  
  # .egg-info directories tend to cause bizzaire problems (e.g. `pip -e
  # .` might unexpectedly install letshelp-certbot only, in case
  # `python letshelp-certbot/setup.py build` has been called
  # earlier)
  rm -rf *.egg-info
  
  # virtualenv setup is NOT idempotent: shutil.Error:
  # `/home/jakub/dev/letsencrypt/letsencrypt/venv/bin/python2` and
  # `venv/bin/python2` are the same file
  mv $VENV_NAME "$VENV_NAME.$(date +%s).bak" || true
  virtualenv --no-site-packages $VENV_NAME $VENV_ARGS
  . ./$VENV_NAME/bin/activate
  
  # Separately install setuptools and pip to make sure following
  # invocations use latest
  pip install -U setuptools
  pip install -U pip
  pip install "$@"
  
  set +x
  echo "Please run the following command to activate developer environment:"
  echo "source $VENV_NAME/bin/activate"
  