Files
insights/.semgrep/rules/devex/prefer-frozen-dataclasses.py
zeekay bc4ddf332b chore: rebase the tree onto upstream master fa1a9a60
Mechanically re-derived: bin/debrand runs over a fresh import of
posthog/posthog@fa1a9a60d4 (2026-08-06).
The pipeline (.hanzo/workflows), the Dockerfiles and bin/docker*
entrypoints, compose files, LLM.md and the squashed initial migration
are restored from the shipped tree, same as the previous import.

The prune's import-closure guard kept 21 products the new core now
imports; dropping them is a refactor now, recorded rather than forced.
2026-08-06 01:25:36 -07:00

85 lines
1.6 KiB
Python

# Test cases for prefer-frozen-dataclasses.
# ruff: noqa
import dataclasses
from dataclasses import dataclass
from insights.dataclasses import frozen
# ruleid: prefer-frozen-dataclasses
@dataclass
class BareDecorator:
value: int
# ruleid: prefer-frozen-dataclasses
@dataclass()
class EmptyCall:
value: int
# ruleid: prefer-frozen-dataclasses
@dataclass(slots=True, kw_only=True)
class FlagsButNoFrozenChoice:
value: int
# ruleid: prefer-frozen-dataclasses
@dataclasses.dataclass
class BareModuleAttribute:
value: int
# ruleid: prefer-frozen-dataclasses
@dataclasses.dataclass(kw_only=True)
class ModuleAttributeNoFrozenChoice:
value: int
# ok: prefer-frozen-dataclasses
@frozen
class HouseDefault:
value: int
# ok: prefer-frozen-dataclasses
@frozen(slots=False)
class HouseDefaultWithOverride:
value: int
# ok: prefer-frozen-dataclasses
@dataclass(frozen=True, kw_only=True, slots=True)
class ExplicitFrozen:
value: int
# ok: prefer-frozen-dataclasses
@dataclass(frozen=False)
class ExplicitlyMutable:
value: int
# ok: prefer-frozen-dataclasses
@dataclasses.dataclass(frozen=True)
class ExplicitFrozenModuleAttribute:
value: int
# The pydantic import below excludes everything after it, mirroring real files
# where pydantic's dataclass is imported at the top.
from pydantic.dataclasses import dataclass # noqa: E402
# ok: prefer-frozen-dataclasses
@dataclass
class PydanticDataclass:
value: int
# The module-attribute form is stdlib even in a pydantic-importing file.
# ruleid: prefer-frozen-dataclasses
@dataclasses.dataclass
class StdlibAfterPydanticImport:
value: int