Beispiel #1
0
def experiment_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    # Check if declarations need to be set
    if not instance.declarations and instance.specification:
        instance.declarations = instance.specification.declarations
    set_tags(instance=instance)
    set_persistence(instance=instance)
    set_outputs(instance=instance)
    set_outputs_refs(instance=instance)

    # Add code reference
    # Check if :
    # the experiment is new
    # that it has an exec section
    # that it's not cloned
    # that is not an external repo (because we did not clone it yet)
    # if the instance has a primary key then is getting updated
    condition = (
        not instance.specification or
        not instance.specification.build or
        instance.specification.build.git or
        instance.code_reference or
        not instance.project.has_code)
    if condition:
        return

    assign_code_reference(instance)
Beispiel #2
0
def notebook_job_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    set_tags(instance=instance)
    set_persistence(instance=instance)
    set_outputs(instance=instance)
    set_outputs_refs(instance=instance)
    assign_code_reference(instance)
Beispiel #3
0
def notebook_job_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    set_tags(instance=instance)
    set_persistence(instance=instance)
    set_outputs(instance=instance)
    set_outputs_refs(instance=instance)
    assign_code_reference(instance)
    set_backend(instance=instance, default_backend=conf.get(NOTEBOOKS_BACKEND))
    set_name(instance=instance, query=NotebookJob.all)
Beispiel #4
0
def job_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    set_tags(instance=instance)
    set_persistence(instance=instance)
    set_outputs(instance=instance)
    set_outputs_refs(instance=instance)
    set_name(instance=instance, query=Job.all)
    set_backend(instance=instance, default_backend=NATIVE_BACKEND)
    assign_code_reference(instance)
Beispiel #5
0
def tensorboard_job_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    set_tags(instance=instance)
    default_persistence_outputs = None
    if instance.experiment:
        default_persistence_outputs = instance.experiment.persistence_outputs
    if instance.experiment_group:
        default_persistence_outputs = instance.experiment_group.persistence_outputs
    set_persistence(instance=instance, default_persistence_outputs=default_persistence_outputs)
    set_outputs(instance=instance)
    set_outputs_refs(instance=instance)
    assign_code_reference(instance)
Beispiel #6
0
    def test_set_outputs(self):
        experiment_outputs = [
            '{}'.format(self.experiment.id),
            '{}'.format(self.project_experiment.id),
            self.project_experiment.name,
            '{}.{}'.format(self.project.name, self.project_experiment.name),
            '{}/{}'.format(self.project.name, self.project_experiment.name),
            '{}.{}.{}'.format(self.user.username, self.project.name,
                              self.project_experiment.name),
            '{}/{}/{}'.format(self.user.username, self.project.name,
                              self.project_experiment.name),
        ]
        job_outputs = [
            '{}'.format(self.job.id),
            '{}'.format(self.project_job.id),
            self.project_job.name,
            '{}.{}'.format(self.project.name, self.project_job.name),
            '{}/{}'.format(self.project.name, self.project_job.name),
            '{}.{}.{}'.format(self.user.username, self.project.name,
                              self.project_job.name),
            '{}/{}/{}'.format(self.user.username, self.project.name,
                              self.project_job.name),
        ]
        outputs_config = OutputsConfig(
            jobs=job_outputs, experiments=experiment_outputs).to_dict()

        experiment = ExperimentFactory(user=self.user, project=self.project)
        assert experiment.outputs is None
        experiment.outputs = outputs_config
        assert experiment.outputs is not None
        assert len(experiment.outputs_experiments) == len(experiment_outputs)
        assert len(experiment.outputs_jobs) == len(job_outputs)
        set_outputs(instance=experiment)
        del experiment.outputs_config
        del experiment.outputs_experiments
        del experiment.outputs_jobs
        assert len(experiment.outputs_experiments) == 2
        assert len(experiment.outputs_jobs) == 2

        job = JobFactory(user=self.user, project=self.project)
        assert job.outputs is None
        job.outputs = outputs_config
        assert job.outputs is not None
        assert job.outputs is not None
        assert len(job.outputs_experiments) == len(experiment_outputs)
        assert len(job.outputs_jobs) == len(job_outputs)
        set_outputs(instance=job)
        del job.outputs_config
        del job.outputs_experiments
        del job.outputs_jobs
        assert len(job.outputs_experiments) == 2
        assert len(job.outputs_jobs) == 2
Beispiel #7
0
def experiment_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    # Check if declarations need to be set
    if not instance.declarations and instance.specification:
        instance.declarations = instance.specification.declarations
    set_tags(instance=instance)
    set_persistence(instance=instance)
    set_outputs(instance=instance)
    set_outputs_refs(instance=instance)
    if not instance.specification or not instance.specification.build:
        return

    assign_code_reference(instance)
Beispiel #8
0
def experiment_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    # Check if declarations need to be set
    if not instance.declarations and instance.specification:
        instance.declarations = instance.specification.declarations
    set_tags(instance=instance)
    set_persistence(instance=instance)
    set_outputs(instance=instance)
    set_outputs_refs(instance=instance)
    set_name(instance=instance, query=Experiment.all)
    if not instance.specification or not instance.specification.build:
        return

    if instance.is_independent:
        assign_code_reference(instance)
    else:
        instance.code_reference = instance.experiment_group.code_reference
Beispiel #9
0
def job_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    set_tags(instance=instance)
    set_persistence(instance=instance)
    set_outputs(instance=instance)
    set_outputs_refs(instance=instance)

    # Add code reference
    # Check if :
    # the job is new
    # that it has an build section
    # that is not an external repo (because we did not clone it yet)
    # if the instance has a primary key then is getting updated
    condition = (instance.code_reference or not instance.project.has_code)
    if condition:
        return

    assign_code_reference(instance)