def update_available(after_days=1):
    """
    Check whether updated NRFA data is available.

    :param after_days: Only check if not checked previously since a certain number of days ago
    :type after_days: float
    :return: `True` if update available, `False` if not, `None` if remote location cannot be reached.
    :rtype: bool or None
    """
    never_downloaded = not bool(config.get('nrfa', 'downloaded_on', fallback=None) or None)
    if never_downloaded:
        config.set_datetime('nrfa', 'update_checked_on', datetime.utcnow())
        config.save()
        return True

    last_checked_on = config.get_datetime('nrfa', 'update_checked_on', fallback=None) or datetime.fromtimestamp(0)
    if datetime.utcnow() < last_checked_on + timedelta(days=after_days):
        return False

    current_version = LooseVersion(config.get('nrfa', 'version', fallback='0') or '0')
    try:
        with urlopen(config['nrfa']['oh_json_url'], timeout=10) as f:
            remote_version = LooseVersion(json.loads(f.read().decode('utf-8'))['nrfa_version'])
        config.set_datetime('nrfa', 'update_checked_on', datetime.utcnow())
        config.save()
        return remote_version > current_version
    except URLError:
        return None
Check whether updated NRFA data is available.

    :param after_days: Only check if not checked previously since a certain number of days ago
    :type after_days: float
    :return: `True` if update available, `False` if not, `None` if remote location cannot be reached.
    :rtype: bool or None