{"record":{"id":"77f57371f77179fb","repo":"jax-ml/jax","slug":"expected-kind-to-be-one-of-valid-kind-got-kin","errorCode":null,"errorMessage":"Expected kind to be one of: {valid_kind}; got {kind}","messagePattern":"Expected kind to be one of: (.+?); got (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"jax/_src/scipy/linalg.py","lineNumber":3080,"sourceCode":"    >>> with jnp.printoptions(precision=3, suppress=True):\n    ...   print(jax.scipy.linalg.invpascal(4, kind=\"lower\"))\n    ...   print(jax.scipy.linalg.invpascal(5))\n    [[ 1. -0.  0. -0.]\n     [-1.  1. -0.  0.]\n     [ 1. -2.  1. -0.]\n     [-1.  3. -3.  1.]]\n    [[  5. -10.  10.  -5.   1.]\n     [-10.  30. -35.  19.  -4.]\n     [ 10. -35.  46. -27.   6.]\n     [ -5.  19. -27.  17.  -4.]\n     [  1.  -4.   6.  -4.   1.]]\n  \"\"\"\n  if kind is None:\n    kind = \"symmetric\"\n\n  valid_kind = [\"symmetric\", \"lower\", \"upper\"]\n  if kind not in valid_kind:\n    raise ValueError(f\"Expected kind to be one of: {valid_kind}; got {kind}\")\n\n  a = jnp.arange(n, dtype=dtypes.default_float_dtype())\n  i = a[:, None]\n  j = a[None, :]\n  # Lower-triangular inverse: (-1)^(i-j) * binom(i, j).\n  L_inv = ((-1.0) ** (i - j)) * _binom(i, j)\n\n  if kind == \"lower\":\n    return L_inv\n  if kind == \"upper\":\n    return L_inv.T\n  return jnp.dot(L_inv.T, L_inv)\n\n\n@jit(static_argnames=(\"n\", \"full\"))\ndef helmert(n: int, full: bool = False) -> Array:\n  r\"\"\"Construct a Helmert matrix.\n","sourceCodeStart":3062,"sourceCodeEnd":3098,"githubUrl":"https://github.com/jax-ml/jax/blob/1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb/jax/_src/scipy/linalg.py#L3062-L3098","documentation":"Same validation as 3400 but in a sibling function (inverse Pascal-type generator): `kind` must be 'symmetric', 'lower', or 'upper'. JAX throws eagerly with the list of valid values.","triggerScenarios":"Calling the inverse-matrix function with an invalid kind string (typo, wrong case, unsupported value like 'upper-triangular').","commonSituations":"Copied scipy snippets with different naming; programmatic kind selection that can emit '' or None-adjacent values.","solutions":["Use exactly 'symmetric', 'lower', or 'upper'","Whitelist-validate kind before calling if it is user-supplied"],"exampleFix":"# before\nkind = 'LOW'\nlinalg.inv_pascal(n, kind=kind)\n# after\nkind = 'lower'\nlinalg.inv_pascal(n, kind=kind)","handlingStrategy":"validation","validationCode":"if kind not in ('symmetric','lower','upper'): raise ValueError(kind)","typeGuard":"def is_valid_kind(k: str) -> bool: return k in ('symmetric', 'lower', 'upper')","tryCatchPattern":null,"preventionTips":["Reuse the same validated kind constant across pascal/inv_pascal calls"],"tags":["jax","scipy","linalg","argument-validation"],"backgroundTag":"invalid-enum-argument","analyzedSha":"1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb","analyzedAt":"2026-08-27T09:53:25.647Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}