{"record":{"id":"335b25927131b8aa","repo":"jax-ml/jax","slug":"expected-assume-a-to-be-one-of-valid-assume-a-g","errorCode":null,"errorMessage":"Expected assume_a to be one of {valid_assume_a}; got {assume_a!r}","messagePattern":"Expected assume_a to be one of (.+?); got (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"jax/_src/scipy/linalg.py","lineNumber":1266,"sourceCode":"    A simple 3x3 linear system:\n\n    >>> A = jnp.array([[1., 2., 3.],\n    ...                [2., 4., 2.],\n    ...                [3., 2., 1.]])\n    >>> b = jnp.array([14., 16., 10.])\n    >>> x = jax.scipy.linalg.solve(A, b)\n    >>> x\n    Array([1., 2., 3.], dtype=float32)\n\n    Confirming that the result solves the system:\n\n    >>> jnp.allclose(A @ x, b)\n    Array(True, dtype=bool)\n  \"\"\"\n  del overwrite_a, overwrite_b, debug, check_finite  #unused\n  valid_assume_a = ['gen', 'sym', 'her', 'pos']\n  if assume_a not in valid_assume_a:\n    raise ValueError(f\"Expected assume_a to be one of {valid_assume_a}; got {assume_a!r}\")\n  return _solve(a, b, assume_a, lower)\n\n@jit(static_argnames=('trans', 'lower', 'unit_diagonal'))\ndef _solve_triangular(a: ArrayLike, b: ArrayLike, trans: int | str,\n                      lower: bool, unit_diagonal: bool) -> Array:\n  if trans == 0 or trans == \"N\":\n    transpose_a, conjugate_a = False, False\n  elif trans == 1 or trans == \"T\":\n    transpose_a, conjugate_a = True, False\n  elif trans == 2 or trans == \"C\":\n    transpose_a, conjugate_a = True, True\n  else:\n    raise ValueError(f\"Invalid 'trans' value {trans}\")\n\n  a, b = promote_dtypes_inexact(jnp.asarray(a), jnp.asarray(b))\n\n  if b.ndim == 1:\n    signature = \"(n,n),(n)->(n)\"","sourceCodeStart":1248,"sourceCodeEnd":1284,"githubUrl":"https://github.com/jax-ml/jax/blob/1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb/jax/_src/scipy/linalg.py#L1248-L1284","documentation":"jax.scipy.linalg.solve validates the assume_a argument, which tells it what matrix structure to exploit: 'gen' (general), 'sym' (symmetric), 'her' (hermitian), or 'pos' (positive definite). Any other string — including the older JAX spelling 'posdef' that newer JAX versions dropped — raises ValueError.","triggerScenarios":"Calling jax.scipy.linalg.solve(a, b, assume_a='posdef') or assume_a='cholesky' (both accepted by some other libraries) or a typo.","commonSituations":"Code written against older JAX or other frameworks where 'posdef' was valid; JAX renamed it to 'pos', breaking version upgrades.","solutions":["Replace assume_a='posdef' with assume_a='pos'","Use only 'gen', 'sym', 'her', or 'pos'","Pin or grep your codebase for 'posdef' when upgrading JAX versions"],"exampleFix":"// before\nx = jax.scipy.linalg.solve(a, b, assume_a='posdef')\n// after\nx = jax.scipy.linalg.solve(a, b, assume_a='pos')","handlingStrategy":"validation","validationCode":"_VALID = {'gen','sym','her','pos'}\nassume_a = {'posdef': 'pos'}.get(assume_a, assume_a)\nassert assume_a in _VALID","typeGuard":"null","tryCatchPattern":null,"preventionTips":["Never assume_a='posdef' in JAX; it was renamed to 'pos'","Grep for 'posdef' when upgrading JAX"],"tags":["jax","linalg","solve","argument-validation","version-migration"],"backgroundTag":"invalid-argument-value","analyzedSha":"1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb","analyzedAt":"2026-08-27T09:53:25.647Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}