<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_user_settings_module(project_root: str):
 """Return project-specific user settings module, if it exists. :param project_root: Absolute path to project root directory. A project settings file is a file named `YSETTINGS_FILE` found at the top level of the project root dir. Return `None` if project root dir is not specified, or if no such file is found. Raise an exception if a file is found, but not importable. The YSettings file can define 2 special module-level functions that interact with the YABT CLI & config system: 1. `extend_cli`, if defined, takes the YABT `parser` object and may extend it, to add custom command-line flags for the project. 2. `extend_config`, if defined, takes the YABT `config` object and the parsed `args` object (returned by the the parser), and may extend the config - should be used to reflect custom project CLI flags in the config object. Beyond that, the settings module is available in YBuild's under `conf.settings` (except for the 2 special fucntions that are removed). """

    if project_root:
        project_settings_file = os.path.join(project_root, YSETTINGS_FILE)
        if os.path.isfile(project_settings_file):
            settings_loader = SourceFileLoader(
                'settings', project_settings_file)
            return settings_loader.load_module()