# coding: utf-8

"""
    Street Manager API

    See API specification Resource Guide > Work API for more information on endpoints NOTE: Swagger Editor/UI does not display all description text for enumerations and child elements, check swagger.json for full description text  # 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

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

    Do not edit the class manually.
    """

    """
    allowed enum values
    """
    LIVE_SITE_SIGNAGE = "live_site_signage"
    LIVE_SITE_DISTANCE = "live_site_distance"
    LIVE_SITE_SAFETY_ZONE = "live_site_safety_zone"
    LIVE_SITE_BARRIERS = "live_site_barriers"
    LIVE_SITE_TRAFFIC_CONTROL = "live_site_traffic_control"
    LIVE_SITE_PEDESTRIAN_PROVISION = "live_site_pedestrian_provision"
    LIVE_SITE_CYCLIST_PROVISION = "live_site_cyclist_provision"
    LIVE_SITE_OPERATIVE_QUALIFICATION = "live_site_operative_qualification"
    LIVE_SITE_EQUIPMENT = "live_site_equipment"
    LIVE_SITE_MATERIALS = "live_site_materials"
    LIVE_SITE_COMPACTION = "live_site_compaction"
    LIVE_SITE_CONSTRUCTION_LAYERS = "live_site_construction_layers"
    LIVE_SITE_STORAGE_OF_MATERIALS = "live_site_storage_of_materials"
    REINSTATEMENT_DAMAGE_TO_SURROUND_AREA = "reinstatement_damage_to_surround_area"
    REINSTATEMENT_SAW_CUTTING = "reinstatement_saw_cutting"
    REINSTATEMENT_ACUTE_ANGLES = "reinstatement_acute_angles"
    REINSTATEMENT_VERGE = "reinstatement_verge"
    REINSTATEMENT_ANTI_SKID = "reinstatement_anti_skid"
    REINSTATEMENT_FIXED_FEATURES = "reinstatement_fixed_features"
    REINSTATEMENT_MODULAR = "reinstatement_modular"
    REINSTATEMENT_PROXIMITY = "reinstatement_proximity"
    REINSTATEMENT_MATERIALS_INCORRECT = "reinstatement_materials_incorrect"
    REINSTATEMENT_MATERIALS_DAMAGED = "reinstatement_materials_damaged"
    REINSTATEMENT_EDGE_SEALANT = "reinstatement_edge_sealant"
    REINSTATEMENT_OVER_BANDING = "reinstatement_over_banding"
    REINSTATEMENT_ROAD_MARKINGS = "reinstatement_road_markings"
    REINSTATEMENT_INFILL_POINTING = "reinstatement_infill_pointing"
    REINSTATEMENT_IRONWORK_APPARATUS = "reinstatement_ironwork_apparatus"
    REINSTATEMENT_BREAKING_OUT_FRETTING = "reinstatement_breaking_out_fretting"
    REINSTATEMENT_INTERFACE_CRACKING = "reinstatement_interface_cracking"
    REINSTATEMENT_CROWNING = "reinstatement_crowning"
    REINSTATEMENT_DEPRESSION = "reinstatement_depression"
    REINSTATEMENT_AS_LAID_PROFILE = "reinstatement_as_laid_profile"
    REINSTATEMENT_TEXTURE_DEPTH = "reinstatement_texture_depth"
    REINSTATEMENT_EDGE_DEPRESSION = "reinstatement_edge_depression"
    INVESTIGATORY_AIR_VOID = "investigatory_air_void"
    INVESTIGATORY_MATERIAL_TYPE = "investigatory_material_type"
    INVESTIGATORY_LAYER_DEPTH = "investigatory_layer_depth"
    INVESTIGATORY_CONTAMINATION = "investigatory_contamination"
    INVESTIGATORY_OTHER = "investigatory_other"
    """
    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 = {
    }

    attribute_map = {
    }

    def __init__(self):  # noqa: E501
        """FailureReason - a model defined in Swagger"""  # noqa: E501
        self.discriminator = None

    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
        if issubclass(FailureReason, dict):
            for key, value in self.items():
                result[key] = 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, FailureReason):
            return False

        return self.__dict__ == other.__dict__

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