# coding: utf-8

"""
    StockX API

    PRERELEASE API - Subject to change before release. Provides access to StockX's public services, allowing end users to query for product and order information.  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from io_stockx.models.portfolio_id_del_response_portfolio_item_merchant import PortfolioIdDelResponsePortfolioItemMerchant  # noqa: F401,E501
from io_stockx.models.portfolio_id_del_response_portfolio_item_product import PortfolioIdDelResponsePortfolioItemProduct  # noqa: F401,E501
from io_stockx.models.portfolio_id_del_response_portfolio_item_tracking import PortfolioIdDelResponsePortfolioItemTracking  # noqa: F401,E501


class PortfolioIdDelResponsePortfolioItem(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'chain_id': 'str',
        'customer_id': 'int',
        'inventory_id': 'str',
        'product_id': 'str',
        'sku_uuid': 'str',
        'merchant_id': 'int',
        'condition': 'int',
        'action': 'int',
        'action_by': 'int',
        'amount': 'int',
        'expires_at': 'str',
        'expires_at_time': 'int',
        'gain_loss_dollars': 'int',
        'gain_loss_percentage': 'int',
        'market_value': 'str',
        'matched_state': 'int',
        'purchase_date': 'str',
        'purchase_date_time': 'int',
        'state': 'int',
        'text': 'str',
        'notes': 'str',
        'created_at_time': 'int',
        'can_edit': 'bool',
        'can_delete': 'bool',
        'tracking': 'PortfolioIdDelResponsePortfolioItemTracking',
        'meta': 'object',
        'product': 'PortfolioIdDelResponsePortfolioItemProduct',
        'merchant': 'PortfolioIdDelResponsePortfolioItemMerchant'
    }

    attribute_map = {
        'chain_id': 'chainId',
        'customer_id': 'customerId',
        'inventory_id': 'inventoryId',
        'product_id': 'productId',
        'sku_uuid': 'skuUuid',
        'merchant_id': 'merchantId',
        'condition': 'condition',
        'action': 'action',
        'action_by': 'actionBy',
        'amount': 'amount',
        'expires_at': 'expiresAt',
        'expires_at_time': 'expiresAtTime',
        'gain_loss_dollars': 'gainLossDollars',
        'gain_loss_percentage': 'gainLossPercentage',
        'market_value': 'marketValue',
        'matched_state': 'matchedState',
        'purchase_date': 'purchaseDate',
        'purchase_date_time': 'purchaseDateTime',
        'state': 'state',
        'text': 'text',
        'notes': 'notes',
        'created_at_time': 'createdAtTime',
        'can_edit': 'canEdit',
        'can_delete': 'canDelete',
        'tracking': 'Tracking',
        'meta': 'meta',
        'product': 'product',
        'merchant': 'Merchant'
    }

    def __init__(self, chain_id=None, customer_id=None, inventory_id=None, product_id=None, sku_uuid=None, merchant_id=None, condition=None, action=None, action_by=None, amount=None, expires_at=None, expires_at_time=None, gain_loss_dollars=None, gain_loss_percentage=None, market_value=None, matched_state=None, purchase_date=None, purchase_date_time=None, state=None, text=None, notes=None, created_at_time=None, can_edit=None, can_delete=None, tracking=None, meta=None, product=None, merchant=None):  # noqa: E501
        """PortfolioIdDelResponsePortfolioItem - a model defined in Swagger"""  # noqa: E501

        self._chain_id = None
        self._customer_id = None
        self._inventory_id = None
        self._product_id = None
        self._sku_uuid = None
        self._merchant_id = None
        self._condition = None
        self._action = None
        self._action_by = None
        self._amount = None
        self._expires_at = None
        self._expires_at_time = None
        self._gain_loss_dollars = None
        self._gain_loss_percentage = None
        self._market_value = None
        self._matched_state = None
        self._purchase_date = None
        self._purchase_date_time = None
        self._state = None
        self._text = None
        self._notes = None
        self._created_at_time = None
        self._can_edit = None
        self._can_delete = None
        self._tracking = None
        self._meta = None
        self._product = None
        self._merchant = None
        self.discriminator = None

        self.chain_id = chain_id
        self.customer_id = customer_id
        self.inventory_id = inventory_id
        self.product_id = product_id
        self.sku_uuid = sku_uuid
        self.merchant_id = merchant_id
        self.condition = condition
        self.action = action
        self.action_by = action_by
        self.amount = amount
        self.expires_at = expires_at
        self.expires_at_time = expires_at_time
        self.gain_loss_dollars = gain_loss_dollars
        self.gain_loss_percentage = gain_loss_percentage
        self.market_value = market_value
        self.matched_state = matched_state
        self.purchase_date = purchase_date
        self.purchase_date_time = purchase_date_time
        self.state = state
        self.text = text
        self.notes = notes
        self.created_at_time = created_at_time
        self.can_edit = can_edit
        self.can_delete = can_delete
        self.tracking = tracking
        self.meta = meta
        self.product = product
        self.merchant = merchant

    @property
    def chain_id(self):
        """Gets the chain_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The chain_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: str
        """
        return self._chain_id

    @chain_id.setter
    def chain_id(self, chain_id):
        """Sets the chain_id of this PortfolioIdDelResponsePortfolioItem.


        :param chain_id: The chain_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: str
        """
        if chain_id is None:
            raise ValueError("Invalid value for `chain_id`, must not be `None`")  # noqa: E501

        self._chain_id = chain_id

    @property
    def customer_id(self):
        """Gets the customer_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The customer_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._customer_id

    @customer_id.setter
    def customer_id(self, customer_id):
        """Sets the customer_id of this PortfolioIdDelResponsePortfolioItem.


        :param customer_id: The customer_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if customer_id is None:
            raise ValueError("Invalid value for `customer_id`, must not be `None`")  # noqa: E501

        self._customer_id = customer_id

    @property
    def inventory_id(self):
        """Gets the inventory_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The inventory_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: str
        """
        return self._inventory_id

    @inventory_id.setter
    def inventory_id(self, inventory_id):
        """Sets the inventory_id of this PortfolioIdDelResponsePortfolioItem.


        :param inventory_id: The inventory_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: str
        """
        if inventory_id is None:
            raise ValueError("Invalid value for `inventory_id`, must not be `None`")  # noqa: E501

        self._inventory_id = inventory_id

    @property
    def product_id(self):
        """Gets the product_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The product_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: str
        """
        return self._product_id

    @product_id.setter
    def product_id(self, product_id):
        """Sets the product_id of this PortfolioIdDelResponsePortfolioItem.


        :param product_id: The product_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: str
        """
        if product_id is None:
            raise ValueError("Invalid value for `product_id`, must not be `None`")  # noqa: E501

        self._product_id = product_id

    @property
    def sku_uuid(self):
        """Gets the sku_uuid of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The sku_uuid of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: str
        """
        return self._sku_uuid

    @sku_uuid.setter
    def sku_uuid(self, sku_uuid):
        """Sets the sku_uuid of this PortfolioIdDelResponsePortfolioItem.


        :param sku_uuid: The sku_uuid of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: str
        """
        if sku_uuid is None:
            raise ValueError("Invalid value for `sku_uuid`, must not be `None`")  # noqa: E501

        self._sku_uuid = sku_uuid

    @property
    def merchant_id(self):
        """Gets the merchant_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The merchant_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._merchant_id

    @merchant_id.setter
    def merchant_id(self, merchant_id):
        """Sets the merchant_id of this PortfolioIdDelResponsePortfolioItem.


        :param merchant_id: The merchant_id of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if merchant_id is None:
            raise ValueError("Invalid value for `merchant_id`, must not be `None`")  # noqa: E501

        self._merchant_id = merchant_id

    @property
    def condition(self):
        """Gets the condition of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The condition of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._condition

    @condition.setter
    def condition(self, condition):
        """Sets the condition of this PortfolioIdDelResponsePortfolioItem.


        :param condition: The condition of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if condition is None:
            raise ValueError("Invalid value for `condition`, must not be `None`")  # noqa: E501

        self._condition = condition

    @property
    def action(self):
        """Gets the action of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The action of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._action

    @action.setter
    def action(self, action):
        """Sets the action of this PortfolioIdDelResponsePortfolioItem.


        :param action: The action of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if action is None:
            raise ValueError("Invalid value for `action`, must not be `None`")  # noqa: E501

        self._action = action

    @property
    def action_by(self):
        """Gets the action_by of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The action_by of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._action_by

    @action_by.setter
    def action_by(self, action_by):
        """Sets the action_by of this PortfolioIdDelResponsePortfolioItem.


        :param action_by: The action_by of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if action_by is None:
            raise ValueError("Invalid value for `action_by`, must not be `None`")  # noqa: E501

        self._action_by = action_by

    @property
    def amount(self):
        """Gets the amount of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The amount of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._amount

    @amount.setter
    def amount(self, amount):
        """Sets the amount of this PortfolioIdDelResponsePortfolioItem.


        :param amount: The amount of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if amount is None:
            raise ValueError("Invalid value for `amount`, must not be `None`")  # noqa: E501

        self._amount = amount

    @property
    def expires_at(self):
        """Gets the expires_at of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The expires_at of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: str
        """
        return self._expires_at

    @expires_at.setter
    def expires_at(self, expires_at):
        """Sets the expires_at of this PortfolioIdDelResponsePortfolioItem.


        :param expires_at: The expires_at of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: str
        """
        if expires_at is None:
            raise ValueError("Invalid value for `expires_at`, must not be `None`")  # noqa: E501

        self._expires_at = expires_at

    @property
    def expires_at_time(self):
        """Gets the expires_at_time of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The expires_at_time of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._expires_at_time

    @expires_at_time.setter
    def expires_at_time(self, expires_at_time):
        """Sets the expires_at_time of this PortfolioIdDelResponsePortfolioItem.


        :param expires_at_time: The expires_at_time of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if expires_at_time is None:
            raise ValueError("Invalid value for `expires_at_time`, must not be `None`")  # noqa: E501

        self._expires_at_time = expires_at_time

    @property
    def gain_loss_dollars(self):
        """Gets the gain_loss_dollars of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The gain_loss_dollars of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._gain_loss_dollars

    @gain_loss_dollars.setter
    def gain_loss_dollars(self, gain_loss_dollars):
        """Sets the gain_loss_dollars of this PortfolioIdDelResponsePortfolioItem.


        :param gain_loss_dollars: The gain_loss_dollars of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if gain_loss_dollars is None:
            raise ValueError("Invalid value for `gain_loss_dollars`, must not be `None`")  # noqa: E501

        self._gain_loss_dollars = gain_loss_dollars

    @property
    def gain_loss_percentage(self):
        """Gets the gain_loss_percentage of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The gain_loss_percentage of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._gain_loss_percentage

    @gain_loss_percentage.setter
    def gain_loss_percentage(self, gain_loss_percentage):
        """Sets the gain_loss_percentage of this PortfolioIdDelResponsePortfolioItem.


        :param gain_loss_percentage: The gain_loss_percentage of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if gain_loss_percentage is None:
            raise ValueError("Invalid value for `gain_loss_percentage`, must not be `None`")  # noqa: E501

        self._gain_loss_percentage = gain_loss_percentage

    @property
    def market_value(self):
        """Gets the market_value of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The market_value of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: str
        """
        return self._market_value

    @market_value.setter
    def market_value(self, market_value):
        """Sets the market_value of this PortfolioIdDelResponsePortfolioItem.


        :param market_value: The market_value of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: str
        """
        if market_value is None:
            raise ValueError("Invalid value for `market_value`, must not be `None`")  # noqa: E501

        self._market_value = market_value

    @property
    def matched_state(self):
        """Gets the matched_state of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The matched_state of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._matched_state

    @matched_state.setter
    def matched_state(self, matched_state):
        """Sets the matched_state of this PortfolioIdDelResponsePortfolioItem.


        :param matched_state: The matched_state of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if matched_state is None:
            raise ValueError("Invalid value for `matched_state`, must not be `None`")  # noqa: E501

        self._matched_state = matched_state

    @property
    def purchase_date(self):
        """Gets the purchase_date of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The purchase_date of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: str
        """
        return self._purchase_date

    @purchase_date.setter
    def purchase_date(self, purchase_date):
        """Sets the purchase_date of this PortfolioIdDelResponsePortfolioItem.


        :param purchase_date: The purchase_date of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: str
        """
        if purchase_date is None:
            raise ValueError("Invalid value for `purchase_date`, must not be `None`")  # noqa: E501

        self._purchase_date = purchase_date

    @property
    def purchase_date_time(self):
        """Gets the purchase_date_time of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The purchase_date_time of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._purchase_date_time

    @purchase_date_time.setter
    def purchase_date_time(self, purchase_date_time):
        """Sets the purchase_date_time of this PortfolioIdDelResponsePortfolioItem.


        :param purchase_date_time: The purchase_date_time of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if purchase_date_time is None:
            raise ValueError("Invalid value for `purchase_date_time`, must not be `None`")  # noqa: E501

        self._purchase_date_time = purchase_date_time

    @property
    def state(self):
        """Gets the state of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The state of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._state

    @state.setter
    def state(self, state):
        """Sets the state of this PortfolioIdDelResponsePortfolioItem.


        :param state: The state of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if state is None:
            raise ValueError("Invalid value for `state`, must not be `None`")  # noqa: E501

        self._state = state

    @property
    def text(self):
        """Gets the text of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The text of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: str
        """
        return self._text

    @text.setter
    def text(self, text):
        """Sets the text of this PortfolioIdDelResponsePortfolioItem.


        :param text: The text of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: str
        """
        if text is None:
            raise ValueError("Invalid value for `text`, must not be `None`")  # noqa: E501

        self._text = text

    @property
    def notes(self):
        """Gets the notes of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The notes of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: str
        """
        return self._notes

    @notes.setter
    def notes(self, notes):
        """Sets the notes of this PortfolioIdDelResponsePortfolioItem.


        :param notes: The notes of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: str
        """
        if notes is None:
            raise ValueError("Invalid value for `notes`, must not be `None`")  # noqa: E501

        self._notes = notes

    @property
    def created_at_time(self):
        """Gets the created_at_time of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The created_at_time of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: int
        """
        return self._created_at_time

    @created_at_time.setter
    def created_at_time(self, created_at_time):
        """Sets the created_at_time of this PortfolioIdDelResponsePortfolioItem.


        :param created_at_time: The created_at_time of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: int
        """
        if created_at_time is None:
            raise ValueError("Invalid value for `created_at_time`, must not be `None`")  # noqa: E501

        self._created_at_time = created_at_time

    @property
    def can_edit(self):
        """Gets the can_edit of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The can_edit of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: bool
        """
        return self._can_edit

    @can_edit.setter
    def can_edit(self, can_edit):
        """Sets the can_edit of this PortfolioIdDelResponsePortfolioItem.


        :param can_edit: The can_edit of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: bool
        """
        if can_edit is None:
            raise ValueError("Invalid value for `can_edit`, must not be `None`")  # noqa: E501

        self._can_edit = can_edit

    @property
    def can_delete(self):
        """Gets the can_delete of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The can_delete of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: bool
        """
        return self._can_delete

    @can_delete.setter
    def can_delete(self, can_delete):
        """Sets the can_delete of this PortfolioIdDelResponsePortfolioItem.


        :param can_delete: The can_delete of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: bool
        """
        if can_delete is None:
            raise ValueError("Invalid value for `can_delete`, must not be `None`")  # noqa: E501

        self._can_delete = can_delete

    @property
    def tracking(self):
        """Gets the tracking of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The tracking of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: PortfolioIdDelResponsePortfolioItemTracking
        """
        return self._tracking

    @tracking.setter
    def tracking(self, tracking):
        """Sets the tracking of this PortfolioIdDelResponsePortfolioItem.


        :param tracking: The tracking of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: PortfolioIdDelResponsePortfolioItemTracking
        """
        if tracking is None:
            raise ValueError("Invalid value for `tracking`, must not be `None`")  # noqa: E501

        self._tracking = tracking

    @property
    def meta(self):
        """Gets the meta of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The meta of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: object
        """
        return self._meta

    @meta.setter
    def meta(self, meta):
        """Sets the meta of this PortfolioIdDelResponsePortfolioItem.


        :param meta: The meta of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: object
        """
        if meta is None:
            raise ValueError("Invalid value for `meta`, must not be `None`")  # noqa: E501

        self._meta = meta

    @property
    def product(self):
        """Gets the product of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The product of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: PortfolioIdDelResponsePortfolioItemProduct
        """
        return self._product

    @product.setter
    def product(self, product):
        """Sets the product of this PortfolioIdDelResponsePortfolioItem.


        :param product: The product of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: PortfolioIdDelResponsePortfolioItemProduct
        """
        if product is None:
            raise ValueError("Invalid value for `product`, must not be `None`")  # noqa: E501

        self._product = product

    @property
    def merchant(self):
        """Gets the merchant of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501


        :return: The merchant of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :rtype: PortfolioIdDelResponsePortfolioItemMerchant
        """
        return self._merchant

    @merchant.setter
    def merchant(self, merchant):
        """Sets the merchant of this PortfolioIdDelResponsePortfolioItem.


        :param merchant: The merchant of this PortfolioIdDelResponsePortfolioItem.  # noqa: E501
        :type: PortfolioIdDelResponsePortfolioItemMerchant
        """
        if merchant is None:
            raise ValueError("Invalid value for `merchant`, must not be `None`")  # noqa: E501

        self._merchant = merchant

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, PortfolioIdDelResponsePortfolioItem):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
