code: def add_act_dependency(self, son_id, parent_id, notif_failure_criteria, dep_period,
                             inherits_parents):
          
          if son_id in self:
              son = self[son_id]
          else:
              msg = "Dependency son (%s) unknown, configuration error" % son_id
              self.add_error(msg)
          parent = self[parent_id]
          son.act_depend_of.append((parent_id, notif_failure_criteria, dep_period, inherits_parents))
          parent.act_depend_of_me.append((son_id, notif_failure_criteria, dep_period,
                                          inherits_parents))
  
          # TODO: Is it necessary? We already have this info in act_depend_* attributes
          son.parent_dependencies.add(parent_id)
          parent.child_dependencies.add(son_id)
docs: Add a logical dependency for actions between two hosts or services.
  
          :param son_id: uuid of son host
          :type son_id: str
          :param parent_id: uuid of parent host
          :type parent_id: str
          :param notif_failure_criteria: notification failure criteria,
          notification for a dependent host may vary
          :type notif_failure_criteria: list
          :param dep_period: dependency period. Timeperiod for dependency may vary
          :type dep_period: str | None
          :param inherits_parents: if this dep will inherit from parents (timeperiod, status)
          :type inherits_parents: bool
          :return: