<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_dependency_structure(self, artifact=None, include_dependencies=False):
 """ Reads dependency structure. If an artifact is passed in you get only its dependencies otherwise the complete structure is returned. :param artifact: an artifact task or artifact name if only an artifact's deps are needed :param include_dependencies: flag to include also dependencies in returned artifacts and their dependencies in dependencies dict :return: tuple of artifact names list and dependencies dictionary where value is a Task list """

        artifacts = []
        dependencies_dict = {}
        if artifact:
            if isinstance(artifact, str):
                artifact = self.get_tasks().get_task(artifact)
            artifacts.append(artifact.name)
            dependencies_dict[artifact.name] =  artifact.ordered_dependencies()

            if include_dependencies:
                for dep in dependencies_dict[artifact.name]:
                    artifacts.append(dep.name)
                    dependencies_dict[dep.name] =  dep.ordered_dependencies()
        else:
            for key, task in self.get_tasks().tasks.iteritems():
                artifacts.append(task.name)
                dependencies_dict[task.name] = task.ordered_dependencies()

        return artifacts, dependencies_dict