def METHOD_NAME(cls, user_config, netbox_version):
    # Enforce version constraints
    current_version = version.parse(netbox_version)
    if cls.min_version is not None:
        min_version = version.parse(cls.min_version)
        if current_version < min_version:
            raise ImproperlyConfigured(
                f"Plugin {cls.__module__} requires NetBox minimum version {cls.min_version}."
            )
    if cls.max_version is not None:
        max_version = version.parse(cls.max_version)
        if current_version > max_version:
            raise ImproperlyConfigured(
                f"Plugin {cls.__module__} requires NetBox maximum version {cls.max_version}."
            )
    # Verify required configuration settings
    for setting in cls.required_settings:
        if setting not in user_config:
            raise ImproperlyConfigured(
                f"Plugin {cls.__module__} requires '{setting}' to be present in the PLUGINS_CONFIG section of "
                f"configuration.py."
            )
    # Apply default configuration values
    for setting, value in cls.default_settings.items():
        if setting not in user_config:
            user_config[setting] = value