<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def enable_secrets_engine(self, backend_type, path=None, description=None, config=None, plugin_name=None, options=None, local=False, seal_wrap=False):
 """Enable a new secrets engine at the given path. Supported methods: POST: /sys/mounts/{path}. Produces: 204 (empty body) :param backend_type: The name of the backend type, such as "github" or "token". :type backend_type: str | unicode :param path: The path to mount the method on. If not provided, defaults to the value of the "method_type" argument. :type path: str | unicode :param description: A human-friendly description of the mount. :type description: str | unicode :param config: Configuration options for this mount. These are the possible values: * **default_lease_ttl**: The default lease duration, specified as a string duration like "5s" or "30m". * **max_lease_ttl**: The maximum lease duration, specified as a string duration like "5s" or "30m". * **force_no_cache**: Disable caching. * **plugin_name**: The name of the plugin in the plugin catalog to use. * **audit_non_hmac_request_keys**: Comma-separated list of keys that will not be HMAC'd by audit devices in the request data object. * **audit_non_hmac_response_keys**: Comma-separated list of keys that will not be HMAC'd by audit devices in the response data object. * **listing_visibility**: Specifies whether to show this mount in the UI-specific listing endpoint. ("unauth" or "hidden") * **passthrough_request_headers**: Comma-separated list of headers to whitelist and pass from the request to the backend. :type config: dict :param options: Specifies mount type specific options that are passed to the backend. * **version**: <KV> The version of the KV to mount. Set to "2" for mount KV v2. :type options: dict :param plugin_name: Specifies the name of the plugin to use based from the name in the plugin catalog. Applies only to plugin backends. :type plugin_name: str | unicode :param local: <Vault enterprise only> Specifies if the auth method is a local only. Local auth methods are not replicated nor (if a secondary) removed by replication. :type local: bool :param seal_wrap: <Vault enterprise only> Enable seal wrapping for the mount. :type seal_wrap: bool :return: The response of the request. :rtype: requests.Response """

        if path is None:
            path = backend_type

        params = {
            'type': backend_type,
            'description': description,
            'config': config,
            'options': options,
            'plugin_name': plugin_name,
            'local': local,
            'seal_wrap': seal_wrap,
        }

        api_path = '/v1/sys/mounts/{path}'.format(path=path)
        return self._adapter.post(
            url=api_path,
            json=params,
        )