code: def _check_ver_range(self, version, ver_range):
          
  
          lower, upper, lower_inc, upper_inc = ver_range
  
          #If the range extends over everything, we automatically match
          if lower is None and upper is None:
              return True
  
          if lower is not None:
              if lower_inc and version < lower:
                  return False
              elif not lower_inc and version <= lower:
                  return False
  
          if upper is not None:
              if upper_inc and version > upper:
                  return False
              elif not upper_inc and version >= upper:
                  return False
  
          # Prereleases have special matching requirements
          if version.is_prerelease:
              # Prereleases cannot match ranges that are not defined as prereleases
              if (lower is None or not lower.is_prerelease) and (upper is None or not upper.is_prerelease):
                  return False
  
              # Prereleases without the same major.minor.patch as a range end point cannot match
              if (lower is not None and version.release_tuple != lower.release_tuple) and \
                 (upper is not None and version.release_tuple != upper.release_tuple):
                  return False
  
          return True
docs: Check if version is included in ver_range