Skip to content

Instantly share code, notes, and snippets.

@agoose77
Created May 12, 2018 08:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save agoose77/7ac98e74c3b7f1892789575c8cd50536 to your computer and use it in GitHub Desktop.
Save agoose77/7ac98e74c3b7f1892789575c8cd50536 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [],
"source": [
"from pygments.formatters import HtmlFormatter\n",
"from pygments import highlight"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"\n",
"from pygments.lexer import Lexer, RegexLexer, include, bygroups, using, \\\n",
" default, words, combined, do_insertions\n",
"from pygments.util import get_bool_opt, shebang_matches\n",
"from pygments.token import Text, Comment, Operator, Keyword, Name, String, \\\n",
" Number, Punctuation, Generic, Other, Error\n",
"from pygments import unistring as uni\n",
"\n",
"line_re = re.compile('.*?\\n')"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [],
"source": [
"class Python3Lexer(RegexLexer):\n",
" \"\"\"\n",
" For `Python <http://www.python.org>`_ source code (version 3.0).\n",
"\n",
" .. versionadded:: 0.10\n",
" \"\"\"\n",
"\n",
" name = 'Python 3'\n",
" aliases = ['python3', 'py3']\n",
" filenames = [] # Nothing until Python 3 gets widespread\n",
" mimetypes = ['text/x-python3', 'application/x-python3']\n",
"\n",
" flags = re.MULTILINE | re.UNICODE\n",
"\n",
" uni_name = \"[%s][%s]*\" % (uni.xid_start, uni.xid_continue)\n",
"\n",
" def innerstring_rules(ttype):\n",
" return [\n",
" # the old style '%s' % (...) string formatting (still valid in Py3)\n",
" (r'%(\\(\\w+\\))?[-#0 +]*([0-9]+|[*])?(\\.([0-9]+|[*]))?'\n",
" '[hlL]?[E-GXc-giorsux%]', String.Interpol),\n",
" # the new style '{}'.format(...) string formatting\n",
" (r'\\{'\n",
" '((\\w+)((\\.\\w+)|(\\[[^\\]]+\\]))*)?' # field name\n",
" '(\\![sra])?' # conversion\n",
" '(\\:(.?[<>=\\^])?[-+ ]?#?0?(\\d+)?,?(\\.\\d+)?[E-GXb-gnosx%]?)?'\n",
" '\\}', String.Interpol),\n",
"\n",
" # backslashes, quotes and formatting signs must be parsed one at a time\n",
" (r'[^\\\\\\'\"%{\\n]+', ttype),\n",
" (r'[\\'\"\\\\]', ttype),\n",
" # unhandled string formatting sign\n",
" (r'%|(\\{{1,2})', ttype)\n",
" # newlines are an error (use \"nl\" state)\n",
" ]\n",
"\n",
" tokens = PythonLexer.tokens.copy()\n",
" tokens['keywords'] = [\n",
" (words((\n",
" 'assert', 'async', 'await', 'break', 'continue', 'del', 'elif',\n",
" 'else', 'except', 'finally', 'for', 'global', 'if', 'lambda', 'pass',\n",
" 'raise', 'nonlocal', 'return', 'try', 'while', 'yield', 'yield from',\n",
" 'as', 'with', 'given'), suffix=r'\\b'),\n",
" Keyword),\n",
" (words((\n",
" 'True', 'False', 'None'), suffix=r'\\b'),\n",
" Keyword.Constant),\n",
" ]\n",
" tokens['builtins'] = [\n",
" (words((\n",
" '__import__', 'abs', 'all', 'any', 'bin', 'bool', 'bytearray', 'bytes',\n",
" 'chr', 'classmethod', 'cmp', 'compile', 'complex', 'delattr', 'dict',\n",
" 'dir', 'divmod', 'enumerate', 'eval', 'filter', 'float', 'format',\n",
" 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'hex', 'id',\n",
" 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list',\n",
" 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct',\n",
" 'open', 'ord', 'pow', 'print', 'property', 'range', 'repr', 'reversed',\n",
" 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str',\n",
" 'sum', 'super', 'tuple', 'type', 'vars', 'zip'), prefix=r'(?<!\\.)',\n",
" suffix=r'\\b'),\n",
" Name.Builtin),\n",
" (r'(?<!\\.)(self|Ellipsis|NotImplemented|cls)\\b', Name.Builtin.Pseudo),\n",
" (words((\n",
" 'ArithmeticError', 'AssertionError', 'AttributeError',\n",
" 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning',\n",
" 'EOFError', 'EnvironmentError', 'Exception', 'FloatingPointError',\n",
" 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError',\n",
" 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError',\n",
" 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError',\n",
" 'NotImplementedError', 'OSError', 'OverflowError',\n",
" 'PendingDeprecationWarning', 'ReferenceError', 'ResourceWarning',\n",
" 'RuntimeError', 'RuntimeWarning', 'StopIteration',\n",
" 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError',\n",
" 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',\n",
" 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',\n",
" 'UnicodeWarning', 'UserWarning', 'ValueError', 'VMSError', 'Warning',\n",
" 'WindowsError', 'ZeroDivisionError',\n",
" # new builtin exceptions from PEP 3151\n",
" 'BlockingIOError', 'ChildProcessError', 'ConnectionError',\n",
" 'BrokenPipeError', 'ConnectionAbortedError', 'ConnectionRefusedError',\n",
" 'ConnectionResetError', 'FileExistsError', 'FileNotFoundError',\n",
" 'InterruptedError', 'IsADirectoryError', 'NotADirectoryError',\n",
" 'PermissionError', 'ProcessLookupError', 'TimeoutError'),\n",
" prefix=r'(?<!\\.)', suffix=r'\\b'),\n",
" Name.Exception),\n",
" ]\n",
" tokens['magicfuncs'] = [\n",
" (words((\n",
" '__abs__', '__add__', '__aenter__', '__aexit__', '__aiter__', '__and__',\n",
" '__anext__', '__await__', '__bool__', '__bytes__', '__call__',\n",
" '__complex__', '__contains__', '__del__', '__delattr__', '__delete__',\n",
" '__delitem__', '__dir__', '__divmod__', '__enter__', '__eq__', '__exit__',\n",
" '__float__', '__floordiv__', '__format__', '__ge__', '__get__',\n",
" '__getattr__', '__getattribute__', '__getitem__', '__gt__', '__hash__',\n",
" '__iadd__', '__iand__', '__ifloordiv__', '__ilshift__', '__imatmul__',\n",
" '__imod__', '__import__', '__imul__', '__index__', '__init__',\n",
" '__instancecheck__', '__int__', '__invert__', '__ior__', '__ipow__',\n",
" '__irshift__', '__isub__', '__iter__', '__itruediv__', '__ixor__',\n",
" '__le__', '__len__', '__length_hint__', '__lshift__', '__lt__',\n",
" '__matmul__', '__missing__', '__mod__', '__mul__', '__ne__', '__neg__',\n",
" '__new__', '__next__', '__or__', '__pos__', '__pow__', '__prepare__',\n",
" '__radd__', '__rand__', '__rdivmod__', '__repr__', '__reversed__',\n",
" '__rfloordiv__', '__rlshift__', '__rmatmul__', '__rmod__', '__rmul__',\n",
" '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__',\n",
" '__rsub__', '__rtruediv__', '__rxor__', '__set__', '__setattr__',\n",
" '__setitem__', '__str__', '__sub__', '__subclasscheck__', '__truediv__',\n",
" '__xor__'), suffix=r'\\b'),\n",
" Name.Function.Magic),\n",
" ]\n",
" tokens['magicvars'] = [\n",
" (words((\n",
" '__annotations__', '__bases__', '__class__', '__closure__', '__code__',\n",
" '__defaults__', '__dict__', '__doc__', '__file__', '__func__',\n",
" '__globals__', '__kwdefaults__', '__module__', '__mro__', '__name__',\n",
" '__objclass__', '__qualname__', '__self__', '__slots__', '__weakref__'),\n",
" suffix=r'\\b'),\n",
" Name.Variable.Magic),\n",
" ]\n",
" tokens['numbers'] = [\n",
" (r'(\\d+\\.\\d*|\\d*\\.\\d+)([eE][+-]?[0-9]+)?', Number.Float),\n",
" (r'\\d+[eE][+-]?[0-9]+j?', Number.Float),\n",
" (r'0[oO][0-7]+', Number.Oct),\n",
" (r'0[bB][01]+', Number.Bin),\n",
" (r'0[xX][a-fA-F0-9]+', Number.Hex),\n",
" (r'\\d+', Number.Integer)\n",
" ]\n",
" tokens['backtick'] = []\n",
" tokens['name'] = [\n",
" (r'@\\w+', Name.Decorator),\n",
" (r'@', Operator), # new matrix multiplication operator\n",
" (uni_name, Name),\n",
" ]\n",
" tokens['funcname'] = [\n",
" (uni_name, Name.Function, '#pop')\n",
" ]\n",
" tokens['classname'] = [\n",
" (uni_name, Name.Class, '#pop')\n",
" ]\n",
" tokens['import'] = [\n",
" (r'(\\s+)(as)(\\s+)', bygroups(Text, Keyword, Text)),\n",
" (r'\\.', Name.Namespace),\n",
" (uni_name, Name.Namespace),\n",
" (r'(\\s*)(,)(\\s*)', bygroups(Text, Operator, Text)),\n",
" default('#pop') # all else: go back\n",
" ]\n",
" tokens['fromimport'] = [\n",
" (r'(\\s+)(import)\\b', bygroups(Text, Keyword), '#pop'),\n",
" (r'\\.', Name.Namespace),\n",
" (uni_name, Name.Namespace),\n",
" default('#pop'),\n",
" ]\n",
" tokens['strings-single'] = innerstring_rules(String.Single)\n",
" tokens['strings-double'] = innerstring_rules(String.Double)\n",
"\n",
" def analyse_text(text):\n",
" return shebang_matches(text, r'pythonw?3(\\.\\d)?')\n"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import HTML\n",
"def output(code):\n",
" return HTML(f\"\"\"<style>{HtmlFormatter().get_style_defs()}</style>\"\"\" + highlight(code, Python3Lexer(), HtmlFormatter()))"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>.hll { background-color: #ffffcc }\n",
".c { color: #408080; font-style: italic } /* Comment */\n",
".err { border: 1px solid #FF0000 } /* Error */\n",
".k { color: #008000; font-weight: bold } /* Keyword */\n",
".o { color: #666666 } /* Operator */\n",
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n",
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n",
".cp { color: #BC7A00 } /* Comment.Preproc */\n",
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n",
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n",
".cs { color: #408080; font-style: italic } /* Comment.Special */\n",
".gd { color: #A00000 } /* Generic.Deleted */\n",
".ge { font-style: italic } /* Generic.Emph */\n",
".gr { color: #FF0000 } /* Generic.Error */\n",
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
".gi { color: #00A000 } /* Generic.Inserted */\n",
".go { color: #888888 } /* Generic.Output */\n",
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
".gs { font-weight: bold } /* Generic.Strong */\n",
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
".gt { color: #0044DD } /* Generic.Traceback */\n",
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
".kp { color: #008000 } /* Keyword.Pseudo */\n",
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
".kt { color: #B00040 } /* Keyword.Type */\n",
".m { color: #666666 } /* Literal.Number */\n",
".s { color: #BA2121 } /* Literal.String */\n",
".na { color: #7D9029 } /* Name.Attribute */\n",
".nb { color: #008000 } /* Name.Builtin */\n",
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
".no { color: #880000 } /* Name.Constant */\n",
".nd { color: #AA22FF } /* Name.Decorator */\n",
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n",
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n",
".nf { color: #0000FF } /* Name.Function */\n",
".nl { color: #A0A000 } /* Name.Label */\n",
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
".nv { color: #19177C } /* Name.Variable */\n",
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
".w { color: #bbbbbb } /* Text.Whitespace */\n",
".mb { color: #666666 } /* Literal.Number.Bin */\n",
".mf { color: #666666 } /* Literal.Number.Float */\n",
".mh { color: #666666 } /* Literal.Number.Hex */\n",
".mi { color: #666666 } /* Literal.Number.Integer */\n",
".mo { color: #666666 } /* Literal.Number.Oct */\n",
".sa { color: #BA2121 } /* Literal.String.Affix */\n",
".sb { color: #BA2121 } /* Literal.String.Backtick */\n",
".sc { color: #BA2121 } /* Literal.String.Char */\n",
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
".s2 { color: #BA2121 } /* Literal.String.Double */\n",
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n",
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n",
".sx { color: #008000 } /* Literal.String.Other */\n",
".sr { color: #BB6688 } /* Literal.String.Regex */\n",
".s1 { color: #BA2121 } /* Literal.String.Single */\n",
".ss { color: #19177C } /* Literal.String.Symbol */\n",
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
".fm { color: #0000FF } /* Name.Function.Magic */\n",
".vc { color: #19177C } /* Name.Variable.Class */\n",
".vg { color: #19177C } /* Name.Variable.Global */\n",
".vi { color: #19177C } /* Name.Variable.Instance */\n",
".vm { color: #19177C } /* Name.Variable.Magic */\n",
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"n\">cmd</span> <span class=\"o\">!=</span> <span class=\"n\">CMD_QUIT</span> <span class=\"k\">given</span> <span class=\"n\">cmd</span> <span class=\"o\">=</span> <span class=\"n\">get_command</span><span class=\"p\">(</span><span class=\"n\">msg_loop</span><span class=\"p\">,</span> <span class=\"n\">Events</span><span class=\"o\">.</span><span class=\"n\">KB</span><span class=\"p\">):</span>\n",
" <span class=\"k\">pass</span>\n",
" \n",
"<span class=\"k\">while</span> <span class=\"p\">(</span><span class=\"n\">cmd</span> <span class=\"p\">:</span><span class=\"o\">=</span> <span class=\"n\">get_command</span><span class=\"p\">(</span><span class=\"n\">msg_loop</span><span class=\"p\">,</span> <span class=\"n\">Events</span><span class=\"o\">.</span><span class=\"n\">KB</span><span class=\"p\">))</span> <span class=\"o\">!=</span> <span class=\"n\">CMD_QUIT</span><span class=\"p\">:</span>\n",
" <span class=\"k\">pass</span>\n",
"</pre></div>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"output(\"\"\"while cmd != CMD_QUIT given cmd = get_command(msg_loop, Events.KB):\n",
" pass\n",
" \n",
"while (cmd := get_command(msg_loop, Events.KB)) != CMD_QUIT:\n",
" pass\"\"\")"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>.hll { background-color: #ffffcc }\n",
".c { color: #408080; font-style: italic } /* Comment */\n",
".err { border: 1px solid #FF0000 } /* Error */\n",
".k { color: #008000; font-weight: bold } /* Keyword */\n",
".o { color: #666666 } /* Operator */\n",
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n",
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n",
".cp { color: #BC7A00 } /* Comment.Preproc */\n",
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n",
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n",
".cs { color: #408080; font-style: italic } /* Comment.Special */\n",
".gd { color: #A00000 } /* Generic.Deleted */\n",
".ge { font-style: italic } /* Generic.Emph */\n",
".gr { color: #FF0000 } /* Generic.Error */\n",
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
".gi { color: #00A000 } /* Generic.Inserted */\n",
".go { color: #888888 } /* Generic.Output */\n",
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
".gs { font-weight: bold } /* Generic.Strong */\n",
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
".gt { color: #0044DD } /* Generic.Traceback */\n",
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
".kp { color: #008000 } /* Keyword.Pseudo */\n",
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
".kt { color: #B00040 } /* Keyword.Type */\n",
".m { color: #666666 } /* Literal.Number */\n",
".s { color: #BA2121 } /* Literal.String */\n",
".na { color: #7D9029 } /* Name.Attribute */\n",
".nb { color: #008000 } /* Name.Builtin */\n",
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
".no { color: #880000 } /* Name.Constant */\n",
".nd { color: #AA22FF } /* Name.Decorator */\n",
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n",
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n",
".nf { color: #0000FF } /* Name.Function */\n",
".nl { color: #A0A000 } /* Name.Label */\n",
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
".nv { color: #19177C } /* Name.Variable */\n",
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
".w { color: #bbbbbb } /* Text.Whitespace */\n",
".mb { color: #666666 } /* Literal.Number.Bin */\n",
".mf { color: #666666 } /* Literal.Number.Float */\n",
".mh { color: #666666 } /* Literal.Number.Hex */\n",
".mi { color: #666666 } /* Literal.Number.Integer */\n",
".mo { color: #666666 } /* Literal.Number.Oct */\n",
".sa { color: #BA2121 } /* Literal.String.Affix */\n",
".sb { color: #BA2121 } /* Literal.String.Backtick */\n",
".sc { color: #BA2121 } /* Literal.String.Char */\n",
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
".s2 { color: #BA2121 } /* Literal.String.Double */\n",
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n",
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n",
".sx { color: #008000 } /* Literal.String.Other */\n",
".sr { color: #BB6688 } /* Literal.String.Regex */\n",
".s1 { color: #BA2121 } /* Literal.String.Single */\n",
".ss { color: #19177C } /* Literal.String.Symbol */\n",
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
".fm { color: #0000FF } /* Name.Function.Magic */\n",
".vc { color: #19177C } /* Name.Variable.Class */\n",
".vg { color: #19177C } /* Name.Variable.Global */\n",
".vi { color: #19177C } /* Name.Variable.Instance */\n",
".vm { color: #19177C } /* Name.Variable.Magic */\n",
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"p\">(</span><span class=\"n\">node</span><span class=\"o\">.</span><span class=\"n\">x</span><span class=\"p\">,</span> <span class=\"n\">node</span><span class=\"o\">.</span><span class=\"n\">y</span><span class=\"p\">)</span> <span class=\"o\">&gt;</span> <span class=\"p\">(</span><span class=\"mf\">5.0</span><span class=\"p\">,</span> <span class=\"mf\">5.0</span><span class=\"p\">)</span> <span class=\"k\">given</span> <span class=\"n\">node</span> <span class=\"o\">=</span> <span class=\"n\">get_neighbours</span><span class=\"p\">(</span><span class=\"n\">node</span><span class=\"p\">):</span>\n",
" <span class=\"k\">pass</span>\n",
"</pre></div>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"output(\"\"\"while (node.x, node.y) > (5.0, 5.0) given node = get_neighbours(node):\n",
" pass\"\"\")"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>.hll { background-color: #ffffcc }\n",
".c { color: #408080; font-style: italic } /* Comment */\n",
".err { border: 1px solid #FF0000 } /* Error */\n",
".k { color: #008000; font-weight: bold } /* Keyword */\n",
".o { color: #666666 } /* Operator */\n",
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n",
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n",
".cp { color: #BC7A00 } /* Comment.Preproc */\n",
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n",
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n",
".cs { color: #408080; font-style: italic } /* Comment.Special */\n",
".gd { color: #A00000 } /* Generic.Deleted */\n",
".ge { font-style: italic } /* Generic.Emph */\n",
".gr { color: #FF0000 } /* Generic.Error */\n",
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
".gi { color: #00A000 } /* Generic.Inserted */\n",
".go { color: #888888 } /* Generic.Output */\n",
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
".gs { font-weight: bold } /* Generic.Strong */\n",
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
".gt { color: #0044DD } /* Generic.Traceback */\n",
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
".kp { color: #008000 } /* Keyword.Pseudo */\n",
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
".kt { color: #B00040 } /* Keyword.Type */\n",
".m { color: #666666 } /* Literal.Number */\n",
".s { color: #BA2121 } /* Literal.String */\n",
".na { color: #7D9029 } /* Name.Attribute */\n",
".nb { color: #008000 } /* Name.Builtin */\n",
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
".no { color: #880000 } /* Name.Constant */\n",
".nd { color: #AA22FF } /* Name.Decorator */\n",
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n",
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n",
".nf { color: #0000FF } /* Name.Function */\n",
".nl { color: #A0A000 } /* Name.Label */\n",
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
".nv { color: #19177C } /* Name.Variable */\n",
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
".w { color: #bbbbbb } /* Text.Whitespace */\n",
".mb { color: #666666 } /* Literal.Number.Bin */\n",
".mf { color: #666666 } /* Literal.Number.Float */\n",
".mh { color: #666666 } /* Literal.Number.Hex */\n",
".mi { color: #666666 } /* Literal.Number.Integer */\n",
".mo { color: #666666 } /* Literal.Number.Oct */\n",
".sa { color: #BA2121 } /* Literal.String.Affix */\n",
".sb { color: #BA2121 } /* Literal.String.Backtick */\n",
".sc { color: #BA2121 } /* Literal.String.Char */\n",
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
".s2 { color: #BA2121 } /* Literal.String.Double */\n",
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n",
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n",
".sx { color: #008000 } /* Literal.String.Other */\n",
".sr { color: #BB6688 } /* Literal.String.Regex */\n",
".s1 { color: #BA2121 } /* Literal.String.Single */\n",
".ss { color: #19177C } /* Literal.String.Symbol */\n",
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
".fm { color: #0000FF } /* Name.Function.Magic */\n",
".vc { color: #19177C } /* Name.Variable.Class */\n",
".vg { color: #19177C } /* Name.Variable.Global */\n",
".vi { color: #19177C } /* Name.Variable.Instance */\n",
".vm { color: #19177C } /* Name.Variable.Magic */\n",
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"o\">...</span><span class=\"p\">:</span>\n",
" <span class=\"n\">result</span> <span class=\"o\">=</span> <span class=\"n\">handler</span><span class=\"p\">(</span><span class=\"n\">match</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">context</span><span class=\"p\">)</span>\n",
" <span class=\"k\">if</span> <span class=\"n\">result</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span><span class=\"p\">:</span>\n",
" <span class=\"k\">yield</span> <span class=\"n\">result</span>\n",
"\n",
"<span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"o\">...</span><span class=\"p\">:</span>\n",
" <span class=\"k\">if</span> <span class=\"p\">(</span><span class=\"n\">result</span> <span class=\"p\">:</span><span class=\"o\">=</span> <span class=\"n\">handler</span><span class=\"p\">(</span><span class=\"n\">match</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">context</span><span class=\"p\">))</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span><span class=\"p\">:</span>\n",
" <span class=\"k\">yield</span> <span class=\"n\">result</span>\n",
" \n",
"<span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"o\">...</span><span class=\"p\">:</span>\n",
" <span class=\"k\">if</span> <span class=\"n\">result</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span> <span class=\"k\">given</span> <span class=\"n\">result</span> <span class=\"o\">=</span> <span class=\"n\">handler</span><span class=\"p\">(</span><span class=\"n\">match</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">context</span><span class=\"p\">):</span>\n",
" <span class=\"k\">yield</span> <span class=\"n\">result</span>\n",
"</pre></div>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"output(\"\"\"for i in ...:\n",
" result = handler(match, value, context)\n",
" if result is not None:\n",
" yield result\n",
"\n",
"for i in ...:\n",
" if (result := handler(match, value, context)) is not None:\n",
" yield result\n",
" \n",
"for i in ...:\n",
" if result is not None given result = handler(match, value, context):\n",
" yield result\"\"\")"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>.hll { background-color: #ffffcc }\n",
".c { color: #408080; font-style: italic } /* Comment */\n",
".err { border: 1px solid #FF0000 } /* Error */\n",
".k { color: #008000; font-weight: bold } /* Keyword */\n",
".o { color: #666666 } /* Operator */\n",
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n",
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n",
".cp { color: #BC7A00 } /* Comment.Preproc */\n",
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n",
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n",
".cs { color: #408080; font-style: italic } /* Comment.Special */\n",
".gd { color: #A00000 } /* Generic.Deleted */\n",
".ge { font-style: italic } /* Generic.Emph */\n",
".gr { color: #FF0000 } /* Generic.Error */\n",
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
".gi { color: #00A000 } /* Generic.Inserted */\n",
".go { color: #888888 } /* Generic.Output */\n",
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
".gs { font-weight: bold } /* Generic.Strong */\n",
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
".gt { color: #0044DD } /* Generic.Traceback */\n",
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
".kp { color: #008000 } /* Keyword.Pseudo */\n",
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
".kt { color: #B00040 } /* Keyword.Type */\n",
".m { color: #666666 } /* Literal.Number */\n",
".s { color: #BA2121 } /* Literal.String */\n",
".na { color: #7D9029 } /* Name.Attribute */\n",
".nb { color: #008000 } /* Name.Builtin */\n",
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
".no { color: #880000 } /* Name.Constant */\n",
".nd { color: #AA22FF } /* Name.Decorator */\n",
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n",
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n",
".nf { color: #0000FF } /* Name.Function */\n",
".nl { color: #A0A000 } /* Name.Label */\n",
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
".nv { color: #19177C } /* Name.Variable */\n",
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
".w { color: #bbbbbb } /* Text.Whitespace */\n",
".mb { color: #666666 } /* Literal.Number.Bin */\n",
".mf { color: #666666 } /* Literal.Number.Float */\n",
".mh { color: #666666 } /* Literal.Number.Hex */\n",
".mi { color: #666666 } /* Literal.Number.Integer */\n",
".mo { color: #666666 } /* Literal.Number.Oct */\n",
".sa { color: #BA2121 } /* Literal.String.Affix */\n",
".sb { color: #BA2121 } /* Literal.String.Backtick */\n",
".sc { color: #BA2121 } /* Literal.String.Char */\n",
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
".s2 { color: #BA2121 } /* Literal.String.Double */\n",
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n",
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n",
".sx { color: #008000 } /* Literal.String.Other */\n",
".sr { color: #BB6688 } /* Literal.String.Regex */\n",
".s1 { color: #BA2121 } /* Literal.String.Single */\n",
".ss { color: #19177C } /* Literal.String.Symbol */\n",
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
".fm { color: #0000FF } /* Name.Function.Magic */\n",
".vc { color: #19177C } /* Name.Variable.Class */\n",
".vg { color: #19177C } /* Name.Variable.Global */\n",
".vi { color: #19177C } /* Name.Variable.Instance */\n",
".vm { color: #19177C } /* Name.Variable.Magic */\n",
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"n\">parent</span> <span class=\"ow\">in</span> <span class=\"n\">node_to_parent</span> <span class=\"k\">given</span> <span class=\"n\">parent</span> <span class=\"o\">=</span> <span class=\"n\">node_to_parent</span><span class=\"p\">[</span><span class=\"n\">node</span><span class=\"p\">]:</span>\n",
" <span class=\"n\">result</span><span class=\"o\">.</span><span class=\"n\">appendleft</span><span class=\"p\">(</span><span class=\"n\">parent</span><span class=\"p\">)</span>\n",
" \n",
"<span class=\"k\">while</span> <span class=\"p\">(</span><span class=\"n\">parent</span> <span class=\"p\">:</span><span class=\"o\">=</span> <span class=\"n\">node_to_parent</span><span class=\"p\">[</span><span class=\"n\">node</span><span class=\"p\">])</span> <span class=\"ow\">in</span> <span class=\"n\">node_to_parent</span><span class=\"p\">:</span>\n",
" <span class=\"n\">result</span><span class=\"o\">.</span><span class=\"n\">appendleft</span><span class=\"p\">(</span><span class=\"n\">parent</span><span class=\"p\">)</span>\n",
"</pre></div>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"output(\"\"\"while parent in node_to_parent given parent = node_to_parent[node]:\n",
" result.appendleft(parent)\n",
" \n",
"while (parent := node_to_parent[node]) in node_to_parent:\n",
" result.appendleft(parent)\"\"\")"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>.hll { background-color: #ffffcc }\n",
".c { color: #408080; font-style: italic } /* Comment */\n",
".err { border: 1px solid #FF0000 } /* Error */\n",
".k { color: #008000; font-weight: bold } /* Keyword */\n",
".o { color: #666666 } /* Operator */\n",
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n",
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n",
".cp { color: #BC7A00 } /* Comment.Preproc */\n",
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n",
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n",
".cs { color: #408080; font-style: italic } /* Comment.Special */\n",
".gd { color: #A00000 } /* Generic.Deleted */\n",
".ge { font-style: italic } /* Generic.Emph */\n",
".gr { color: #FF0000 } /* Generic.Error */\n",
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
".gi { color: #00A000 } /* Generic.Inserted */\n",
".go { color: #888888 } /* Generic.Output */\n",
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
".gs { font-weight: bold } /* Generic.Strong */\n",
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
".gt { color: #0044DD } /* Generic.Traceback */\n",
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
".kp { color: #008000 } /* Keyword.Pseudo */\n",
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
".kt { color: #B00040 } /* Keyword.Type */\n",
".m { color: #666666 } /* Literal.Number */\n",
".s { color: #BA2121 } /* Literal.String */\n",
".na { color: #7D9029 } /* Name.Attribute */\n",
".nb { color: #008000 } /* Name.Builtin */\n",
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
".no { color: #880000 } /* Name.Constant */\n",
".nd { color: #AA22FF } /* Name.Decorator */\n",
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n",
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n",
".nf { color: #0000FF } /* Name.Function */\n",
".nl { color: #A0A000 } /* Name.Label */\n",
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
".nv { color: #19177C } /* Name.Variable */\n",
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
".w { color: #bbbbbb } /* Text.Whitespace */\n",
".mb { color: #666666 } /* Literal.Number.Bin */\n",
".mf { color: #666666 } /* Literal.Number.Float */\n",
".mh { color: #666666 } /* Literal.Number.Hex */\n",
".mi { color: #666666 } /* Literal.Number.Integer */\n",
".mo { color: #666666 } /* Literal.Number.Oct */\n",
".sa { color: #BA2121 } /* Literal.String.Affix */\n",
".sb { color: #BA2121 } /* Literal.String.Backtick */\n",
".sc { color: #BA2121 } /* Literal.String.Char */\n",
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
".s2 { color: #BA2121 } /* Literal.String.Double */\n",
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n",
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n",
".sx { color: #008000 } /* Literal.String.Other */\n",
".sr { color: #BB6688 } /* Literal.String.Regex */\n",
".s1 { color: #BA2121 } /* Literal.String.Single */\n",
".ss { color: #19177C } /* Literal.String.Symbol */\n",
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
".fm { color: #0000FF } /* Name.Function.Magic */\n",
".vc { color: #19177C } /* Name.Variable.Class */\n",
".vg { color: #19177C } /* Name.Variable.Global */\n",
".vi { color: #19177C } /* Name.Variable.Instance */\n",
".vm { color: #19177C } /* Name.Variable.Magic */\n",
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"n\">is_invalid</span><span class=\"p\">(</span><span class=\"n\">username</span><span class=\"p\">)</span> <span class=\"k\">given</span> <span class=\"n\">username</span> <span class=\"o\">=</span> <span class=\"nb\">input</span><span class=\"p\">(</span><span class=\"s2\">&quot;Username:&quot;</span><span class=\"p\">):</span>\n",
" <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;Invalid entry, try again&quot;</span><span class=\"p\">)</span>\n",
"</pre></div>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"output(\"\"\"while is_invalid(username) given username = input(\"Username:\"):\n",
" print(\"Invalid entry, try again\")\"\"\")"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>.hll { background-color: #ffffcc }\n",
".c { color: #408080; font-style: italic } /* Comment */\n",
".err { border: 1px solid #FF0000 } /* Error */\n",
".k { color: #008000; font-weight: bold } /* Keyword */\n",
".o { color: #666666 } /* Operator */\n",
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n",
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n",
".cp { color: #BC7A00 } /* Comment.Preproc */\n",
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n",
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n",
".cs { color: #408080; font-style: italic } /* Comment.Special */\n",
".gd { color: #A00000 } /* Generic.Deleted */\n",
".ge { font-style: italic } /* Generic.Emph */\n",
".gr { color: #FF0000 } /* Generic.Error */\n",
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
".gi { color: #00A000 } /* Generic.Inserted */\n",
".go { color: #888888 } /* Generic.Output */\n",
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
".gs { font-weight: bold } /* Generic.Strong */\n",
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
".gt { color: #0044DD } /* Generic.Traceback */\n",
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
".kp { color: #008000 } /* Keyword.Pseudo */\n",
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
".kt { color: #B00040 } /* Keyword.Type */\n",
".m { color: #666666 } /* Literal.Number */\n",
".s { color: #BA2121 } /* Literal.String */\n",
".na { color: #7D9029 } /* Name.Attribute */\n",
".nb { color: #008000 } /* Name.Builtin */\n",
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
".no { color: #880000 } /* Name.Constant */\n",
".nd { color: #AA22FF } /* Name.Decorator */\n",
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n",
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n",
".nf { color: #0000FF } /* Name.Function */\n",
".nl { color: #A0A000 } /* Name.Label */\n",
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
".nv { color: #19177C } /* Name.Variable */\n",
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
".w { color: #bbbbbb } /* Text.Whitespace */\n",
".mb { color: #666666 } /* Literal.Number.Bin */\n",
".mf { color: #666666 } /* Literal.Number.Float */\n",
".mh { color: #666666 } /* Literal.Number.Hex */\n",
".mi { color: #666666 } /* Literal.Number.Integer */\n",
".mo { color: #666666 } /* Literal.Number.Oct */\n",
".sa { color: #BA2121 } /* Literal.String.Affix */\n",
".sb { color: #BA2121 } /* Literal.String.Backtick */\n",
".sc { color: #BA2121 } /* Literal.String.Char */\n",
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
".s2 { color: #BA2121 } /* Literal.String.Double */\n",
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n",
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n",
".sx { color: #008000 } /* Literal.String.Other */\n",
".sr { color: #BB6688 } /* Literal.String.Regex */\n",
".s1 { color: #BA2121 } /* Literal.String.Single */\n",
".ss { color: #19177C } /* Literal.String.Symbol */\n",
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
".fm { color: #0000FF } /* Name.Function.Magic */\n",
".vc { color: #19177C } /* Name.Variable.Class */\n",
".vg { color: #19177C } /* Name.Variable.Global */\n",
".vi { color: #19177C } /* Name.Variable.Instance */\n",
".vm { color: #19177C } /* Name.Variable.Magic */\n",
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"n\">is_invalid</span><span class=\"p\">(</span><span class=\"n\">username</span><span class=\"p\">:</span><span class=\"o\">=</span><span class=\"nb\">input</span><span class=\"p\">(</span><span class=\"s2\">&quot;Username:&quot;</span><span class=\"p\">)):</span>\n",
" <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;Invalid entry, try again&quot;</span><span class=\"p\">)</span>\n",
"</pre></div>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"output(\"\"\"while is_invalid(username:=input(\"Username:\")):\n",
" print(\"Invalid entry, try again\")\"\"\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Goals"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>.hll { background-color: #ffffcc }\n",
".c { color: #408080; font-style: italic } /* Comment */\n",
".err { border: 1px solid #FF0000 } /* Error */\n",
".k { color: #008000; font-weight: bold } /* Keyword */\n",
".o { color: #666666 } /* Operator */\n",
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n",
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n",
".cp { color: #BC7A00 } /* Comment.Preproc */\n",
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n",
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n",
".cs { color: #408080; font-style: italic } /* Comment.Special */\n",
".gd { color: #A00000 } /* Generic.Deleted */\n",
".ge { font-style: italic } /* Generic.Emph */\n",
".gr { color: #FF0000 } /* Generic.Error */\n",
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
".gi { color: #00A000 } /* Generic.Inserted */\n",
".go { color: #888888 } /* Generic.Output */\n",
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
".gs { font-weight: bold } /* Generic.Strong */\n",
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
".gt { color: #0044DD } /* Generic.Traceback */\n",
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
".kp { color: #008000 } /* Keyword.Pseudo */\n",
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
".kt { color: #B00040 } /* Keyword.Type */\n",
".m { color: #666666 } /* Literal.Number */\n",
".s { color: #BA2121 } /* Literal.String */\n",
".na { color: #7D9029 } /* Name.Attribute */\n",
".nb { color: #008000 } /* Name.Builtin */\n",
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
".no { color: #880000 } /* Name.Constant */\n",
".nd { color: #AA22FF } /* Name.Decorator */\n",
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n",
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n",
".nf { color: #0000FF } /* Name.Function */\n",
".nl { color: #A0A000 } /* Name.Label */\n",
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
".nv { color: #19177C } /* Name.Variable */\n",
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
".w { color: #bbbbbb } /* Text.Whitespace */\n",
".mb { color: #666666 } /* Literal.Number.Bin */\n",
".mf { color: #666666 } /* Literal.Number.Float */\n",
".mh { color: #666666 } /* Literal.Number.Hex */\n",
".mi { color: #666666 } /* Literal.Number.Integer */\n",
".mo { color: #666666 } /* Literal.Number.Oct */\n",
".sa { color: #BA2121 } /* Literal.String.Affix */\n",
".sb { color: #BA2121 } /* Literal.String.Backtick */\n",
".sc { color: #BA2121 } /* Literal.String.Char */\n",
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
".s2 { color: #BA2121 } /* Literal.String.Double */\n",
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n",
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n",
".sx { color: #008000 } /* Literal.String.Other */\n",
".sr { color: #BB6688 } /* Literal.String.Regex */\n",
".s1 { color: #BA2121 } /* Literal.String.Single */\n",
".ss { color: #19177C } /* Literal.String.Symbol */\n",
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
".fm { color: #0000FF } /* Name.Function.Magic */\n",
".vc { color: #19177C } /* Name.Variable.Class */\n",
".vg { color: #19177C } /* Name.Variable.Global */\n",
".vi { color: #19177C } /* Name.Variable.Instance */\n",
".vm { color: #19177C } /* Name.Variable.Magic */\n",
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"n\">goal_relevance_pairs</span> <span class=\"o\">=</span> <span class=\"p\">[(</span><span class=\"n\">r</span><span class=\"p\">,</span> <span class=\"n\">g</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">g</span> <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">goals</span> <span class=\"k\">if</span> <span class=\"n\">r</span> <span class=\"o\">&gt;</span> <span class=\"mi\">0</span> <span class=\"k\">given</span> <span class=\"n\">r</span> <span class=\"o\">=</span> <span class=\"n\">g</span><span class=\"o\">.</span><span class=\"n\">get_relevance</span><span class=\"p\">(</span><span class=\"n\">world_state</span><span class=\"p\">)]</span> \n",
"</pre></div>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"output(\"\"\"goal_relevance_pairs = [(r, g) for g in self.goals if r > 0 given r = g.get_relevance(world_state)] \"\"\")"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>.hll { background-color: #ffffcc }\n",
".c { color: #408080; font-style: italic } /* Comment */\n",
".err { border: 1px solid #FF0000 } /* Error */\n",
".k { color: #008000; font-weight: bold } /* Keyword */\n",
".o { color: #666666 } /* Operator */\n",
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n",
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n",
".cp { color: #BC7A00 } /* Comment.Preproc */\n",
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n",
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n",
".cs { color: #408080; font-style: italic } /* Comment.Special */\n",
".gd { color: #A00000 } /* Generic.Deleted */\n",
".ge { font-style: italic } /* Generic.Emph */\n",
".gr { color: #FF0000 } /* Generic.Error */\n",
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n",
".gi { color: #00A000 } /* Generic.Inserted */\n",
".go { color: #888888 } /* Generic.Output */\n",
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n",
".gs { font-weight: bold } /* Generic.Strong */\n",
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n",
".gt { color: #0044DD } /* Generic.Traceback */\n",
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n",
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n",
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n",
".kp { color: #008000 } /* Keyword.Pseudo */\n",
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n",
".kt { color: #B00040 } /* Keyword.Type */\n",
".m { color: #666666 } /* Literal.Number */\n",
".s { color: #BA2121 } /* Literal.String */\n",
".na { color: #7D9029 } /* Name.Attribute */\n",
".nb { color: #008000 } /* Name.Builtin */\n",
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n",
".no { color: #880000 } /* Name.Constant */\n",
".nd { color: #AA22FF } /* Name.Decorator */\n",
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n",
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n",
".nf { color: #0000FF } /* Name.Function */\n",
".nl { color: #A0A000 } /* Name.Label */\n",
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n",
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n",
".nv { color: #19177C } /* Name.Variable */\n",
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n",
".w { color: #bbbbbb } /* Text.Whitespace */\n",
".mb { color: #666666 } /* Literal.Number.Bin */\n",
".mf { color: #666666 } /* Literal.Number.Float */\n",
".mh { color: #666666 } /* Literal.Number.Hex */\n",
".mi { color: #666666 } /* Literal.Number.Integer */\n",
".mo { color: #666666 } /* Literal.Number.Oct */\n",
".sa { color: #BA2121 } /* Literal.String.Affix */\n",
".sb { color: #BA2121 } /* Literal.String.Backtick */\n",
".sc { color: #BA2121 } /* Literal.String.Char */\n",
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n",
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n",
".s2 { color: #BA2121 } /* Literal.String.Double */\n",
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n",
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n",
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n",
".sx { color: #008000 } /* Literal.String.Other */\n",
".sr { color: #BB6688 } /* Literal.String.Regex */\n",
".s1 { color: #BA2121 } /* Literal.String.Single */\n",
".ss { color: #19177C } /* Literal.String.Symbol */\n",
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n",
".fm { color: #0000FF } /* Name.Function.Magic */\n",
".vc { color: #19177C } /* Name.Variable.Class */\n",
".vg { color: #19177C } /* Name.Variable.Global */\n",
".vi { color: #19177C } /* Name.Variable.Instance */\n",
".vm { color: #19177C } /* Name.Variable.Magic */\n",
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"n\">goal_relevance_pairs</span> <span class=\"o\">=</span> <span class=\"p\">[(</span><span class=\"n\">r</span><span class=\"p\">,</span> <span class=\"n\">g</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">g</span> <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">goals</span> <span class=\"k\">if</span> <span class=\"p\">(</span><span class=\"n\">r</span><span class=\"p\">:</span><span class=\"o\">=</span><span class=\"n\">g</span><span class=\"o\">.</span><span class=\"n\">get_relevance</span><span class=\"p\">(</span><span class=\"n\">world_state</span><span class=\"p\">))</span> <span class=\"o\">&gt;</span> <span class=\"mi\">0</span><span class=\"p\">]</span>\n",
"</pre></div>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"output(\"\"\"goal_relevance_pairs = [(r, g) for g in self.goals if (r:=g.get_relevance(world_state)) > 0]\"\"\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment