diff --git a/artiq/compiler/types.py b/artiq/compiler/types.py index fdb225d9c..ec4701852 100644 --- a/artiq/compiler/types.py +++ b/artiq/compiler/types.py @@ -703,12 +703,15 @@ class TypePrinter(object): elif isinstance(typ, TInstance): if typ in self.recurse_guard or depth >= max_depth: return "".format(typ.name) - else: + elif len(typ.attributes) > 0: self.recurse_guard.add(typ) attrs = ",\n\t\t".join(["{}: {}".format(attr, self.name(typ.attributes[attr], depth + 1)) for attr in typ.attributes]) return "".format(typ.name, attrs) + else: + self.recurse_guard.add(typ) + return "".format(typ.name) elif isinstance(typ, TMono): if typ.params == {}: return typ.name @@ -745,12 +748,15 @@ class TypePrinter(object): elif isinstance(typ, (TConstructor, TExceptionConstructor)): if typ in self.recurse_guard or depth >= max_depth: return "".format(typ.name) - else: + elif len(typ.attributes) > 0: self.recurse_guard.add(typ) attrs = ", ".join(["{}: {}".format(attr, self.name(typ.attributes[attr], depth + 1)) for attr in typ.attributes]) return "".format(typ.name, attrs) + else: + self.recurse_guard.add(typ) + return "".format(typ.name) elif isinstance(typ, TBuiltin): return "".format(typ.name) elif isinstance(typ, TValue): diff --git a/artiq/test/coredevice/test_rtio.py b/artiq/test/coredevice/test_rtio.py index a4e90b236..ff50bf51c 100644 --- a/artiq/test/coredevice/test_rtio.py +++ b/artiq/test/coredevice/test_rtio.py @@ -104,7 +104,8 @@ class Watchdog(EnvExperiment): class LoopbackCount(EnvExperiment): def build(self): self.setattr_device("core") - self.setattr_device("ttl_inout") + self.setattr_device("loop_in") + self.setattr_device("loop_out") self.setattr_argument("npulses") def set_count(self, count): diff --git a/artiq/test/lit/inferencer/error_with_self.py b/artiq/test/lit/inferencer/error_with_self.py index 1bf087c26..afe53e531 100644 --- a/artiq/test/lit/inferencer/error_with_self.py +++ b/artiq/test/lit/inferencer/error_with_self.py @@ -11,7 +11,7 @@ class contextmgr: def foo(): contextmgr.__enter__(1) # CHECK-L: ${LINE:+3}: error: cannot unify with int(width='a) while inferring the type for self argument - # CHECK-L: ${LINE:+2}: note: expression of type + # CHECK-L: ${LINE:+2}: note: expression of type # CHECK-L: ${LINE:+1}: note: reference to an instance with a method '__enter__(self:int(width='a))->NoneType delay('b)' with contextmgr(): pass diff --git a/examples/artiq_ipython_notebook.ipynb b/examples/artiq_ipython_notebook.ipynb index e4a58d237..1d6026090 100644 --- a/examples/artiq_ipython_notebook.ipynb +++ b/examples/artiq_ipython_notebook.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -24,6 +24,7 @@ "import asyncio\n", "import datetime\n", "import glob\n", + "from pprint import pprint\n", "\n", "import numpy as np\n", "np.set_printoptions(precision=3)\n", @@ -39,19 +40,6 @@ "from artiq.master.worker_db import DeviceManager" ] }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# let's assume artiq_master and artiq_ctlmgr are already running\n", - "# move to a location where we have our artiq setup\n", - "os.chdir(os.path.expanduser(\"~/work/nist/artiq/run\"))" - ] - }, { "cell_type": "code", "execution_count": 3, @@ -60,21 +48,35 @@ }, "outputs": [], "source": [ - "# you can directly use the artiq controller infrastructure\n", + "# let's assume artiq_master and artiq_ctlmgr are already running\n", + "# then move to a location where we have our artiq setup\n", + "os.chdir(os.path.expanduser(\"~/work/nist/artiq/run\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# we can directly use the artiq controller infrastructure\n", "# and access any artiq device\n", "\n", - "# you can have artiq prepare that for you:\n", - "\n", + "# we can have artiq prepare that connection for us:\n", "ddb = DeviceDB(\"device_db.pyon\")\n", "devmgr = DeviceManager(ddb)\n", "lda = devmgr.get(\"lda\")\n", "lda.set_attenuation(42)\n", "assert lda.get_attenuation() == 42\n", "\n", - "# ... or you can wire it up yourself if you know where it is\n", + "# ... or we can wire it up ourselves if you know where it is\n", "assert ddb.get(\"lda\")[\"host\"] == \"::1\"\n", "assert ddb.get(\"lda\")[\"port\"] == 3253\n", "\n", + "# there are different Client types tailored to different use cases:\n", + "\n", "# synchronous\n", "lda = Client(\"::1\", 3253)\n", "assert lda.get_attenuation() == 42\n", @@ -93,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -102,8 +104,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "current schedule {}\n", - "experiments ['__pycache__/', 'flopping_f_simulation.py', 'notebook_test.py', '.git/', 'idle.elf', 'transport.py', 'idle.py', 'speed_benchmark.py', 'test_raise.py']\n" + "current schedule\n", + "{}\n", + "experiments:\n", + "['ex/',\n", + " 'test_analyzer.py',\n", + " 'notebook_test.py',\n", + " 'speed_benchmark.py',\n", + " 'histograms.py',\n", + " 'arguments_demo.py',\n", + " '.git/',\n", + " '__pycache__/',\n", + " 'flopping_f_simulation.py',\n", + " 'test_crash.py',\n", + " 'run_forever.py',\n", + " 'transport.py',\n", + " 'pdq2_simple.py']\n" ] } ], @@ -114,13 +130,15 @@ " Client(\"::1\", 3251, \"master_\" + i) for i in\n", " \"schedule experiment_db dataset_db\".split()]\n", "\n", - "print(\"current schedule\", schedule.get_status())\n", - "print(\"experiments\", exps.list_directory(\"repository\"))" + "print(\"current schedule\")\n", + "pprint(schedule.get_status())\n", + "print(\"experiments:\")\n", + "pprint(exps.list_directory(\"repository\"))" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -129,12 +147,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "current schedule {131: {'priority': 0, 'status': 'preparing', 'repo_msg': None, 'pipeline': 'main', 'due_date': None, 'flush': False, 'expid': {'file': 'repository/flopping_f_simulation.py', 'arguments': {'noise_amplitude': 0.1, 'F0': 1500}, 'log_level': 30, 'class_name': 'FloppingF'}}}\n" + "current schedule\n", + "{4722: {'due_date': None,\n", + " 'expid': {'arguments': {'F0': 1500, 'noise_amplitude': 0.3},\n", + " 'class_name': 'FloppingF',\n", + " 'file': 'repository/flopping_f_simulation.py',\n", + " 'log_level': 30},\n", + " 'flush': False,\n", + " 'pipeline': 'main',\n", + " 'priority': 0,\n", + " 'repo_msg': None,\n", + " 'status': 'preparing'}}\n" ] } ], "source": [ - "# we can submit experiments to be run:\n", + "# we can submit experiments to be run\n", "\n", "expid = dict(\n", " file=\"repository/flopping_f_simulation.py\",\n", @@ -142,18 +170,19 @@ " log_level=logging.WARNING,\n", " arguments=dict(\n", " F0=1500,\n", - " noise_amplitude=.1,\n", + " noise_amplitude=.3,\n", " ),\n", ")\n", "if not schedule.get_status():\n", " rid = schedule.submit(pipeline_name=\"main\", expid=expid,\n", " priority=0, due_date=None, flush=False)\n", - "print(\"current schedule\", schedule.get_status())" + "print(\"current schedule\")\n", + "pprint(schedule.get_status())" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -167,7 +196,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -176,14 +205,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "flopping_f 1499.996784076909\n" + "flopping_f: 1499.944285221012\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\nJKD/D7Ip5VrpmcohAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -197,12 +226,12 @@ "fig, ax = plt.subplots()\n", "d = datasets.get(\"flopping_f_brightness\")\n", "ax.plot(d)\n", - "print(\"flopping_f\", datasets.get(\"flopping_freq\"))" + "print(\"flopping_f:\", datasets.get(\"flopping_freq\"))" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -215,7 +244,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -237,8 +266,8 @@ " \"results\", t.strftime(\"%Y-%m-%d\"), #t.strftime(\"%H-%M\"),\n", " \"*\", \"{:09d}-FloppingF.h5\".format(rid))\n", "\n", - "# we would usually like to use pandas but our data doe not comply\n", - "# with the pandas metadata\n", + "# we would usually like to use pandas but our data does not have\n", + "# the metadata pandas want\n", "#d = pd.HDFStore(glob.glob(f)[0])\n", "\n", "with h5py.File(glob.glob(f)[0]) as f:\n", @@ -248,7 +277,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -264,7 +293,7 @@ "source": [ "%%writefile repository/notebook_test.py\n", "\n", - "# we can also write experiments in the notebook ans submit them\n", + "# we can also write experiments in the notebook and submit them\n", "# we don't have submit-by-content yet (and there would be questions\n", "# about other modules that would need to be imported) so we just export\n", "# this cell and submit it by filename\n", @@ -281,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -290,7 +319,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "133\n" + "4724\n" ] } ],