1"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3182],{13890(e,n,s){s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"advanced/override_grammar/extended","title":"extended","description":"Extended Override syntax","source":"@site/versioned_docs/version-1.3/advanced/override_grammar/extended.md","sourceDirName":"advanced/override_grammar","slug":"/advanced/override_grammar/extended","permalink":"/docs/1.3/advanced/override_grammar/extended","draft":false,"unlisted":false,"editUrl":"https://github.com/hydra-ecosystem/hydra/edit/main/website/versioned_docs/version-1.3/advanced/override_grammar/extended.md","tags":[],"version":"1.3","frontMatter":{"id":"extended","sidebar_label":"Extended Override syntax","hide_title":true},"sidebar":"docs","previous":{"title":"Basic Override syntax","permalink":"/docs/1.3/advanced/override_grammar/basic"},"next":{"title":"The Defaults List","permalink":"/docs/1.3/advanced/defaults_list"}}');var t=s(11684),i=s(32435);const d={id:"extended",sidebar_label:"Extended Override syntax",hide_title:!0},l=void 0,a={},c=[{value:"Extended Override syntax",id:"extended-override-syntax",level:2},{value:"Sweeps",id:"sweeps",level:2},{value:"Choice sweep",id:"choice-sweep",level:3},{value:"Glob choice sweep",id:"glob-choice-sweep",level:3},{value:"Range sweep",id:"range-sweep",level:3},{value:"Interval sweep",id:"interval-sweep",level:3},{value:"Tag",id:"tag",level:3},{value:"Reordering lists and sweeps",id:"reordering-lists-and-sweeps",level:2},{value:"sort",id:"sort",level:3},{value:"shuffle",id:"shuffle",level:3},{value:"Type casting",id:"type-casting",level:2},{value:"Casting string to bool",id:"casting-string-to-bool",level:4},{value:"Casting lists",id:"casting-lists",level:4},{value:"Casting dicts",id:"casting-dicts",level:4},{value:"Casting ranges",id:"casting-ranges",level:4},{value:"Conversion matrix",id:"conversion-matrix",level:3}];function o(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"extended-override-syntax",children:"Extended Override syntax"}),"\n",(0,t.jsx)(n.p,{children:"Hydra Overrides supports functions.\nWhen calling a function, one can optionally name parameters. This is following the Python\nconvention of naming parameters."}),"\n",(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Example function"',children:"def func(a:int, b:str) -> bool:\n ...\n\n\n"})})}),(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Calling function"',children:"func(10,foo) # Positional only\nfunc(a=10,b=foo) # Named only\nfunc(10,b=foo) # Mixed\nfunc(a=10,foo) # Error\n"})})})]}),"\n",(0,t.jsxs)(n.p,{children:["Note the lack of quotes in the examples above. Despite some similarities, this is ",(0,t.jsx)(n.strong,{children:"not Python"}),"."]}),"\n",(0,t.jsx)(n.admonition,{type:"important",children:(0,t.jsx)(n.p,{children:"Hydra supports very specific functions. If you would like to have\nanother function added, please file an issue and explain the use case."})}),"\n",(0,t.jsx)(n.h2,{id:"sweeps",children:"Sweeps"}),"\n",(0,t.jsxs)(n.p,{children:["Sweep overrides are used by Sweepers to determine what to do. For example,\none can instruct the Basic Sweeper to sweep over all combinations of the\nranges ",(0,t.jsx)(n.code,{children:"num1=range(0,3)"})," and ",(0,t.jsx)(n.code,{children:"num2=range(0,3)"})," - resulting in ",(0,t.jsx)(n.code,{children:"9"})," jobs, each getting a\ndifferent pair of numbers from ",(0,t.jsx)(n.code,{children:"0"}),", ",(0,t.jsx)(n.code,{children:"1"})," and ",(0,t.jsx)(n.code,{children:"2"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"choice-sweep",children:"Choice sweep"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Signature"',children:'def choice(\n *args: Union[str, int, float, bool, Dict[Any, Any], List[Any], ChoiceSweep]\n) -> ChoiceSweep:\n """\n A choice sweep over the specified values\n """\n'})}),"\n",(0,t.jsx)(n.p,{children:"Choice sweeps are the most common sweeps.\nA choice sweep is described
1in one of two equivalent forms."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Examples"',children:"db=mysql,postgresql # a comma separated list of two or more elements.\ndb=choice(mysql,postgresql) # choice\n"})}),"\n",(0,t.jsx)(n.h3,{id:"glob-choice-sweep",children:"Glob choice sweep"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Signature"',children:'def glob(\n include: Union[List[str], str], exclude: Optional[Union[List[str], str]] = None\n) -> Glob:\n """\n A glob selects from all options in the config group.\n inputs are in glob format. e.g: *, foo*, *foo.\n :param include: a string or a list of strings to use as include globs\n :param exclude: a string or a list of strings to use as exclude globs\n :return: A Glob object\n """\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Assuming the config group ",(0,t.jsx)(n.strong,{children:"schema"})," with the options ",(0,t.jsx)(n.strong,{children:"school"}),", ",(0,t.jsx)(n.strong,{children:"support"})," and ",(0,t.jsx)(n.strong,{children:"warehouse"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Examples"',children:"schema=glob(*) # school,support,warehouse\nschema=glob(*,exclude=support) # school,warehouse\nschema=glob([s*,w*],exclude=school) # support,warehouse\n"})}),"\n",(0,t.jsx)(n.h3,{id:"range-sweep",children:"Range sweep"}),"\n",(0,t.jsx)(n.p,{children:"Unlike Python, Hydra's range can be used with both integer and floating-point numbers.\nIn both cases, the range represents a discrete list of values."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Signature"',children:'def range(\n start: Union[int, float], stop: Optional[Union[int, float]] = None, step: Union[int, float] = 1\n) -> RangeSweep:\n """\n Range is defines a sweeep over a range of integer or floating-point values.\
1n For a positive step, the contents of a range r are determined by the formula\n r[i] = start + step*i where i >= 0 and r[i] < stop.\n For a negative step, the contents of the range are still determined by the formula\n r[i] = start + step*i, but the constraints are i >= 0 and r[i] > stop.\n """\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Examples"',children:"num=range(5) # 0,1,2,3,4\nnum=range(0,5) # 0,1,2,3,4\nnum=range(0,5,2) # 0,2,4\nnum=range(0,10,3.3) # 0.0,3.3,6.6,9.9\nnum=range(-5,step=-1) # 0,-1,-2,-3,-4\n"})}),"\n",(0,t.jsx)(n.h3,{id:"interval-sweep",children:"Interval sweep"}),"\n",(0,t.jsx)(n.p,{children:"An interval sweep represents all the floating point value between two values.\nThis is used by optimizing sweepers like Ax and Nevergrad. The basic sweeper does not support interval."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Signature"',children:'def interval(start: Union[int, float], end: Union[int, float]) -> IntervalSweep:\n """\n A continuous interval between two floating point values.\
1n value=interval(x,y) is interpreted as x <= value < y\n """\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Examples"',children:"interval(1.0,5.0) # 1.0 <= x < 5.0\ninterval(1,5) # 1.0 <= x < 5.0, auto-cast to floats\n"})}),"\n",(0,t.jsx)(n.h3,{id:"tag",children:"Tag"}),"\n",(0,t.jsx)(n.p,{children:"With tags you can add arbitrary metadata to a sweep. The metadata can be used by advanced sweepers."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Signature"',children:'def tag(*args: Union[str, Union[Sweep]], sweep: Optional[Sweep] = None) -> Sweep:\n """\n Tags the sweep with a list of string tags.\n """\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Examples"',children:"tag(log,interval(0,1)) # 1.0 <= x < 1.0, tags=[log]\ntag(foo,bar,interval(0,1)) # 1.0 <= x < 1.0, tags=[foo,bar]\n"})}),"\n",(0,t.jsx)(n.h2,{id:"reordering-lists-and-sweeps",children:"Reordering lists and sweeps"}),"\n",(0,t.jsx)(n.h3,{id:"sort",children:"sort"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Signature"',children:'def sort(\n *args: Union[ElementType, ChoiceSweep, RangeSweep],\n sweep: Optional[Union[ChoiceSweep, RangeSweep]] = None,\n list: Optional[List[Any]] = None,\n reverse: bool = False,\n) -> Any:\n """\n Sort an input list or sweep.\n reverse=True reverses the order\n """\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Examples"',children:"# sweep\nsort(1,3,2) # ChoiceSweep(1,2,3)\nsort(1,3,2,reverse=true) # ChoiceSweep(3,2,1)\nsort(choice(1,2,3)) # ChoiceSweep(1,2,3)\nsort(sweep=choice(1,2,3)) # ChoiceSweep(1,2,3)\nsort(choice(1,2,3),reverse=true) # ChoiceSweep(3,2,1)\nsort(range(10,1)) # range in ascending order\nsort(range(1,10),reverse=true) # range in descending order\n\n# lists\nsort([1,3,2]) # [1,2,3]\nsort(list=[1,3,2]) # [1,2,3]\nsort(list=[1,3,2], reverse=true) # [3,2,1]\n\n# single value returned as is\nsort(1) # 1\n"})}),"\n",(0,t.jsx)(n.h3,{id:"shuffle",children:"shuffle"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Signature"',children:'def shuffle(\n *args: Union[ElementType, ChoiceSweep, RangeSweep],\n sweep: Optional[Union[ChoiceSweep, RangeSweep]] = None,\n list: Optional[List[Any]] = None,\n) -> Union[List[Any], ChoiceSweep, RangeSweep]:\n """\n Shuffle input list or sweep (does not support interval)\n """\n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Examples"',children:"shuffle(a,b,c) # shuffled a,b,c\nshuffle(choice(a,b,c)), shuffle(sweep=choice(a,b,c)) # shuffled choice(a,b,c)\nshuffle(range(1,10)) # shuffled range(1,10)\nshuffle([a,b,c]), shuffle(list=[a,b,c]) # shuffled list [a,b,c]\n"})}),"\n",(0,t.jsx)(n.h2,{id:"type-casting",children:"Type casting"}),"\n",(0,t.jsxs)(n.p,{children:["You can cast values and sweeps to ",(0,t.jsx)(n.code,{children:"int"}),", ",(0,t.jsx)(n.code,{children:"float"}),", ",(0,t.jsx)(n.code,{children:"bool"})," or ",(0,t.jsx)(n.code,{children:"str"}),"."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Example"',children:"int(3.14) # 3 (int)\nint(value=3.14) # 3 (int)\nfloat(10) # 10.0 (float)\nstr(10) # \"10\" (str)\nbool(1) # true (bool)\nfloat(range(1,10)) # range(1.0,10.0)\nstr([1,2,3]) # ['1','2','3']\nstr({a:10}) # {a:'10'}\n"})}),"\n",(0,t.jsx)(n.p,{children:"Below are pseudo code snippets that illustrates the differences between Python's casting and Hydra's casting."}),"\n",(0,t.jsx)(n.h4,{id:"casting-string-to-bool",children:"Casting string to bool"}),"\n",(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Python"',children:"def bool(value: Any) -> bool:\n if isinstance(value, str):\n return len(value) > 0\n else:\n return bool(value)\n\n\n\n\n"})})}),(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Hydra"',children:'def bool(s: str) -> bool:\n if isinstance(value, str):\n if value.lower() == "false":\n return False\n elif value.lower() == "true":\n return True\n else:\n raise ValueError()\n return bool(value)\n'})})})]}),"\n",(0,t.jsx)(n.h4,{id:"casting-lists",children:"Casting lists"}),"\n",(0,t.jsx)(n.p,{children:"Casting lists results in a list where each element is recursively cast.\nFailure to cast an element in the list fails the cast of the list."}),"\n",(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Python"',children:"def cast_int(value: Any):\n if isinstance(value, list):\n raise TypeError()\n else:\n return int(v)\n\n\n"})})}),(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Hydra"',children:"def cast_int(value: Any):\n if isinstance(v, list):\n return list(map(cast_int, v))\n else:\n return int(v)\n\n\n"})})})]}),"\n",(0,t.jsx)(n.h4,{id:"casting-dicts",children:"Casting dicts"}),"\n",(0,t.jsx)(n.p,{children:"Casting dicts results in a dict where values are recursively cast, but keys are unchanged.\nFailure to cast a value in the dict fails the cast of the entire dict."}),"\n",(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Python"',children:"def cast_int(value: Any):\n if isinstance(value, dict):\n raise TypeError()\n else:\n return int(v)\n\n\n"})})}),(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Hydra"',children:"def cast_int(value: Any):\n if isinstance(value, dict):\n return apply_to_values(\n value, cast_int\n )\n else:\n return int(v)\n"})})})]}),"\n",(0,t.jsx)(n.h4,{id:"casting-ranges",children:"Casting ranges"}),"\n",(0,t.jsx)(n.p,{children:"Ranges can be cast to float or int, resulting in start, stop and step being cast and thus the range elements being cast."}),"\n",(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Python"',children:"def cast_int(value: Any):\n if isinstance(value, RangeSweep):\n raise TypeError()\n else:\n return int(v)\n\n\n\n\n"})})}),(0,t.jsx)("div",{className:"col col--6",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:'title="Hydra"',children:"def cast_int(value: Any):\n if isinstance(value, RangeSweep):\n return RangeSweep(\n start=cast_int(value.start),\n stop=cast_int(value.stop),\n step=cast_int(value.step),\n )\n else:\n return int(v)\n"})})})]}),"\n",(0,t.jsx)(n.h3,{id:"conversion-matrix",children:"Conversion matrix"}),"\n",(0,t.jsx)(n.p,{children:"Below is the conversion matrix from various input
1s to all supported types.\nInput are grouped by type."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{}),(0,t.jsx)(n.th,{children:"int()"}),(0,t.jsx)(n.th,{children:"float()"}),(0,t.jsx)(n.th,{children:"str()"}),(0,t.jsx)(n.th,{children:"bool()"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"10"}),(0,t.jsx)(n.td,{children:"10"}),(0,t.jsx)(n.td,{children:"10.0"}),(0,t.jsx)(n.td,{children:"\u201c10\u201d"}),(0,t.jsx)(n.td,{children:"true"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"0"}),(0,t.jsx)(n.td,{children:"0"}),(0,t.jsx)(n.td,{children:"0.0"}),(0,t.jsx)(n.td,{children:"\u201c0\u201d"}),(0,t.jsx)(n.td,{children:"false"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"10.0"}),(0,t.jsx)(n.td,{children:"10"}),(0,t.jsx)(n.td,{children:"10.0"}),(0,t.jsx)(n.td,{children:"\u201c10.0\u201d"}),(0,t.jsx)(n.td,{children:"true"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"0.0"}),(0,t.jsx)(n.td,{children:"0"}),(0,t.jsx)(n.td,{children:"0.0"}),(0,t.jsx)(n.td,{children:"\u201c0.0\u201d"}),(0,t.jsx)(n.td,{children:"false"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"inf"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"inf"}),(0,t.jsx)(n.td,{children:"\u2018inf\u2019"}),(0,t.jsx)(n.td,{children:"true"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"nan"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"nan"}),(0,t.jsx)(n.td,{children:"\u2018nan\u2019"}),(0,t.jsx)(n.td,{children:"true"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"1e6"}),(0,t.jsx)(n.td,{children:"1,000,000"}),(0,t.jsx)(n.td,{children:"1e6"}),(0,t.jsx)(n.td,{children:"\u20181000000.0\u2019"}),(0,t.jsx)(n.td,{children:"true"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"foo"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"foo"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"\u201c\u201d (empty string)"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"\u201c\u201d"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"\u201c10\u201d"}),(0,t.jsx)(n.td,{children:"10"}),(0,t.jsx)(n.td,{children:"10.0"}),(0,t.jsx)(n.td,{children:"\u201c10\u201d"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"\u201c10.0\u201d"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"10.0"}),(0,t.jsx)(n.td,{children:"\u201c10.0\u201d"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"\u201ctrue\u201d"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"\u201ctrue\u201d"}),(0,t.jsx)(n.td,{children:"true"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"\u201cfalse\u201d"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"\u201cfalse\u201d"}),(0,t.jsx)(n.td,{children:"false"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"\u201c[1,2,3]\u201d"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"\u201c[1,2,3]\u201d"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"\u201c{a:10}\u201d"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"\u201c{a:10}\u201d"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"true"}),(0,t.jsx)(n.td,{children:"1"}),(0,t.jsx)(n.td,{children:"1.0"}),(0,t.jsx)(n.td,{children:"\u201ctrue\u201d"}),(0,t.jsx)(n.td,{children:"true"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"false"}),(0,t.jsx)(n.td,{children:"0"}),(0,t.jsx)(n.td,{children:"0.0"}),(0,t.jsx)(n.td,{children:"\u201cfalse\u201d"}),(0,t.jsx)(n.td,{children:"false"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"[]"}),(0,t.jsx)(n.td,{children:"[]"}),(0,t.jsx)(n.td,{children:"[]"}),(0,t.jsx)(n.td,{children:"[]"}),(0,t.jsx)(n.td,{children:"[]"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"[0,1,2]"}),(0,t.jsx)(n.td,{children:"[0,1,2]"}),(0,t.jsx)(n.td,{children:"[0.0,1.0,2.0]"}),(0,t.jsx)(n.td,{children:"[\u201c0\u201d,\u201d1\u201d,\u201d2\u201d]"}),(0,t.jsx)(n.td,{children:"[false,true,true]"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"[1,[2]]"}),(0,t.jsx)(n.td,{children:"[1,[2]]"}),(0,t.jsx)(n.td,{children:"[1.0,[2.0]]"}),(0,t.jsx)(n.td,{children:"[\u201c1\u201d,[\u201c2\u201d]]"}),(0,t.jsx)(n.td,{children:"[true,[true]]"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"[a,1]"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"[\u201ca\u201d,\u201d1\u201d]"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"{}"}),(0,t.jsx)(n.td,{children:"{}"}),(0,t.jsx)(n.td,{children:"{}"}),(0,t.jsx)(n.td,{children:"{}"}),(0,t.jsx)(n.td,{children:"{}"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"{a:10}"}),(0,t.jsx)(n.td,{children:"{a:10}"}),(0,t.jsx)(n.td,{children:"{a:10.0}"}),(0,t.jsx)(n.td,{children:"{a:\u201d10\u201d}"}),(0,t.jsx)(n.td,{children:"{a: true}"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"{a:[0,1,2]}"}),(0,t.jsx)(n.td,{children:"{a:[0,1,2]}"}),(0,t.jsx)(n.td,{children:"{a:[0.0,1.0,2.-]}"}),(0,t.jsx)(n.td,{children:"{a:[\u201c0\u201d,\u201d1\u201d,\u201d2\u201d]}"}),(0,t.jsx)(n.td,{children:"{a:[false,true,true]}"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsxs)(n.td,{children:["{a:10,b",":xyz","}"]}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"{a:\u201d10\u201d,b:\u201dxyz\u201d}"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"choice(0,1)"}),(0,t.jsx)(n.td,{children:"choice(0,1)"}),(0,t.jsx)(n.td,{children:"choice(0.0,1.0)"}),(0,t.jsx)(n.td,{children:"choice(\u201c0\u201d,\u201c1\u201d)"}),(0,t.jsx)(n.td,{children:"choice(false,true)"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"choice(a,b)"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"choice(\u201ca\u201d,\u201db\u201d)"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"choice(1,a)"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"choice(\u201c1\u201d,\u201da\u201d)"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"interval(1.0, 2.0)"}),(0,t.jsx)(n.td,{children:"interval(1, 2)"}),(0,t.jsx)(n.td,{children:"interval(1.0, 2.0)"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"interval(1, 2)"}),(0,t.jsx)(n.td,{children:"interval(1, 2)"}),(0,t.jsx)(n.td,{children:"interval(1.0, 2.0)"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"range(1,10)"}),(0,t.jsx)(n.td,{children:"range(1,10)"}),(0,t.jsx)(n.td,{children:"range(1.0,10.0)"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"range(1.0, 10.0)"}),(0,t.jsx)(n.td,{children:"range(1,10)"}),(0,t.jsx)(n.td,{children:"range(1.0,10.0)"}),(0,t.jsx)(n.td,{children:"error"}),(0,t.jsx)(n.td,{children:"error"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}},32435(e,n,s){s.d(n,{R:()=>d,x:()=>l});var r=s(12888);const t={},i=r.createContext(t);function d(e){const n=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.