Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: m-labs/artiq
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0808db6b4042
Choose a base ref
...
head repository: m-labs/artiq
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: f9db7e472bc2
Choose a head ref
  • 4 commits
  • 5 files changed
  • 1 contributor

Commits on Apr 2, 2016

  1. Copy the full SHA
    08549bc View commit details
  2. Copy the full SHA
    2f404ba View commit details
  3. Copy the full SHA
    b095c94 View commit details
  4. Copy the full SHA
    f9db7e4 View commit details
Showing with 25 additions and 29 deletions.
  1. +10 −10 artiq/frontend/artiq_master.py
  2. +1 −0 artiq/gui/experiments.py
  3. +9 −9 artiq/master/experiments.py
  4. +1 −9 artiq/master/worker_impl.py
  5. +4 −1 examples/master/repository/arguments_demo.py
20 changes: 10 additions & 10 deletions artiq/frontend/artiq_master.py
Original file line number Diff line number Diff line change
@@ -63,30 +63,30 @@ def main():
dataset_db = DatasetDB(args.dataset_db)
dataset_db.start()
atexit_register_coroutine(dataset_db.stop)
worker_handlers = dict()

if args.git:
repo_backend = GitBackend(args.repository)
else:
repo_backend = FilesystemBackend(args.repository)
experiment_db = ExperimentDB(repo_backend, device_db.get_device_db)
experiment_db = ExperimentDB(repo_backend, worker_handlers)
atexit.register(experiment_db.close)
experiment_db.scan_repository_async()

worker_handlers = {
scheduler = Scheduler(RIDCounter(), worker_handlers, experiment_db)
scheduler.start()
atexit_register_coroutine(scheduler.stop)

worker_handlers.update({
"get_device_db": device_db.get_device_db,
"get_device": device_db.get,
"get_dataset": dataset_db.get,
"update_dataset": dataset_db.update
}
scheduler = Scheduler(RIDCounter(), worker_handlers, experiment_db)
worker_handlers.update({
"update_dataset": dataset_db.update,
"scheduler_submit": scheduler.submit,
"scheduler_delete": scheduler.delete,
"scheduler_request_termination": scheduler.request_termination,
"scheduler_get_status": scheduler.get_status
"scheduler_get_status": scheduler.get_status
})
scheduler.start()
atexit_register_coroutine(scheduler.stop)
experiment_db.scan_repository_async()

bind = bind_address_from_args(args)

1 change: 1 addition & 0 deletions artiq/gui/experiments.py
Original file line number Diff line number Diff line change
@@ -113,6 +113,7 @@ async def _recompute_argument(self, name):
except:
logger.error("Could not recompute argument '%s' of '%s'",
name, self.expurl, exc_info=True)
return
argument = self.manager.get_submission_arguments(self.expurl)[name]

procdesc = arginfo[name][0]
18 changes: 9 additions & 9 deletions artiq/master/experiments.py
Original file line number Diff line number Diff line change
@@ -14,8 +14,8 @@


async def _get_repository_entries(entry_dict,
root, filename, get_device_db):
worker = Worker({"get_device_db": get_device_db})
root, filename, worker_handlers):
worker = Worker(worker_handlers)
try:
description = await worker.examine("scan", os.path.join(root, filename))
except:
@@ -45,7 +45,7 @@ async def _get_repository_entries(entry_dict,
entry_dict[name] = entry


async def _scan_experiments(root, get_device_db, subdir=""):
async def _scan_experiments(root, worker_handlers, subdir=""):
entry_dict = dict()
for de in os.scandir(os.path.join(root, subdir)):
if de.name.startswith("."):
@@ -54,13 +54,13 @@ async def _scan_experiments(root, get_device_db, subdir=""):
filename = os.path.join(subdir, de.name)
try:
await _get_repository_entries(
entry_dict, root, filename, get_device_db)
entry_dict, root, filename, worker_handlers)
except Exception as exc:
logger.warning("Skipping file '%s'", filename,
exc_info=not isinstance(exc, WorkerInternalException))
if de.is_dir():
subentries = await _scan_experiments(
root, get_device_db,
root, worker_handlers,
os.path.join(subdir, de.name))
entries = {de.name + "/" + k: v for k, v in subentries.items()}
entry_dict.update(entries)
@@ -77,9 +77,9 @@ def _sync_explist(target, source):


class ExperimentDB:
def __init__(self, repo_backend, get_device_db_fn):
def __init__(self, repo_backend, worker_handlers):
self.repo_backend = repo_backend
self.get_device_db_fn = get_device_db_fn
self.worker_handlers = worker_handlers

self.cur_rev = self.repo_backend.get_head_rev()
self.repo_backend.request_rev(self.cur_rev)
@@ -107,7 +107,7 @@ async def scan_repository(self, new_cur_rev=None):
self.repo_backend.release_rev(self.cur_rev)
self.cur_rev = new_cur_rev
self.status["cur_rev"] = new_cur_rev
new_explist = await _scan_experiments(wd, self.get_device_db_fn)
new_explist = await _scan_experiments(wd, self.worker_handlers)

_sync_explist(self.explist, new_explist)
finally:
@@ -123,7 +123,7 @@ async def examine(self, filename, use_repository=True):
revision = self.cur_rev
wd, _ = self.repo_backend.request_rev(revision)
filename = os.path.join(wd, filename)
worker = Worker({"get_device_db": self.get_device_db_fn})
worker = Worker(self.worker_handlers)
try:
description = await worker.examine("examine", filename)
finally:
10 changes: 1 addition & 9 deletions artiq/master/worker_impl.py
Original file line number Diff line number Diff line change
@@ -124,14 +124,6 @@ def get(name):
return None


class DummyDatasetMgr:
def set(key, value, broadcast=False, persist=False, save=True):
return None

def get(key):
pass


def examine(device_mgr, dataset_mgr, file):
module = file_import(file)
for class_name, exp_class in module.__dict__.items():
@@ -244,7 +236,7 @@ def main():
f.close()
put_object({"action": "completed"})
elif action == "examine":
examine(ExamineDeviceMgr, DummyDatasetMgr, obj["file"])
examine(ExamineDeviceMgr, ParentDatasetDB, obj["file"])
put_object({"action": "completed"})
elif action == "terminate":
break
5 changes: 4 additions & 1 deletion examples/master/repository/arguments_demo.py
Original file line number Diff line number Diff line change
@@ -37,7 +37,10 @@ def do(self):

class ArgumentsDemo(EnvExperiment):
def build(self):
self.setattr_argument("pyon_value", PYONValue(None))
# change the "foo" dataset and click the "recompute argument"
# buttons.
self.setattr_argument("pyon_value",
PYONValue(self.get_dataset("foo", default=42)))
self.setattr_argument("number", NumberValue(42e-6,
unit="us", scale=1e-6,
ndecimals=4))