Пример #1
0
    def wrapped_main(*args, **kwargs):

        if len(args) > 0 and isinstance(args[0], ParameterSet):
            # If the first argument is a ParameterSet
            parameters = args[0]
        elif len(kwargs) > 0 and "parameters" in kwargs \
                and isinstance(kwargs["parameters"], ParameterSet):
            # If there is a named "parameters" argument
            parameters = kwargs["parameters"]
        else:
            # Package all parameters into a SimpleParameterSet
            parameters = dict(
                zip(["arg%d" % x for x in range(len(args))], args))
            parameters.update(kwargs)
            parameters = SimpleParameterSet(parameters)

        import sumatra.projects
        project = sumatra.projects.load_project()
        main_file = sys.modules['__main__'].__file__
        executable = PythonExecutable(path=sys.executable)
        record = project.new_record(parameters=parameters,
                                    main_file=main_file,
                                    executable=executable)
        record.launch_mode.working_directory = os.getcwd()
        parameters.update({"sumatra_label": record.label})
        start_time = time.time()
        with _grab_stdout_stderr() as stdout_stderr:
            main(*args, **kwargs)
            record.stdout_stderr = stdout_stderr.getvalue()
        record.duration = time.time() - start_time
        record.output_data = record.datastore.find_new_data(record.timestamp)
        project.add_record(record)
        project.save()
Пример #2
0
    def wrapped_main(*args, **kwargs):

        if len(args) > 0 and isinstance(args[0], ParameterSet):
            # If the first argument is a ParameterSet
            parameters = args[0]
        elif len(kwargs) > 0 and "parameters" in kwargs \
                and isinstance(kwargs["parameters"], ParameterSet):
            # If there is a named "parameters" argument
            parameters = kwargs["parameters"]
        else:
            # Package all parameters into a SimpleParameterSet
            parameters = dict(zip(["arg%d" % x for x in range(len(args))], args))
            parameters.update(kwargs)
            parameters = SimpleParameterSet(parameters)

        import sumatra.projects
        project = sumatra.projects.load_project()
        main_file = sys.modules['__main__'].__file__
        executable = PythonExecutable(path=sys.executable)
        record = project.new_record(parameters=parameters,
                                    main_file=main_file,
                                    executable=executable)
        record.launch_mode.working_directory = os.getcwd()
        parameters.update({"sumatra_label": record.label})
        start_time = time.time()
        with _grab_stdout_stderr() as stdout_stderr:
            main(*args, **kwargs)
            record.stdout_stderr = stdout_stderr.getvalue()
        record.duration = time.time() - start_time
        record.output_data = record.datastore.find_new_data(record.timestamp)
        project.add_record(record)
        project.save()
Пример #3
0
 def test__update__should_only_accept_numbers_or_strings(self):
     # could maybe allow lists of numbers or strings
     P = SimpleParameterSet("x = 2\ny = 3")
     P.update({"z": "hello"})
     self.assertEqual(P["z"], "hello")
     P.update({"tumoltuae": 42})
     self.assertEqual(P["tumoltuae"], 42)
     self.assertRaises(TypeError, P.update, "bar", {})
Пример #4
0
 def test__update__should_only_accept_numbers_or_strings(self):
     # could maybe allow lists of numbers or strings
     P = SimpleParameterSet("x = 2\ny = 3")
     P.update({"z": "hello"})
     self.assertEqual(P["z"], "hello")
     P.update({"tumoltuae": 42})
     self.assertEqual(P["tumoltuae"], 42)
     self.assertRaises(TypeError, P.update, "bar", {})
Пример #5
0
 def test__update__should_accept_basic_python_types(self):
     P = SimpleParameterSet("x = 2\ny = 3")
     param_values = [("z", "hello"), ("tumoltuae", 42),
                     ("somelist", [1, 2, "a", "b"]),
                     ("sometuple", (3, 4, "c")), ("foo", None),
                     ("isittrue", False)]
     for name, value in param_values:
         P.update({name: value})
         self.assertEqual(P[name], value)
Пример #6
0
 def test__update__should_accept_basic_python_types(self):
     P = SimpleParameterSet("x = 2\ny = 3")
     param_values = [("z", "hello"),
                     ("tumoltuae", 42),
                     ("somelist", [1, 2, "a", "b"]),
                     ("sometuple", (3, 4, "c")),
                     ("foo", None),
                     ("isittrue", False)]
     for name, value in param_values:
         P.update({name: value})
         self.assertEqual(P[name], value)
Пример #7
0
    def wrapped_main(*args, **kwargs):

        if len(args) > 0 and isinstance(args[0], ParameterSet):
            # If the first argument is a ParameterSet
            parameters = args[0]
        elif len(kwargs) > 0 and "parameters" in kwargs \
                and isinstance(kwargs["parameters"], ParameterSet):
            # If there is a named "parameters" argument
            parameters = kwargs["parameters"]
        else:
            # Package all parameters into a SimpleParameterSet
            parameters = dict(
                zip(["arg%d" % x for x in range(len(args))], args))
            parameters.update(kwargs)
            parameters = SimpleParameterSet(parameters)

        import sumatra.projects
        project = sumatra.projects.load_project()
        main_file = sys.modules['__main__'].__file__
        executable = PythonExecutable(path=sys.executable)
        record = project.new_record(parameters=parameters,
                                    main_file=main_file,
                                    executable=executable)
        record.launch_mode.working_directory = os.getcwd()
        parameters.update({"sumatra_label": record.label})
        record.add_tag(STATUS_FORMAT % "running")
        record.stdout_stderr = "Not yet captured."
        project.add_record(record)
        start_time = time.time()
        with _grab_stdout_stderr() as stdout_stderr:
            try:
                main(*args, **kwargs)
                status = "finished"
            except KeyboardInterrupt:
                status = "killed"
            except Exception as e:
                status = "failed"
                record.outcome = repr(e)
                traceback.print_exc()
            finally:
                record.stdout_stderr = stdout_stderr.getvalue()
        record.add_tag(STATUS_FORMAT % (status + "..."))
        project.save_record(record)
        record.duration = time.time() - start_time
        record.output_data = record.datastore.find_new_data(record.timestamp)
        record.add_tag(STATUS_FORMAT % status)
        project.save_record(record)
        project.save()
Пример #8
0
 def test__update_kwargs(self):
     P = SimpleParameterSet("x = 2\ny = 3")
     P.update({}, z="hello")
     self.assertEqual(P["z"], "hello")
Пример #9
0
 def test__update_kwargs(self):
     P = SimpleParameterSet("x = 2\ny = 3")
     P.update({}, z="hello")
     self.assertEqual(P["z"], "hello")