
import yaml

from combine import CombineError

MANIFEST_FORMAT = 1

class Manifest:

    def __init__(self):
        self.properties = {"manifest-format": MANIFEST_FORMAT}
        self.actions = []

    def add_property(self, name, value):
        self.properties[name] = value

    def add_action(self, action):
        self.actions.append(action)

    def to_dict(self):
        """
        Generate a dictionary representation of the Manifest object.
        """

        return dict(self.properties, actions=self.actions)

    @classmethod
    def from_dict(cls, data):
        """
        Given a dictionary object, generate a new Manifest object.
        """

        format = data["manifest-format"]
        if (format > MANIFEST_FORMAT or format < 0):
            raise CombineError("Unsupported manifest format")

        mft = Manifest()

        for key, value in data.items():
            if key == "actions":
                for action in value:
                    mft.add_action(action)
            else:
                mft.add_property(key, value)
        for action in data["actions"]:
            mft.add_action(action)

        return mft

    def to_yaml(self):
        """
        Generate a YAML data string representing the Manifest object.
        """

        str = yaml.safe_dump(self.to_dict(), default_flow_style=False)

        return str

    @classmethod
    def from_yaml(cls, str):
        """
        Given a string of YAML data, generate a new Manifest object.
        """

        data = yaml.safe_load(str)
        return cls.from_dict(data)


import yaml

from combine import CombineError

MANIFEST_FORMAT = 1

class Manifest:

    def __init__(self):
        self.properties = {"manifest-format": MANIFEST_FORMAT}
        self.actions = []

    def add_property(self, name, value):
        self.properties[name] = value

    def add_action(self, action):
        self.actions.append(action)

    def to_dict(self):
        """
        Generate a dictionary representation of the Manifest object.
        """

        return dict(self.properties, actions=self.actions)

    @classmethod
    def from_dict(cls, data):
        """
        Given a dictionary object, generate a new Manifest object.
        """

        format = data["manifest-format"]
        if (format > MANIFEST_FORMAT or format < 0):
            raise CombineError("Unsupported manifest format")

        mft = Manifest()

        for key, value in data.items():
            if key == "actions":
                for action in value:
                    mft.add_action(dict(action))
            else:
                mft.add_property(key, value)

        return mft

    def to_yaml(self):
        """
        Generate a YAML data string representing the Manifest object.
        """

        str = yaml.safe_dump(self.to_dict(), default_flow_style=False)

        return str

    @classmethod
    def from_yaml(cls, str):
        """
        Given a string of YAML data, generate a new Manifest object.
        """

        data = yaml.safe_load(str)
        return cls.from_dict(data)

Fix issues with loading from dict
Fix issues with loading from dict

  
  import yaml
  
  from combine import CombineError
  
  MANIFEST_FORMAT = 1
  
  class Manifest:
  
      def __init__(self):
          self.properties = {"manifest-format": MANIFEST_FORMAT}
          self.actions = []
  
      def add_property(self, name, value):
          self.properties[name] = value
  
      def add_action(self, action):
          self.actions.append(action)
  
      def to_dict(self):
          """
          Generate a dictionary representation of the Manifest object.
          """
  
          return dict(self.properties, actions=self.actions)
  
      @classmethod
      def from_dict(cls, data):
          """
          Given a dictionary object, generate a new Manifest object.
          """
  
          format = data["manifest-format"]
          if (format > MANIFEST_FORMAT or format < 0):
              raise CombineError("Unsupported manifest format")
  
          mft = Manifest()
  
          for key, value in data.items():
              if key == "actions":
                  for action in value:
-                     mft.add_action(action)
+                     mft.add_action(dict(action))
              else:
                  mft.add_property(key, value)
-         for action in data["actions"]:
-             mft.add_action(action)
  
          return mft
  
      def to_yaml(self):
          """
          Generate a YAML data string representing the Manifest object.
          """
  
          str = yaml.safe_dump(self.to_dict(), default_flow_style=False)
  
          return str
  
      @classmethod
      def from_yaml(cls, str):
          """
          Given a string of YAML data, generate a new Manifest object.
          """
  
          data = yaml.safe_load(str)
          return cls.from_dict(data)
  
Fix issues with loading from dict
## Code Before:

import yaml

from combine import CombineError

MANIFEST_FORMAT = 1

class Manifest:

    def __init__(self):
        self.properties = {"manifest-format": MANIFEST_FORMAT}
        self.actions = []

    def add_property(self, name, value):
        self.properties[name] = value

    def add_action(self, action):
        self.actions.append(action)

    def to_dict(self):
        """
        Generate a dictionary representation of the Manifest object.
        """

        return dict(self.properties, actions=self.actions)

    @classmethod
    def from_dict(cls, data):
        """
        Given a dictionary object, generate a new Manifest object.
        """

        format = data["manifest-format"]
        if (format > MANIFEST_FORMAT or format < 0):
            raise CombineError("Unsupported manifest format")

        mft = Manifest()

        for key, value in data.items():
            if key == "actions":
                for action in value:
                    mft.add_action(action)
            else:
                mft.add_property(key, value)
        for action in data["actions"]:
            mft.add_action(action)

        return mft

    def to_yaml(self):
        """
        Generate a YAML data string representing the Manifest object.
        """

        str = yaml.safe_dump(self.to_dict(), default_flow_style=False)

        return str

    @classmethod
    def from_yaml(cls, str):
        """
        Given a string of YAML data, generate a new Manifest object.
        """

        data = yaml.safe_load(str)
        return cls.from_dict(data)

## Instruction:
Fix issues with loading from dict
## Code After:

import yaml

from combine import CombineError

MANIFEST_FORMAT = 1

class Manifest:

    def __init__(self):
        self.properties = {"manifest-format": MANIFEST_FORMAT}
        self.actions = []

    def add_property(self, name, value):
        self.properties[name] = value

    def add_action(self, action):
        self.actions.append(action)

    def to_dict(self):
        """
        Generate a dictionary representation of the Manifest object.
        """

        return dict(self.properties, actions=self.actions)

    @classmethod
    def from_dict(cls, data):
        """
        Given a dictionary object, generate a new Manifest object.
        """

        format = data["manifest-format"]
        if (format > MANIFEST_FORMAT or format < 0):
            raise CombineError("Unsupported manifest format")

        mft = Manifest()

        for key, value in data.items():
            if key == "actions":
                for action in value:
                    mft.add_action(dict(action))
            else:
                mft.add_property(key, value)

        return mft

    def to_yaml(self):
        """
        Generate a YAML data string representing the Manifest object.
        """

        str = yaml.safe_dump(self.to_dict(), default_flow_style=False)

        return str

    @classmethod
    def from_yaml(cls, str):
        """
        Given a string of YAML data, generate a new Manifest object.
        """

        data = yaml.safe_load(str)
        return cls.from_dict(data)
