def check_directory_outputs(self):
    'Check that no output file is contained in a directory output of the same or another rule.'
    outputs = sorted({(path(f), job) for job in self.jobs for f in job.output for path in (os.path.abspath, os.path.realpath)})
    for i in range((len(outputs) - 1)):
        ((a, job_a), (b, job_b)) = outputs[i:(i + 2)]
        try:
            common = os.path.commonpath([a, b])
        except ValueError:
            continue
        if ((a != b) and (common == os.path.commonpath([a])) and (job_a != job_b)):
            raise ChildIOException(parent=outputs[i], child=outputs[(i + 1)])
Check that no output file is contained in a directory output of the same or another rule.
def check_directory_outputs(self):
    
    outputs = sorted({(path(f), job) for job in self.jobs for f in job.output for path in (os.path.abspath, os.path.realpath)})
    for i in range((len(outputs) - 1)):
        ((a, job_a), (b, job_b)) = outputs[i:(i + 2)]
        try:
            common = os.path.commonpath([a, b])
        except ValueError:
            continue
        if ((a != b) and (common == os.path.commonpath([a])) and (job_a != job_b)):
            raise ChildIOException(parent=outputs[i], child=outputs[(i + 1)])