{"id":"891dedb05136bedb","repo":"aio-libs/aiohttp","slug":"unsupported-order-order-r","errorCode":null,"errorMessage":"Unsupported order {order!r}","messagePattern":"Unsupported order (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"aiohttp/payload.py","lineNumber":137,"sourceCode":"                return factory(data, *args, **kwargs)\n        raise LookupError()\n\n    def register(\n        self, factory: PayloadType, type: Any, *, order: Order = Order.normal\n    ) -> None:\n        if order is Order.try_first:\n            self._first.append((factory, type))\n        elif order is Order.normal:\n            self._normal.append((factory, type))\n            if isinstance(type, Iterable):\n                for t in type:\n                    self._normal_lookup[t] = factory\n            else:\n                self._normal_lookup[type] = factory\n        elif order is Order.try_last:\n            self._last.append((factory, type))\n        else:\n            raise ValueError(f\"Unsupported order {order!r}\")\n\n\nclass Payload(ABC):\n    _default_content_type: str = \"application/octet-stream\"\n    _size: int | None = None\n    _consumed: bool = False  # Default: payload has not been consumed yet\n    _autoclose: bool = False  # Default: assume resource needs explicit closing\n\n    def __init__(\n        self,\n        value: Any,\n        headers: (\n            CIMultiDict[str] | dict[str, str] | Iterable[tuple[str, str]] | None\n        ) = None,\n        content_type: None | str | _SENTINEL = sentinel,\n        filename: str | None = None,\n        encoding: str | None = None,\n        **kwargs: Any,","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/aio-libs/aiohttp/blob/c0ef574e29109210e96e652771ae4e7b88615fa4/aiohttp/payload.py#L119-L155","documentation":"Raised by PayloadRegistry.register() when the `order` argument is not one of the Order enum members (try_first, normal, try_last). This is an internal/library-extension error: register() dispatches on the enum value and the final else branch rejects anything unrecognized.","triggerScenarios":"Calling `payload.register(MyFactory, MyType, order=<something>)` where <something> is not an Order enum member — e.g. a raw string like 'first', an int, or None. Only happens when extending aiohttp's payload registry with a custom factory.","commonSituations":"Writing a third-party integration that registers a custom Payload type; passing a string instead of Order.try_first by mistake; typo in the enum member name.","solutions":["Import and use the Order enum: `from aiohttp.payload import Order` and pass `order=Order.try_first`.","Omit the order argument — it defaults to Order.normal which is always valid.","Ensure you are not passing a plain string; compare against Order members."],"exampleFix":"// before\npayload.register(Factory, MyType, order='first')  # -> ValueError\n// after\nfrom aiohttp.payload import Order\npayload.register(Factory, MyType, order=Order.try_first)\n","handlingStrategy":"validation","validationCode":"from aiohttp.payload import Order\nif order not in Order.__members__.values():\n    raise ValueError(f'order must be an Order member, got {order!r}')","typeGuard":"from aiohttp.payload import Order\n\ndef is_valid_order(order) -> bool:\n    return order in Order.__members__.values()","tryCatchPattern":"try:\n    payload.register(Factory, MyType, order=order)\nexcept ValueError:\n    payload.register(Factory, MyType, order=Order.normal)","preventionTips":["Always pass an Order enum member, not a string.","Default to Order.normal when in doubt.","Add a unit test for custom payload registrations."],"tags":["payload","registry","internal","enum"],"analyzedSha":"c0ef574e29109210e96e652771ae4e7b88615fa4","analyzedAt":"2026-08-04T19:51:05.467Z","schemaVersion":2}