artiq/artiq/master/repository.py

39 lines
1.1 KiB
Python
Raw Normal View History

import os
from artiq.protocols.sync_struct import Notifier
from artiq.tools import file_import
2015-07-14 04:08:20 +08:00
from artiq.language.environment import is_experiment
def scan_experiments():
r = dict()
for f in os.listdir("repository"):
if f.endswith(".py"):
try:
m = file_import(os.path.join("repository", f))
except:
continue
for k, v in m.__dict__.items():
if is_experiment(v):
if v.__doc__ is None:
name = k
else:
name = v.__doc__.splitlines()[0].strip()
if name[-1] == ".":
name = name[:-1]
entry = {
"file": os.path.join("repository", f),
2015-07-14 04:08:20 +08:00
"experiment": k
}
r[name] = entry
return r
2015-01-26 23:37:33 +08:00
class Repository:
def __init__(self):
self.explist = Notifier(scan_experiments())
2015-01-26 23:37:33 +08:00
def get_data(self, filename):
with open(os.path.join("repository", filename)) as f:
2015-01-26 23:37:33 +08:00
return f.read()