code: def _validate_exp(claims, leeway=0):
      
  
      if 'exp' not in claims:
          return
  
      try:
          exp = int(claims['exp'])
      except ValueError:
          raise JWTClaimsError('Expiration Time claim (exp) must be an integer.')
  
      now = timegm(datetime.utcnow().utctimetuple())
  
      if exp < (now - leeway):
          raise ExpiredSignatureError('Signature has expired.')
docs: Validates that the 'exp' claim is valid.
  
      The "exp" (expiration time) claim identifies the expiration time on
      or after which the JWT MUST NOT be accepted for processing.  The
      processing of the "exp" claim requires that the current date/time
      MUST be before the expiration date/time listed in the "exp" claim.
      Implementers MAY provide for some small leeway, usually no more than
      a few minutes, to account for clock skew.  Its value MUST be a number
      containing a NumericDate value.  Use of this claim is OPTIONAL.
  
      Args:
          claims (dict): The claims dictionary to validate.
          leeway (int): The number of seconds of skew that is allowed.