prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  BackendConfiguration fails validation if backend supports pulse
  <!-- ⚠️ If you do not respect this template, your issue will be closed -->
  <!-- ⚠️ Make sure to browse the opened and closed issues -->
  
  ### Informations
  
  - **Qiskit Terra version**:0.8.0
  - **Python version**3.6.6
  - **Operating system**:OSX
  
  ### What is the current behavior?
  If a backend sets `open_pulse=true` in its configuration Qiskit will raise a validation error when creating a `BackendConfigurationSchema`
  
  
  ### Steps to reproduce the problem
  Create a backend with `open_pulse=true` set in its configuration.
  
  
  ### What is the expected behavior?
  Should not fail.
  
  
  ### Suggested solutions
  Allow `open_pulse=true` to be valid.
  
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `qiskit/providers/models/backendconfiguration.py`
  Content:
  ```
  1 # -*- coding: utf-8 -*-
  2 
  3 # Copyright 2018, IBM.
  4 #
  5 # This source code is licensed under the Apache License, Version 2.0 found in
  6 # the LICENSE.txt file in the root directory of this source tree.
  7 
  8 """Model and schema for backend configuration."""
  9 
  10 from marshmallow.validate import Equal, Length, OneOf, Range, Regexp
  11 
  12 from qiskit.validation import BaseModel, BaseSchema, bind_schema
  13 from qiskit.validation.fields import Boolean, DateTime, Integer, List, Nested, String
  14 
  15 
  16 class GateConfigSchema(BaseSchema):
  17     """Schema for GateConfig."""
  18 
  19     # Required properties.
  20     name = String(required=True)
  21     parameters = List(String(), required=True)
  22     qasm_def = String(required=True)
  23 
  24     # Optional properties.
  25     coupling_map = List(List(Integer(),
  26                              validate=Length(min=1)),
  27                         validate=Length(min=1))
  28     latency_map = List(List(Integer(validate=OneOf([0, 1])),
  29                             validate=Length(min=1)),
  30                        validate=Length(min=1))
  31     conditional = Boolean()
  32     description = String()
  33 
  34 
  35 class BackendConfigurationSchema(BaseSchema):
  36     """Schema for BackendConfiguration."""
  37 
  38     # Required properties.
  39     backend_name = String(required=True)
  40     backend_version = String(required=True,
  41                              validate=Regexp("[0-9]+.[0-9]+.[0-9]+$"))
  42     n_qubits = Integer(required=True, validate=Range(min=1))
  43     basis_gates = List(String(), required=True,
  44                        validate=Length(min=1))
  45     gates = Nested(GateConfigSchema, required=True, many=True,
  46                    validate=Length(min=1))
  47     local = Boolean(required=True)
  48     simulator = Boolean(required=True)
  49     conditional = Boolean(required=True)
  50     open_pulse = Boolean(required=True, validate=Equal(False))
  51     memory = Boolean(required=True)
  52     max_shots = Integer(required=True, validate=Range(min=1))
  53 
  54     # Optional properties.
  55     max_experiments = Integer(validate=Range(min=1))
  56     sample_name = String()
  57     coupling_map = List(List(Integer(),
  58                              validate=Length(min=1)),
  59                         validate=Length(min=1))
  60     n_registers = Integer(validate=Range(min=1))
  61     register_map = List(List(Integer(validate=OneOf([0, 1])),
  62                              validate=Length(min=1)),
  63                         validate=Length(min=1))
  64     configurable = Boolean()
  65     credits_required = Boolean()
  66     online_date = DateTime()
  67     display_name = String()
  68     description = String()
  69     tags = List(String())
  70 
  71 
  72 @bind_schema(GateConfigSchema)
  73 class GateConfig(BaseModel):
  74     """Model for GateConfig.
  75 
  76     Please note that this class only describes the required fields. For the
  77     full description of the model, please check ``GateConfigSchema``.
  78 
  79     Attributes:
  80         name (str): the gate name as it will be referred to in QASM.
  81         parameters (list[str]): variable names for the gate parameters (if any).
  82         qasm_def (str): definition of this gate in terms of QASM primitives U
  83             and CX.
  84     """
  85 
  86     def __init__(self, name, parameters, qasm_def, **kwargs):
  87         self.name = name
  88         self.parameters = parameters
  89         self.qasm_def = qasm_def
  90 
  91         super().__init__(**kwargs)
  92 
  93 
  94 @bind_schema(BackendConfigurationSchema)
  95 class BackendConfiguration(BaseModel):
  96     """Model for BackendConfiguration.
  97 
  98     Please note that this class only describes the required fields. For the
  99     full description of the model, please check ``BackendConfigurationSchema``.
  100     Attributes:
  101         backend_name (str): backend name.
  102         backend_version (str): backend version in the form X.Y.Z.
  103         n_qubits (int): number of qubits.
  104         basis_gates (list[str]): list of basis gates names on the backend.
  105         gates (GateConfig): list of basis gates on the backend.
  106         local (bool): backend is local or remote.
  107         simulator (bool): backend is a simulator.
  108         conditional (bool): backend supports conditional operations.
  109         open_pulse (bool): backend supports open pulse.
  110         memory (bool): backend supports memory.
  111         max_shots (int): maximum number of shots supported.
  112     """
  113 
  114     def __init__(self, backend_name, backend_version, n_qubits, basis_gates,
  115                  gates, local, simulator, conditional, open_pulse, memory,
  116                  max_shots, **kwargs):
  117         self.backend_name = backend_name
  118         self.backend_version = backend_version
  119         self.n_qubits = n_qubits
  120         self.basis_gates = basis_gates
  121         self.gates = gates
  122         self.local = local
  123         self.simulator = simulator
  124         self.conditional = conditional
  125         self.open_pulse = open_pulse
  126         self.memory = memory
  127         self.max_shots = max_shots
  128 
  129         super().__init__(**kwargs)
  130
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/qiskit/providers/models/backendconfiguration.py b/qiskit/providers/models/backendconfiguration.py
  --- a/qiskit/providers/models/backendconfiguration.py
  +++ b/qiskit/providers/models/backendconfiguration.py
  @@ -7,7 +7,7 @@
   
   """Model and schema for backend configuration."""
   
  -from marshmallow.validate import Equal, Length, OneOf, Range, Regexp
  +from marshmallow.validate import Length, OneOf, Range, Regexp
   
   from qiskit.validation import BaseModel, BaseSchema, bind_schema
   from qiskit.validation.fields import Boolean, DateTime, Integer, List, Nested, String
  @@ -47,7 +47,7 @@
       local = Boolean(required=True)
       simulator = Boolean(required=True)
       conditional = Boolean(required=True)
  -    open_pulse = Boolean(required=True, validate=Equal(False))
  +    open_pulse = Boolean(required=True)
       memory = Boolean(required=True)
       max_shots = Integer(required=True, validate=Range(min=1))
  
verification_info: {"golden_diff": "diff --git a/qiskit/providers/models/backendconfiguration.py b/qiskit/providers/models/backendconfiguration.py\n--- a/qiskit/providers/models/backendconfiguration.py\n+++ b/qiskit/providers/models/backendconfiguration.py\n@@ -7,7 +7,7 @@\n \n \"\"\"Model and schema for backend configuration.\"\"\"\n \n-from marshmallow.validate import Equal, Length, OneOf, Range, Regexp\n+from marshmallow.validate import Length, OneOf, Range, Regexp\n \n from qiskit.validation import BaseModel, BaseSchema, bind_schema\n from qiskit.validation.fields import Boolean, DateTime, Integer, List, Nested, String\n@@ -47,7 +47,7 @@\n     local = Boolean(required=True)\n     simulator = Boolean(required=True)\n     conditional = Boolean(required=True)\n-    open_pulse = Boolean(required=True, validate=Equal(False))\n+    open_pulse = Boolean(required=True)\n     memory = Boolean(required=True)\n     max_shots = Integer(required=True, validate=Range(min=1))\n", "issue": "BackendConfiguration fails validation if backend supports pulse\n<!-- \u26a0\ufe0f If you do not respect this template, your issue will be closed -->\r\n<!-- \u26a0\ufe0f Make sure to browse the opened and closed issues -->\r\n\r\n### Informations\r\n\r\n- **Qiskit Terra version**:0.8.0\r\n- **Python version**3.6.6\r\n- **Operating system**:OSX\r\n\r\n### What is the current behavior?\r\nIf a backend sets `open_pulse=true` in its configuration Qiskit will raise a validation error when creating a `BackendConfigurationSchema`\r\n\r\n\r\n### Steps to reproduce the problem\r\nCreate a backend with `open_pulse=true` set in its configuration.\r\n\r\n\r\n### What is the expected behavior?\r\nShould not fail.\r\n\r\n\r\n### Suggested solutions\r\nAllow `open_pulse=true` to be valid.\r\n\r\n\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n\n# Copyright 2018, IBM.\n#\n# This source code is licensed under the Apache License, Version 2.0 found in\n# the LICENSE.txt file in the root directory of this source tree.\n\n\"\"\"Model and schema for backend configuration.\"\"\"\n\nfrom marshmallow.validate import Equal, Length, OneOf, Range, Regexp\n\nfrom qiskit.validation import BaseModel, BaseSchema, bind_schema\nfrom qiskit.validation.fields import Boolean, DateTime, Integer, List, Nested, String\n\n\nclass GateConfigSchema(BaseSchema):\n    \"\"\"Schema for GateConfig.\"\"\"\n\n    # Required properties.\n    name = String(required=True)\n    parameters = List(String(), required=True)\n    qasm_def = String(required=True)\n\n    # Optional properties.\n    coupling_map = List(List(Integer(),\n                             validate=Length(min=1)),\n                        validate=Length(min=1))\n    latency_map = List(List(Integer(validate=OneOf([0, 1])),\n                            validate=Length(min=1)),\n                       validate=Length(min=1))\n    conditional = Boolean()\n    description = String()\n\n\nclass BackendConfigurationSchema(BaseSchema):\n    \"\"\"Schema for BackendConfiguration.\"\"\"\n\n    # Required properties.\n    backend_name = String(required=True)\n    backend_version = String(required=True,\n                             validate=Regexp(\"[0-9]+.[0-9]+.[0-9]+$\"))\n    n_qubits = Integer(required=True, validate=Range(min=1))\n    basis_gates = List(String(), required=True,\n                       validate=Length(min=1))\n    gates = Nested(GateConfigSchema, required=True, many=True,\n                   validate=Length(min=1))\n    local = Boolean(required=True)\n    simulator = Boolean(required=True)\n    conditional = Boolean(required=True)\n    open_pulse = Boolean(required=True, validate=Equal(False))\n    memory = Boolean(required=True)\n    max_shots = Integer(required=True, validate=Range(min=1))\n\n    # Optional properties.\n    max_experiments = Integer(validate=Range(min=1))\n    sample_name = String()\n    coupling_map = List(List(Integer(),\n                             validate=Length(min=1)),\n                        validate=Length(min=1))\n    n_registers = Integer(validate=Range(min=1))\n    register_map = List(List(Integer(validate=OneOf([0, 1])),\n                             validate=Length(min=1)),\n                        validate=Length(min=1))\n    configurable = Boolean()\n    credits_required = Boolean()\n    online_date = DateTime()\n    display_name = String()\n    description = String()\n    tags = List(String())\n\n\n@bind_schema(GateConfigSchema)\nclass GateConfig(BaseModel):\n    \"\"\"Model for GateConfig.\n\n    Please note that this class only describes the required fields. For the\n    full description of the model, please check ``GateConfigSchema``.\n\n    Attributes:\n        name (str): the gate name as it will be referred to in QASM.\n        parameters (list[str]): variable names for the gate parameters (if any).\n        qasm_def (str): definition of this gate in terms of QASM primitives U\n            and CX.\n    \"\"\"\n\n    def __init__(self, name, parameters, qasm_def, **kwargs):\n        self.name = name\n        self.parameters = parameters\n        self.qasm_def = qasm_def\n\n        super().__init__(**kwargs)\n\n\n@bind_schema(BackendConfigurationSchema)\nclass BackendConfiguration(BaseModel):\n    \"\"\"Model for BackendConfiguration.\n\n    Please note that this class only describes the required fields. For the\n    full description of the model, please check ``BackendConfigurationSchema``.\n    Attributes:\n        backend_name (str): backend name.\n        backend_version (str): backend version in the form X.Y.Z.\n        n_qubits (int): number of qubits.\n        basis_gates (list[str]): list of basis gates names on the backend.\n        gates (GateConfig): list of basis gates on the backend.\n        local (bool): backend is local or remote.\n        simulator (bool): backend is a simulator.\n        conditional (bool): backend supports conditional operations.\n        open_pulse (bool): backend supports open pulse.\n        memory (bool): backend supports memory.\n        max_shots (int): maximum number of shots supported.\n    \"\"\"\n\n    def __init__(self, backend_name, backend_version, n_qubits, basis_gates,\n                 gates, local, simulator, conditional, open_pulse, memory,\n                 max_shots, **kwargs):\n        self.backend_name = backend_name\n        self.backend_version = backend_version\n        self.n_qubits = n_qubits\n        self.basis_gates = basis_gates\n        self.gates = gates\n        self.local = local\n        self.simulator = simulator\n        self.conditional = conditional\n        self.open_pulse = open_pulse\n        self.memory = memory\n        self.max_shots = max_shots\n\n        super().__init__(**kwargs)\n", "path": "qiskit/providers/models/backendconfiguration.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n\n# Copyright 2018, IBM.\n#\n# This source code is licensed under the Apache License, Version 2.0 found in\n# the LICENSE.txt file in the root directory of this source tree.\n\n\"\"\"Model and schema for backend configuration.\"\"\"\n\nfrom marshmallow.validate import Length, OneOf, Range, Regexp\n\nfrom qiskit.validation import BaseModel, BaseSchema, bind_schema\nfrom qiskit.validation.fields import Boolean, DateTime, Integer, List, Nested, String\n\n\nclass GateConfigSchema(BaseSchema):\n    \"\"\"Schema for GateConfig.\"\"\"\n\n    # Required properties.\n    name = String(required=True)\n    parameters = List(String(), required=True)\n    qasm_def = String(required=True)\n\n    # Optional properties.\n    coupling_map = List(List(Integer(),\n                             validate=Length(min=1)),\n                        validate=Length(min=1))\n    latency_map = List(List(Integer(validate=OneOf([0, 1])),\n                            validate=Length(min=1)),\n                       validate=Length(min=1))\n    conditional = Boolean()\n    description = String()\n\n\nclass BackendConfigurationSchema(BaseSchema):\n    \"\"\"Schema for BackendConfiguration.\"\"\"\n\n    # Required properties.\n    backend_name = String(required=True)\n    backend_version = String(required=True,\n                             validate=Regexp(\"[0-9]+.[0-9]+.[0-9]+$\"))\n    n_qubits = Integer(required=True, validate=Range(min=1))\n    basis_gates = List(String(), required=True,\n                       validate=Length(min=1))\n    gates = Nested(GateConfigSchema, required=True, many=True,\n                   validate=Length(min=1))\n    local = Boolean(required=True)\n    simulator = Boolean(required=True)\n    conditional = Boolean(required=True)\n    open_pulse = Boolean(required=True)\n    memory = Boolean(required=True)\n    max_shots = Integer(required=True, validate=Range(min=1))\n\n    # Optional properties.\n    max_experiments = Integer(validate=Range(min=1))\n    sample_name = String()\n    coupling_map = List(List(Integer(),\n                             validate=Length(min=1)),\n                        validate=Length(min=1))\n    n_registers = Integer(validate=Range(min=1))\n    register_map = List(List(Integer(validate=OneOf([0, 1])),\n                             validate=Length(min=1)),\n                        validate=Length(min=1))\n    configurable = Boolean()\n    credits_required = Boolean()\n    online_date = DateTime()\n    display_name = String()\n    description = String()\n    tags = List(String())\n\n\n@bind_schema(GateConfigSchema)\nclass GateConfig(BaseModel):\n    \"\"\"Model for GateConfig.\n\n    Please note that this class only describes the required fields. For the\n    full description of the model, please check ``GateConfigSchema``.\n\n    Attributes:\n        name (str): the gate name as it will be referred to in QASM.\n        parameters (list[str]): variable names for the gate parameters (if any).\n        qasm_def (str): definition of this gate in terms of QASM primitives U\n            and CX.\n    \"\"\"\n\n    def __init__(self, name, parameters, qasm_def, **kwargs):\n        self.name = name\n        self.parameters = parameters\n        self.qasm_def = qasm_def\n\n        super().__init__(**kwargs)\n\n\n@bind_schema(BackendConfigurationSchema)\nclass BackendConfiguration(BaseModel):\n    \"\"\"Model for BackendConfiguration.\n\n    Please note that this class only describes the required fields. For the\n    full description of the model, please check ``BackendConfigurationSchema``.\n    Attributes:\n        backend_name (str): backend name.\n        backend_version (str): backend version in the form X.Y.Z.\n        n_qubits (int): number of qubits.\n        basis_gates (list[str]): list of basis gates names on the backend.\n        gates (GateConfig): list of basis gates on the backend.\n        local (bool): backend is local or remote.\n        simulator (bool): backend is a simulator.\n        conditional (bool): backend supports conditional operations.\n        open_pulse (bool): backend supports open pulse.\n        memory (bool): backend supports memory.\n        max_shots (int): maximum number of shots supported.\n    \"\"\"\n\n    def __init__(self, backend_name, backend_version, n_qubits, basis_gates,\n                 gates, local, simulator, conditional, open_pulse, memory,\n                 max_shots, **kwargs):\n        self.backend_name = backend_name\n        self.backend_version = backend_version\n        self.n_qubits = n_qubits\n        self.basis_gates = basis_gates\n        self.gates = gates\n        self.local = local\n        self.simulator = simulator\n        self.conditional = conditional\n        self.open_pulse = open_pulse\n        self.memory = memory\n        self.max_shots = max_shots\n\n        super().__init__(**kwargs)\n", "path": "qiskit/providers/models/backendconfiguration.py"}]}