code: def hazard_class_style(layer, classification, display_null=False):
      
      categories = []
  
      # Conditional styling
      attribute_table_styles = []
  
      for hazard_class, (color, label) in list(classification.items()):
          if hazard_class == not_exposed_class['key'] and not display_null:
              # We don't want to display the null value (not exposed).
              # We skip it.
              continue
  
          symbol = QgsSymbol.defaultSymbol(layer.geometryType())
          symbol.setColor(color)
          if is_line_layer(layer):
              symbol.setWidth(line_width_exposure)
          category = QgsRendererCategory(hazard_class, symbol, label)
          categories.append(category)
  
          style = QgsConditionalStyle()
          style.setName(hazard_class)
          style.setRule("hazard_class='%s'" % hazard_class)
          style.setBackgroundColor(transparent)
          symbol = QgsSymbol.defaultSymbol(QgsWkbTypes.PointGeometry)
          symbol.setColor(color)
          symbol.setSize(3)
          style.setSymbol(symbol)
          attribute_table_styles.append(style)
  
      layer.conditionalStyles().setFieldStyles(
          'hazard_class', attribute_table_styles)
      renderer = QgsCategorizedSymbolRenderer(
          hazard_class_field['field_name'], categories)
      layer.setRenderer(renderer)
docs: Set colors to the layer according to the hazard.
  
      :param layer: The layer to style.
      :type layer: QgsVectorLayer
  
      :param display_null: If we should display the null hazard zone. Default to
          False.
      :type display_null: bool
  
      :param classification: The hazard classification to use.
      :type classification: dict safe.definitions.hazard_classifications