{"record":{"id":"0108a813f5f1ad04","repo":"numpy/numpy","slug":"cannot-specify-both-c-and-f-order","errorCode":null,"errorMessage":"Cannot specify both \"C\" and \"F\" order","messagePattern":"Cannot specify both \"C\" and \"F\" order","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"numpy/_core/_asarray.py","lineNumber":114,"sourceCode":"            a,\n            dtype=dtype,\n            requirements=requirements,\n        )\n\n    if not requirements:\n        return asanyarray(a, dtype=dtype)\n\n    requirements = {POSSIBLE_FLAGS[x.upper()] for x in requirements}\n\n    if 'E' in requirements:\n        requirements.remove('E')\n        subok = False\n    else:\n        subok = True\n\n    order = 'A'\n    if requirements >= {'C', 'F'}:\n        raise ValueError('Cannot specify both \"C\" and \"F\" order')\n    elif 'F' in requirements:\n        order = 'F'\n        requirements.remove('F')\n    elif 'C' in requirements:\n        order = 'C'\n        requirements.remove('C')\n\n    arr = array(a, dtype=dtype, order=order, copy=None, subok=subok)\n\n    for prop in requirements:\n        if not arr.flags[prop]:\n            return arr.copy(order)\n    return arr\n\n\n_require_with_like = array_function_dispatch()(require)\n","sourceCodeStart":96,"sourceCodeEnd":131,"githubUrl":"https://github.com/numpy/numpy/blob/e117b3ca4edacf581f440dccfd7f3242f0312afa/numpy/_core/_asarray.py#L96-L131","documentation":"`np.require(a, requirements=...)` validates the requirements list against a fixed flag set. The flags 'C' (C-contiguous) and 'F' (Fortran-contiguous) are mutually exclusive memory layouts, so requesting both simultaneously is impossible for any non-trivial array. NumPy raises ValueError rather than silently picking one.","triggerScenarios":"Calling `np.require(a, requirements=['C','F'])`, `np.require(a, requirements=['C_CONTIGUOUS','F_CONTIGUOUS'])`, or any combination normalizing to both C and F (including passing a set/superset like {'C','F','W'}).","commonSituations":"Building a requirements list programmatically that accidentally includes both flags; misunderstanding that 'C' and 'F' are exclusive; copying requirements from two different call sites.","solutions":["Choose one layout: requirements=['C'] for C-contiguous or requirements=['F'] for Fortran-contiguous.","If you need neither specifically, use 'A' (any) or omit the contiguity requirement.","Validate the requirements set before calling: assert not ({'C','F'} <= set(req))."],"exampleFix":"// before\narr = np.require(a, requirements=['C','F','W'])   # ValueError\n\n// after\narr = np.require(a, requirements=['C','W'])","handlingStrategy":"validation","validationCode":"import numpy as np\nreq = {'C','W'}\nassert not ({'C','F'} <= req), 'C and F contiguity are mutually exclusive'\narr = np.require(a, requirements=list(req))","typeGuard":"def valid_requirements(req) -> bool:\n    s = set(req)\n    return not ({'C','F'} <= s)","tryCatchPattern":"try:\n    arr = np.require(a, requirements=req)\nexcept ValueError as e:\n    if 'C\" and \"F' in str(e):\n        req = [r for r in req if r not in ('F','F_CONTIGUOUS')]\n        arr = np.require(a, requirements=req)\n    else:\n        raise","preventionTips":["Never combine C and F contiguity in requirements.","Build requirements from a validated flag set.","Document memory-layout intent explicitly in the call."],"tags":["memory-layout","validation","require","contiguity"],"analyzedSha":"e117b3ca4edacf581f440dccfd7f3242f0312afa","analyzedAt":"2026-08-07T01:25:31.049Z","schemaVersion":2},"datasetVersion":"2026-08-07T03:17:09.362Z"}