{"id":1444,"library":"dataclasses","title":"dataclasses (Python 3.6 Backport)","description":"The `dataclasses` library is a backport of the standard library `dataclasses` module, designed specifically for Python 3.6. It provides the `@dataclass` decorator and related utilities, enabling simpler creation of data-holding classes without boilerplate. Its current version is 0.8. As it targets a specific, older Python version, its release cadence is stable and infrequent, with no new feature development anticipated.","status":"maintenance","version":"0.8","language":"en","source_language":"en","source_url":"https://github.com/ericvsmith/dataclasses","tags":["backport","python36","dataclasses","data-structures","type-hints"],"install":[{"cmd":"pip install dataclasses","lang":"bash","label":"Install for Python 3.6"}],"dependencies":[],"imports":[{"symbol":"dataclass","correct":"from dataclasses import dataclass"},{"symbol":"field","correct":"from dataclasses import field"}],"quickstart":{"code":"from __future__ import annotations # Recommended for Python 3.6 type hints\nfrom dataclasses import dataclass, field\n\n@dataclass\nclass User:\n    id: int\n    name: str = \"Guest\"\n    email: str | None = None  # Using Union syntax (PEP 604) or typing.Optional\n    tags: list[str] = field(default_factory=list)\n\n# Example usage\nuser1 = User(id=1, name=\"Alice\")\nuser2 = User(id=2, email=\"bob@example.com\")\n\nprint(user1)\nprint(user2)\n\nassert user1.name == \"Alice\"\nassert user2.tags == []","lang":"python","description":"Define a simple data class using the `@dataclass` decorator. Note the `from __future__ import annotations` which is highly recommended for type hints in Python 3.6 to handle forward references and complex types gracefully. Mutable default values for fields should use `default_factory`."},"warnings":[{"fix":"Remove `dataclasses` from your project's dependencies when upgrading to Python 3.7 or newer. The standard library module will be used automatically.","message":"This library is exclusively for Python 3.6. Installing it on Python 3.7 or newer is redundant and can cause subtle issues if you rely on features specific to this backport or expect it to override the standard library module. Python 3.7+ includes `dataclasses` as a built-in module.","severity":"breaking","affected_versions":"Python >=3.7"},{"fix":"Add `from __future__ import annotations` at the top of your module, or use string literal type hints for any forward references or complex generic types.","message":"When using type hints in Python 3.6 with `dataclasses`, `from __future__ import annotations` is highly recommended. Without it, you may encounter `NameError` for forward references or issues with complex type hints (e.g., `list[str]`, `dict[str, int]`). Alternatively, string literal type hints (e.g., `field: 'MyClass'`) can be used.","severity":"gotcha","affected_versions":"Python 3.6"},{"fix":"If these newer features are required, consider upgrading your Python environment to 3.10 or newer. There is no workaround to enable these features in the 3.6 backport.","message":"This backport provides the functionality of `dataclasses` as it existed in Python 3.7. It does not include features introduced in later Python versions, such as `kw_only` or `slots=True` (Python 3.10+).","severity":"gotcha","affected_versions":"All versions of this backport on Python 3.6"}],"env_vars":null,"last_verified":"2026-04-09T00:00:00.000Z","next_check":"2026-07-08T00:00:00.000Z"}