code: def to_dict(self):
          
          return {
              'primitives': self.primitives,
              'init_params': self.init_params,
              'input_names': self.input_names,
              'output_names': self.output_names,
              'hyperparameters': self.get_hyperparameters(),
              'tunable_hyperparameters': self._tunable_hyperparameters
          }
docs: Return all the details of this MLPipeline in a dict.
  
          The dict structure contains all the `__init__` arguments of the
          MLPipeline, as well as the current hyperparameter values and the
          specification of the tunable_hyperparameters::
  
              {
                  "primitives": [
                      "a_primitive",
                      "another_primitive"
                  ],
                  "init_params": {
                      "a_primitive": {
                          "an_argument": "a_value"
                      }
                  },
                  "hyperparameters": {
                      "a_primitive#1": {
                          "an_argument": "a_value",
                          "another_argument": "another_value",
                      },
                      "another_primitive#1": {
                          "yet_another_argument": "yet_another_value"
                       }
                  },
                  "tunable_hyperparameters": {
                      "another_primitive#1": {
                          "yet_another_argument": {
                              "type": "str",
                              "default": "a_default_value",
                              "values": [
                                  "a_default_value",
                                  "yet_another_value"
                              ]
                          }
                      }
                  }
              }