# coding: utf-8

"""
    Finnhub API

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: 1.0.0
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from docifier-test.configuration import Configuration


class CompanyProfile(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'address': 'str',
        'city': 'str',
        'country': 'str',
        'currency': 'str',
        'cusip': 'str',
        'sedol': 'str',
        'description': 'str',
        'exchange': 'str',
        'ggroup': 'str',
        'gind': 'str',
        'gsector': 'str',
        'gsubind': 'str',
        'isin': 'str',
        'naics_national_industry': 'str',
        'naics': 'str',
        'naics_sector': 'str',
        'naics_subsector': 'str',
        'name': 'str',
        'phone': 'str',
        'state': 'str',
        'ticker': 'str',
        'weburl': 'str',
        'ipo': 'date',
        'market_capitalization': 'float',
        'share_outstanding': 'float',
        'employee_total': 'int',
        'logo': 'str',
        'finnhub_industry': 'str'
    }

    attribute_map = {
        'address': 'address',
        'city': 'city',
        'country': 'country',
        'currency': 'currency',
        'cusip': 'cusip',
        'sedol': 'sedol',
        'description': 'description',
        'exchange': 'exchange',
        'ggroup': 'ggroup',
        'gind': 'gind',
        'gsector': 'gsector',
        'gsubind': 'gsubind',
        'isin': 'isin',
        'naics_national_industry': 'naicsNationalIndustry',
        'naics': 'naics',
        'naics_sector': 'naicsSector',
        'naics_subsector': 'naicsSubsector',
        'name': 'name',
        'phone': 'phone',
        'state': 'state',
        'ticker': 'ticker',
        'weburl': 'weburl',
        'ipo': 'ipo',
        'market_capitalization': 'marketCapitalization',
        'share_outstanding': 'shareOutstanding',
        'employee_total': 'employeeTotal',
        'logo': 'logo',
        'finnhub_industry': 'finnhubIndustry'
    }

    def __init__(self, address=None, city=None, country=None, currency=None, cusip=None, sedol=None, description=None, exchange=None, ggroup=None, gind=None, gsector=None, gsubind=None, isin=None, naics_national_industry=None, naics=None, naics_sector=None, naics_subsector=None, name=None, phone=None, state=None, ticker=None, weburl=None, ipo=None, market_capitalization=None, share_outstanding=None, employee_total=None, logo=None, finnhub_industry=None, local_vars_configuration=None):  # noqa: E501
        """CompanyProfile - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._address = None
        self._city = None
        self._country = None
        self._currency = None
        self._cusip = None
        self._sedol = None
        self._description = None
        self._exchange = None
        self._ggroup = None
        self._gind = None
        self._gsector = None
        self._gsubind = None
        self._isin = None
        self._naics_national_industry = None
        self._naics = None
        self._naics_sector = None
        self._naics_subsector = None
        self._name = None
        self._phone = None
        self._state = None
        self._ticker = None
        self._weburl = None
        self._ipo = None
        self._market_capitalization = None
        self._share_outstanding = None
        self._employee_total = None
        self._logo = None
        self._finnhub_industry = None
        self.discriminator = None

        if address is not None:
            self.address = address
        if city is not None:
            self.city = city
        if country is not None:
            self.country = country
        if currency is not None:
            self.currency = currency
        if cusip is not None:
            self.cusip = cusip
        if sedol is not None:
            self.sedol = sedol
        if description is not None:
            self.description = description
        if exchange is not None:
            self.exchange = exchange
        if ggroup is not None:
            self.ggroup = ggroup
        if gind is not None:
            self.gind = gind
        if gsector is not None:
            self.gsector = gsector
        if gsubind is not None:
            self.gsubind = gsubind
        if isin is not None:
            self.isin = isin
        if naics_national_industry is not None:
            self.naics_national_industry = naics_national_industry
        if naics is not None:
            self.naics = naics
        if naics_sector is not None:
            self.naics_sector = naics_sector
        if naics_subsector is not None:
            self.naics_subsector = naics_subsector
        if name is not None:
            self.name = name
        if phone is not None:
            self.phone = phone
        if state is not None:
            self.state = state
        if ticker is not None:
            self.ticker = ticker
        if weburl is not None:
            self.weburl = weburl
        if ipo is not None:
            self.ipo = ipo
        if market_capitalization is not None:
            self.market_capitalization = market_capitalization
        if share_outstanding is not None:
            self.share_outstanding = share_outstanding
        if employee_total is not None:
            self.employee_total = employee_total
        if logo is not None:
            self.logo = logo
        if finnhub_industry is not None:
            self.finnhub_industry = finnhub_industry

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

        Address of company's headquarter.  # noqa: E501

        :return: The address of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._address

    @address.setter
    def address(self, address):
        """Sets the address of this CompanyProfile.

        Address of company's headquarter.  # noqa: E501

        :param address: The address of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._address = address

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

        City of company's headquarter.  # noqa: E501

        :return: The city of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._city

    @city.setter
    def city(self, city):
        """Sets the city of this CompanyProfile.

        City of company's headquarter.  # noqa: E501

        :param city: The city of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._city = city

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

        Country of company's headquarter.  # noqa: E501

        :return: The country of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._country

    @country.setter
    def country(self, country):
        """Sets the country of this CompanyProfile.

        Country of company's headquarter.  # noqa: E501

        :param country: The country of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._country = country

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

        Currency used in company filings.  # noqa: E501

        :return: The currency of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._currency

    @currency.setter
    def currency(self, currency):
        """Sets the currency of this CompanyProfile.

        Currency used in company filings.  # noqa: E501

        :param currency: The currency of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._currency = currency

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

        CUSIP number.  # noqa: E501

        :return: The cusip of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._cusip

    @cusip.setter
    def cusip(self, cusip):
        """Sets the cusip of this CompanyProfile.

        CUSIP number.  # noqa: E501

        :param cusip: The cusip of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._cusip = cusip

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

        Sedol number.  # noqa: E501

        :return: The sedol of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._sedol

    @sedol.setter
    def sedol(self, sedol):
        """Sets the sedol of this CompanyProfile.

        Sedol number.  # noqa: E501

        :param sedol: The sedol of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._sedol = sedol

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

        Company business summary.  # noqa: E501

        :return: The description of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """Sets the description of this CompanyProfile.

        Company business summary.  # noqa: E501

        :param description: The description of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._description = description

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

        Listed exchange.  # noqa: E501

        :return: The exchange of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._exchange

    @exchange.setter
    def exchange(self, exchange):
        """Sets the exchange of this CompanyProfile.

        Listed exchange.  # noqa: E501

        :param exchange: The exchange of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._exchange = exchange

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

        GICS industry group.  # noqa: E501

        :return: The ggroup of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._ggroup

    @ggroup.setter
    def ggroup(self, ggroup):
        """Sets the ggroup of this CompanyProfile.

        GICS industry group.  # noqa: E501

        :param ggroup: The ggroup of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._ggroup = ggroup

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

        GICS industry.  # noqa: E501

        :return: The gind of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._gind

    @gind.setter
    def gind(self, gind):
        """Sets the gind of this CompanyProfile.

        GICS industry.  # noqa: E501

        :param gind: The gind of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._gind = gind

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

        GICS sector.  # noqa: E501

        :return: The gsector of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._gsector

    @gsector.setter
    def gsector(self, gsector):
        """Sets the gsector of this CompanyProfile.

        GICS sector.  # noqa: E501

        :param gsector: The gsector of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._gsector = gsector

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

        GICS sub-industry.  # noqa: E501

        :return: The gsubind of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._gsubind

    @gsubind.setter
    def gsubind(self, gsubind):
        """Sets the gsubind of this CompanyProfile.

        GICS sub-industry.  # noqa: E501

        :param gsubind: The gsubind of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._gsubind = gsubind

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

        ISIN number.  # noqa: E501

        :return: The isin of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._isin

    @isin.setter
    def isin(self, isin):
        """Sets the isin of this CompanyProfile.

        ISIN number.  # noqa: E501

        :param isin: The isin of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._isin = isin

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

        NAICS national industry.  # noqa: E501

        :return: The naics_national_industry of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._naics_national_industry

    @naics_national_industry.setter
    def naics_national_industry(self, naics_national_industry):
        """Sets the naics_national_industry of this CompanyProfile.

        NAICS national industry.  # noqa: E501

        :param naics_national_industry: The naics_national_industry of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._naics_national_industry = naics_national_industry

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

        NAICS industry.  # noqa: E501

        :return: The naics of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._naics

    @naics.setter
    def naics(self, naics):
        """Sets the naics of this CompanyProfile.

        NAICS industry.  # noqa: E501

        :param naics: The naics of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._naics = naics

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

        NAICS sector.  # noqa: E501

        :return: The naics_sector of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._naics_sector

    @naics_sector.setter
    def naics_sector(self, naics_sector):
        """Sets the naics_sector of this CompanyProfile.

        NAICS sector.  # noqa: E501

        :param naics_sector: The naics_sector of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._naics_sector = naics_sector

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

        NAICS subsector.  # noqa: E501

        :return: The naics_subsector of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._naics_subsector

    @naics_subsector.setter
    def naics_subsector(self, naics_subsector):
        """Sets the naics_subsector of this CompanyProfile.

        NAICS subsector.  # noqa: E501

        :param naics_subsector: The naics_subsector of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._naics_subsector = naics_subsector

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

        Company name.  # noqa: E501

        :return: The name of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this CompanyProfile.

        Company name.  # noqa: E501

        :param name: The name of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._name = name

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

        Company phone number.  # noqa: E501

        :return: The phone of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._phone

    @phone.setter
    def phone(self, phone):
        """Sets the phone of this CompanyProfile.

        Company phone number.  # noqa: E501

        :param phone: The phone of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._phone = phone

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

        State of company's headquarter.  # noqa: E501

        :return: The state of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._state

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

        State of company's headquarter.  # noqa: E501

        :param state: The state of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._state = state

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

        Company symbol/ticker as used on the listed exchange.  # noqa: E501

        :return: The ticker of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._ticker

    @ticker.setter
    def ticker(self, ticker):
        """Sets the ticker of this CompanyProfile.

        Company symbol/ticker as used on the listed exchange.  # noqa: E501

        :param ticker: The ticker of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._ticker = ticker

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

        Company website.  # noqa: E501

        :return: The weburl of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._weburl

    @weburl.setter
    def weburl(self, weburl):
        """Sets the weburl of this CompanyProfile.

        Company website.  # noqa: E501

        :param weburl: The weburl of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._weburl = weburl

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

        IPO date.  # noqa: E501

        :return: The ipo of this CompanyProfile.  # noqa: E501
        :rtype: date
        """
        return self._ipo

    @ipo.setter
    def ipo(self, ipo):
        """Sets the ipo of this CompanyProfile.

        IPO date.  # noqa: E501

        :param ipo: The ipo of this CompanyProfile.  # noqa: E501
        :type: date
        """

        self._ipo = ipo

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

        Market Capitalization.  # noqa: E501

        :return: The market_capitalization of this CompanyProfile.  # noqa: E501
        :rtype: float
        """
        return self._market_capitalization

    @market_capitalization.setter
    def market_capitalization(self, market_capitalization):
        """Sets the market_capitalization of this CompanyProfile.

        Market Capitalization.  # noqa: E501

        :param market_capitalization: The market_capitalization of this CompanyProfile.  # noqa: E501
        :type: float
        """

        self._market_capitalization = market_capitalization

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

        Number of oustanding shares.  # noqa: E501

        :return: The share_outstanding of this CompanyProfile.  # noqa: E501
        :rtype: float
        """
        return self._share_outstanding

    @share_outstanding.setter
    def share_outstanding(self, share_outstanding):
        """Sets the share_outstanding of this CompanyProfile.

        Number of oustanding shares.  # noqa: E501

        :param share_outstanding: The share_outstanding of this CompanyProfile.  # noqa: E501
        :type: float
        """

        self._share_outstanding = share_outstanding

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

        Number of employee.  # noqa: E501

        :return: The employee_total of this CompanyProfile.  # noqa: E501
        :rtype: int
        """
        return self._employee_total

    @employee_total.setter
    def employee_total(self, employee_total):
        """Sets the employee_total of this CompanyProfile.

        Number of employee.  # noqa: E501

        :param employee_total: The employee_total of this CompanyProfile.  # noqa: E501
        :type: int
        """

        self._employee_total = employee_total

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

        Logo image.  # noqa: E501

        :return: The logo of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._logo

    @logo.setter
    def logo(self, logo):
        """Sets the logo of this CompanyProfile.

        Logo image.  # noqa: E501

        :param logo: The logo of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._logo = logo

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

        Finnhub industry classification.  # noqa: E501

        :return: The finnhub_industry of this CompanyProfile.  # noqa: E501
        :rtype: str
        """
        return self._finnhub_industry

    @finnhub_industry.setter
    def finnhub_industry(self, finnhub_industry):
        """Sets the finnhub_industry of this CompanyProfile.

        Finnhub industry classification.  # noqa: E501

        :param finnhub_industry: The finnhub_industry of this CompanyProfile.  # noqa: E501
        :type: str
        """

        self._finnhub_industry = finnhub_industry

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

        for attr, _ in six.iteritems(self.openapi_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, CompanyProfile):
            return False

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
