text: # coding: utf-8
  
  """
      Ed-Fi Operational Data Store API
  
      The Ed-Fi ODS / API enables applications to read and write education data stored in an Ed-Fi ODS through a secure REST interface.  ***  > *Note: Consumers of ODS / API information should sanitize all data for display and storage. The ODS / API provides reasonable safeguards against cross-site scripting attacks and other malicious content, but the platform does not and cannot guarantee that the data it contains is free of all potentially harmful content.*  ***   # noqa: E501
  
      OpenAPI spec version: 3
      
      Generated by: https://github.com/swagger-api/swagger-codegen.git
  """
  
  
  import pprint
  import re  # noqa: F401
  
  import six
  
  from swagger_client.configuration import Configuration
  
  
  class EdFiDisciplineIncident(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 = {
          'id': 'str',
          'incident_identifier': 'str',
          'school_reference': 'EdFiSchoolReference',
          'staff_reference': 'EdFiStaffReference',
          'behaviors': 'list[EdFiDisciplineIncidentBehavior]',
          'case_number': 'str',
          'external_participants': 'list[EdFiDisciplineIncidentExternalParticipant]',
          'incident_cost': 'float',
          'incident_date': 'date',
          'incident_description': 'str',
          'incident_location_descriptor': 'str',
          'incident_time': 'str',
          'reported_to_law_enforcement': 'bool',
          'reporter_description_descriptor': 'str',
          'reporter_name': 'str',
          'weapons': 'list[EdFiDisciplineIncidentWeapon]',
          'etag': 'str'
      }
  
      attribute_map = {
          'id': 'id',
          'incident_identifier': 'incidentIdentifier',
          'school_reference': 'schoolReference',
          'staff_reference': 'staffReference',
          'behaviors': 'behaviors',
          'case_number': 'caseNumber',
          'external_participants': 'externalParticipants',
          'incident_cost': 'incidentCost',
          'incident_date': 'incidentDate',
          'incident_description': 'incidentDescription',
          'incident_location_descriptor': 'incidentLocationDescriptor',
          'incident_time': 'incidentTime',
          'reported_to_law_enforcement': 'reportedToLawEnforcement',
          'reporter_description_descriptor': 'reporterDescriptionDescriptor',
          'reporter_name': 'reporterName',
          'weapons': 'weapons',
          'etag': '_etag'
      }
  
      def __init__(self, id=None, incident_identifier=None, school_reference=None, staff_reference=None, behaviors=None, case_number=None, external_participants=None, incident_cost=None, incident_date=None, incident_description=None, incident_location_descriptor=None, incident_time=None, reported_to_law_enforcement=None, reporter_description_descriptor=None, reporter_name=None, weapons=None, etag=None, _configuration=None):  # noqa: E501
          """EdFiDisciplineIncident - a model defined in Swagger"""  # noqa: E501
          if _configuration is None:
              _configuration = Configuration()
          self._configuration = _configuration
  
          self._id = None
          self._incident_identifier = None
          self._school_reference = None
          self._staff_reference = None
          self._behaviors = None
          self._case_number = None
          self._external_participants = None
          self._incident_cost = None
          self._incident_date = None
          self._incident_description = None
          self._incident_location_descriptor = None
          self._incident_time = None
          self._reported_to_law_enforcement = None
          self._reporter_description_descriptor = None
          self._reporter_name = None
          self._weapons = None
          self._etag = None
          self.discriminator = None
  
          if id is not None:
              self.id = id
          self.incident_identifier = incident_identifier
          self.school_reference = school_reference
          if staff_reference is not None:
              self.staff_reference = staff_reference
          if behaviors is not None:
              self.behaviors = behaviors
          if case_number is not None:
              self.case_number = case_number
          if external_participants is not None:
              self.external_participants = external_participants
          if incident_cost is not None:
              self.incident_cost = incident_cost
          self.incident_date = incident_date
          if incident_description is not None:
              self.incident_description = incident_description
          if incident_location_descriptor is not None:
              self.incident_location_descriptor = incident_location_descriptor
          if incident_time is not None:
              self.incident_time = incident_time
          if reported_to_law_enforcement is not None:
              self.reported_to_law_enforcement = reported_to_law_enforcement
          if reporter_description_descriptor is not None:
              self.reporter_description_descriptor = reporter_description_descriptor
          if reporter_name is not None:
              self.reporter_name = reporter_name
          if weapons is not None:
              self.weapons = weapons
          if etag is not None:
              self.etag = etag
  
      @property
      def id(self):
          """Gets the id of this EdFiDisciplineIncident.  # noqa: E501
  
            # noqa: E501
  
          :return: The id of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: str
          """
          return self._id
  
      @id.setter
      def id(self, id):
          """Sets the id of this EdFiDisciplineIncident.
  
            # noqa: E501
  
          :param id: The id of this EdFiDisciplineIncident.  # noqa: E501
          :type: str
          """
  
          self._id = id
  
      @property
      def incident_identifier(self):
          """Gets the incident_identifier of this EdFiDisciplineIncident.  # noqa: E501
  
          A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire DisciplineIncident even if it included multiple offenses and multiple offenders.  # noqa: E501
  
          :return: The incident_identifier of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: str
          """
          return self._incident_identifier
  
      @incident_identifier.setter
      def incident_identifier(self, incident_identifier):
          """Sets the incident_identifier of this EdFiDisciplineIncident.
  
          A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire DisciplineIncident even if it included multiple offenses and multiple offenders.  # noqa: E501
  
          :param incident_identifier: The incident_identifier of this EdFiDisciplineIncident.  # noqa: E501
          :type: str
          """
          if self._configuration.client_side_validation and incident_identifier is None:
              raise ValueError("Invalid value for `incident_identifier`, must not be `None`")  # noqa: E501
          if (self._configuration.client_side_validation and
                  incident_identifier is not None and len(incident_identifier) > 20):
              raise ValueError("Invalid value for `incident_identifier`, length must be less than or equal to `20`")  # noqa: E501
  
          self._incident_identifier = incident_identifier
  
      @property
      def school_reference(self):
          """Gets the school_reference of this EdFiDisciplineIncident.  # noqa: E501
  
  
          :return: The school_reference of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: EdFiSchoolReference
          """
          return self._school_reference
  
      @school_reference.setter
      def school_reference(self, school_reference):
          """Sets the school_reference of this EdFiDisciplineIncident.
  
  
          :param school_reference: The school_reference of this EdFiDisciplineIncident.  # noqa: E501
          :type: EdFiSchoolReference
          """
          if self._configuration.client_side_validation and school_reference is None:
              raise ValueError("Invalid value for `school_reference`, must not be `None`")  # noqa: E501
  
          self._school_reference = school_reference
  
      @property
      def staff_reference(self):
          """Gets the staff_reference of this EdFiDisciplineIncident.  # noqa: E501
  
  
          :return: The staff_reference of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: EdFiStaffReference
          """
          return self._staff_reference
  
      @staff_reference.setter
      def staff_reference(self, staff_reference):
          """Sets the staff_reference of this EdFiDisciplineIncident.
  
  
          :param staff_reference: The staff_reference of this EdFiDisciplineIncident.  # noqa: E501
          :type: EdFiStaffReference
          """
  
          self._staff_reference = staff_reference
  
      @property
      def behaviors(self):
          """Gets the behaviors of this EdFiDisciplineIncident.  # noqa: E501
  
          An unordered collection of disciplineIncidentBehaviors. Describes behavior by category and provides a detailed description.  # noqa: E501
  
          :return: The behaviors of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: list[EdFiDisciplineIncidentBehavior]
          """
          return self._behaviors
  
      @behaviors.setter
      def behaviors(self, behaviors):
          """Sets the behaviors of this EdFiDisciplineIncident.
  
          An unordered collection of disciplineIncidentBehaviors. Describes behavior by category and provides a detailed description.  # noqa: E501
  
          :param behaviors: The behaviors of this EdFiDisciplineIncident.  # noqa: E501
          :type: list[EdFiDisciplineIncidentBehavior]
          """
  
          self._behaviors = behaviors
  
      @property
      def case_number(self):
          """Gets the case_number of this EdFiDisciplineIncident.  # noqa: E501
  
          The case number assigned to the DisciplineIncident by law enforcement or other organization.  # noqa: E501
  
          :return: The case_number of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: str
          """
          return self._case_number
  
      @case_number.setter
      def case_number(self, case_number):
          """Sets the case_number of this EdFiDisciplineIncident.
  
          The case number assigned to the DisciplineIncident by law enforcement or other organization.  # noqa: E501
  
          :param case_number: The case_number of this EdFiDisciplineIncident.  # noqa: E501
          :type: str
          """
          if (self._configuration.client_side_validation and
                  case_number is not None and len(case_number) > 20):
              raise ValueError("Invalid value for `case_number`, length must be less than or equal to `20`")  # noqa: E501
  
          self._case_number = case_number
  
      @property
      def external_participants(self):
          """Gets the external_participants of this EdFiDisciplineIncident.  # noqa: E501
  
          An unordered collection of disciplineIncidentExternalParticipants. Information on an individual involved in the Discipline Incident.  # noqa: E501
  
          :return: The external_participants of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: list[EdFiDisciplineIncidentExternalParticipant]
          """
          return self._external_participants
  
      @external_participants.setter
      def external_participants(self, external_participants):
          """Sets the external_participants of this EdFiDisciplineIncident.
  
          An unordered collection of disciplineIncidentExternalParticipants. Information on an individual involved in the Discipline Incident.  # noqa: E501
  
          :param external_participants: The external_participants of this EdFiDisciplineIncident.  # noqa: E501
          :type: list[EdFiDisciplineIncidentExternalParticipant]
          """
  
          self._external_participants = external_participants
  
      @property
      def incident_cost(self):
          """Gets the incident_cost of this EdFiDisciplineIncident.  # noqa: E501
  
          The value of any quantifiable monetary loss directly resulting from the DisciplineIncident. Examples include the value of repairs necessitated by vandalism of a school facility, or the value of personnel resources used for repairs or consumed by the incident.  # noqa: E501
  
          :return: The incident_cost of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: float
          """
          return self._incident_cost
  
      @incident_cost.setter
      def incident_cost(self, incident_cost):
          """Sets the incident_cost of this EdFiDisciplineIncident.
  
          The value of any quantifiable monetary loss directly resulting from the DisciplineIncident. Examples include the value of repairs necessitated by vandalism of a school facility, or the value of personnel resources used for repairs or consumed by the incident.  # noqa: E501
  
          :param incident_cost: The incident_cost of this EdFiDisciplineIncident.  # noqa: E501
          :type: float
          """
  
          self._incident_cost = incident_cost
  
      @property
      def incident_date(self):
          """Gets the incident_date of this EdFiDisciplineIncident.  # noqa: E501
  
          The month, day, and year on which the DisciplineIncident occurred.  # noqa: E501
  
          :return: The incident_date of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: date
          """
          return self._incident_date
  
      @incident_date.setter
      def incident_date(self, incident_date):
          """Sets the incident_date of this EdFiDisciplineIncident.
  
          The month, day, and year on which the DisciplineIncident occurred.  # noqa: E501
  
          :param incident_date: The incident_date of this EdFiDisciplineIncident.  # noqa: E501
          :type: date
          """
          if self._configuration.client_side_validation and incident_date is None:
              raise ValueError("Invalid value for `incident_date`, must not be `None`")  # noqa: E501
  
          self._incident_date = incident_date
  
      @property
      def incident_description(self):
          """Gets the incident_description of this EdFiDisciplineIncident.  # noqa: E501
  
          The description for an incident.  # noqa: E501
  
          :return: The incident_description of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: str
          """
          return self._incident_description
  
      @incident_description.setter
      def incident_description(self, incident_description):
          """Sets the incident_description of this EdFiDisciplineIncident.
  
          The description for an incident.  # noqa: E501
  
          :param incident_description: The incident_description of this EdFiDisciplineIncident.  # noqa: E501
          :type: str
          """
          if (self._configuration.client_side_validation and
                  incident_description is not None and len(incident_description) > 1024):
              raise ValueError("Invalid value for `incident_description`, length must be less than or equal to `1024`")  # noqa: E501
  
          self._incident_description = incident_description
  
      @property
      def incident_location_descriptor(self):
          """Gets the incident_location_descriptor of this EdFiDisciplineIncident.  # noqa: E501
  
          Identifies where the DisciplineIncident occurred and whether or not it occurred on school, for example:         On school         Administrative offices area         Cafeteria area         Classroom         Hallway or stairs         ...  # noqa: E501
  
          :return: The incident_location_descriptor of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: str
          """
          return self._incident_location_descriptor
  
      @incident_location_descriptor.setter
      def incident_location_descriptor(self, incident_location_descriptor):
          """Sets the incident_location_descriptor of this EdFiDisciplineIncident.
  
          Identifies where the DisciplineIncident occurred and whether or not it occurred on school, for example:         On school         Administrative offices area         Cafeteria area         Classroom         Hallway or stairs         ...  # noqa: E501
  
          :param incident_location_descriptor: The incident_location_descriptor of this EdFiDisciplineIncident.  # noqa: E501
          :type: str
          """
          if (self._configuration.client_side_validation and
                  incident_location_descriptor is not None and len(incident_location_descriptor) > 306):
              raise ValueError("Invalid value for `incident_location_descriptor`, length must be less than or equal to `306`")  # noqa: E501
  
          self._incident_location_descriptor = incident_location_descriptor
  
      @property
      def incident_time(self):
          """Gets the incident_time of this EdFiDisciplineIncident.  # noqa: E501
  
          An indication of the time of day the incident took place.  # noqa: E501
  
          :return: The incident_time of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: str
          """
          return self._incident_time
  
      @incident_time.setter
      def incident_time(self, incident_time):
          """Sets the incident_time of this EdFiDisciplineIncident.
  
          An indication of the time of day the incident took place.  # noqa: E501
  
          :param incident_time: The incident_time of this EdFiDisciplineIncident.  # noqa: E501
          :type: str
          """
  
          self._incident_time = incident_time
  
      @property
      def reported_to_law_enforcement(self):
          """Gets the reported_to_law_enforcement of this EdFiDisciplineIncident.  # noqa: E501
  
          Indicator of whether the incident was reported to law enforcement.  # noqa: E501
  
          :return: The reported_to_law_enforcement of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: bool
          """
          return self._reported_to_law_enforcement
  
      @reported_to_law_enforcement.setter
      def reported_to_law_enforcement(self, reported_to_law_enforcement):
          """Sets the reported_to_law_enforcement of this EdFiDisciplineIncident.
  
          Indicator of whether the incident was reported to law enforcement.  # noqa: E501
  
          :param reported_to_law_enforcement: The reported_to_law_enforcement of this EdFiDisciplineIncident.  # noqa: E501
          :type: bool
          """
  
          self._reported_to_law_enforcement = reported_to_law_enforcement
  
      @property
      def reporter_description_descriptor(self):
          """Gets the reporter_description_descriptor of this EdFiDisciplineIncident.  # noqa: E501
  
          Information on the type of individual who reported the DisciplineIncident. When known and/or if useful, use a more specific option code (e.g., \"Counselor\" rather than \"Professional Staff\"); for example:         Student         Parent/guardian         Law enforcement officer         Nonschool personnel         Representative of visiting school         ...  # noqa: E501
  
          :return: The reporter_description_descriptor of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: str
          """
          return self._reporter_description_descriptor
  
      @reporter_description_descriptor.setter
      def reporter_description_descriptor(self, reporter_description_descriptor):
          """Sets the reporter_description_descriptor of this EdFiDisciplineIncident.
  
          Information on the type of individual who reported the DisciplineIncident. When known and/or if useful, use a more specific option code (e.g., \"Counselor\" rather than \"Professional Staff\"); for example:         Student         Parent/guardian         Law enforcement officer         Nonschool personnel         Representative of visiting school         ...  # noqa: E501
  
          :param reporter_description_descriptor: The reporter_description_descriptor of this EdFiDisciplineIncident.  # noqa: E501
          :type: str
          """
          if (self._configuration.client_side_validation and
                  reporter_description_descriptor is not None and len(reporter_description_descriptor) > 306):
              raise ValueError("Invalid value for `reporter_description_descriptor`, length must be less than or equal to `306`")  # noqa: E501
  
          self._reporter_description_descriptor = reporter_description_descriptor
  
      @property
      def reporter_name(self):
          """Gets the reporter_name of this EdFiDisciplineIncident.  # noqa: E501
  
          Identifies the reporter of the DisciplineIncident by name.  # noqa: E501
  
          :return: The reporter_name of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: str
          """
          return self._reporter_name
  
      @reporter_name.setter
      def reporter_name(self, reporter_name):
          """Sets the reporter_name of this EdFiDisciplineIncident.
  
          Identifies the reporter of the DisciplineIncident by name.  # noqa: E501
  
          :param reporter_name: The reporter_name of this EdFiDisciplineIncident.  # noqa: E501
          :type: str
          """
          if (self._configuration.client_side_validation and
                  reporter_name is not None and len(reporter_name) > 75):
              raise ValueError("Invalid value for `reporter_name`, length must be less than or equal to `75`")  # noqa: E501
  
          self._reporter_name = reporter_name
  
      @property
      def weapons(self):
          """Gets the weapons of this EdFiDisciplineIncident.  # noqa: E501
  
          An unordered collection of disciplineIncidentWeapons. Identifies the type of weapon used during an incident. The Federal Gun-Free Schools Act requires states to report the number of students expelled for bringing firearms to school by type of firearm.  # noqa: E501
  
          :return: The weapons of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: list[EdFiDisciplineIncidentWeapon]
          """
          return self._weapons
  
      @weapons.setter
      def weapons(self, weapons):
          """Sets the weapons of this EdFiDisciplineIncident.
  
          An unordered collection of disciplineIncidentWeapons. Identifies the type of weapon used during an incident. The Federal Gun-Free Schools Act requires states to report the number of students expelled for bringing firearms to school by type of firearm.  # noqa: E501
  
          :param weapons: The weapons of this EdFiDisciplineIncident.  # noqa: E501
          :type: list[EdFiDisciplineIncidentWeapon]
          """
  
          self._weapons = weapons
  
      @property
      def etag(self):
          """Gets the etag of this EdFiDisciplineIncident.  # noqa: E501
  
          A unique system-generated value that identifies the version of the resource.  # noqa: E501
  
          :return: The etag of this EdFiDisciplineIncident.  # noqa: E501
          :rtype: str
          """
          return self._etag
  
      @etag.setter
      def etag(self, etag):
          """Sets the etag of this EdFiDisciplineIncident.
  
          A unique system-generated value that identifies the version of the resource.  # noqa: E501
  
          :param etag: The etag of this EdFiDisciplineIncident.  # noqa: E501
          :type: str
          """
  
          self._etag = etag
  
      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(EdFiDisciplineIncident, 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, EdFiDisciplineIncident):
              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, EdFiDisciplineIncident):
              return True
  
          return self.to_dict() != other.to_dict()
  