{"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":"Validation in jax.scipy.linalg.invpascal: the inverse Pascal matrix construction has explicit formulas only for the 'symmetric', 'lower', and 'upper' Pascal kinds (defaulting to 'symmetric' when kind is None). Any other kind string fails this guard.","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","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}