def customize_ruleset(self, custom_ruleset_file=None):
        """
        Updates the ruleset to include a set of custom rules. These rules will
        be _added_ to the existing ruleset or replace the existing rule with
        the same ID.

        Args:

            custom_ruleset_file (optional): The filepath to the custom rules.
                Defaults to `None`. If `custom_ruleset_file` isn't passed, the
                environment variable `BOKCHOY_A11Y_CUSTOM_RULES_FILE` will be
                checked. If a filepath isn't specified by either of these
                methods, the ruleset will not be updated.

        Raises:

            `IOError` if the specified file does not exist.

        Examples:

            To include the rules defined in `axe-core-custom-rules.js`::

                page.a11y_audit.config.customize_ruleset(
                    "axe-core-custom-rules.js"
                )

            Alternatively, use the environment variable `BOKCHOY_A11Y_CUSTOM_RULES_FILE`
            to specify the path to the file containing the custom rules.

        Documentation for how to write rules:

            https://github.com/dequelabs/axe-core/blob/master/doc/developer-guide.md

        An example of a custom rules file can be found at
        https://github.com/edx/bok-choy/tree/master/tests/a11y_custom_rules.js
        """
        custom_file = custom_ruleset_file or os.environ.get(
            "BOKCHOY_A11Y_CUSTOM_RULES_FILE"
        )

        if not custom_file:
            return

        with open(custom_file, "r") as additional_rules:
            custom_rules = additional_rules.read()

        if "var customRules" not in custom_rules:
            raise A11yAuditConfigError(
                "Custom rules file must include \"var customRules\""
            )

        self.custom_rules = custom_rules
dataset/ETHPy150Open edx/bok-choy/bok_choy/a11y/axe_core_ruleset.py/AxeCoreAuditConfig.customize_ruleset/original