public-method-order

Require behavior classes to define public methods before private helpers.

Message

Define public methods before private helpers in behavior classes.

Settings

SettingDescriptionTypeDefault
class_name_patterns Class name glob patterns to enforce. Defaults to all classes. list ['*']
excluded_class_name_patterns Class name glob patterns to skip before structural safety checks are applied. list ['*Enum', '*Model', '*Record', '*Schema', '*Settings', '*Table']

Valid examples

class Workflow:
    def list_models(self) -> list[str]:
        return []

    def _normalize(self, value: str) -> str:
        return value
Show more
class AiModelsService:
    def list_models(self) -> list[str]:
        return []

    def _normalize(self, value: str) -> str:
        return value
from dataclasses import dataclass

@dataclass
class Workflow:
    value: str

    def _normalize(self) -> str:
        return self.value

    def build(self) -> str:
        return "ok"
class PayloadModel(BaseModel):
    value: str

    def _normalize(self) -> str:
        return self.value

    def build(self) -> str:
        return "ok"
class Workflow:
    @property
    def value(self) -> str:
        return self._value

    def _normalize(self, value: str) -> str:
        return value

    @value.setter
    def value(self, value: str) -> None:
        self._value = self._normalize(value)
from typing import overload

class Workflow:
    @overload
    def build(self, value: str) -> str: ...

    def _normalize(self, value: str) -> str:
        return value

    def build(self, value: str) -> str:
        return self._normalize(value)
from functools import singledispatchmethod

class Workflow:
    @singledispatchmethod
    def render(self, value: object) -> str:
        return str(value)

    def _normalize(self, value: str) -> str:
        return value

    @render.register
    def render_str(self, value: str) -> str:
        return self._normalize(value)
class Workflow:
    def _normalize(self, value: str) -> str:
        return value

    def build(self, value: str) -> str:
        return self._normalize(value)

    def build(self, value: bytes) -> str:
        return value.decode()
class Helper:
    def _normalize(self, value: str) -> str:
        return value

    def build(self) -> str:
        return "ok"

Invalid examples

class Workflow:
    def _normalize(self, value: str) -> str:
        return value

    def list_models(self) -> list[str]:
        return []
Show more
class AiModelsService:
    def _normalize(self, value: str) -> str:
        return value

    def list_models(self) -> list[str]:
        return []