Skip to content

pyaccesskit.schema.names

pyaccesskit.schema.names

Access naming rules, name comparison, identifier quoting and name linting.

Hard rules (violations raise :class:~pyaccesskit.errors.SpecError) follow Microsoft's Guidelines for naming fields, controls, and objects: at most 64 characters; no period, exclamation point, accent grave or brackets; no leading space; no control characters.

Soft rules (violations emit :class:~pyaccesskit.errors.AccessNameWarning) flag names that are legal but cause trouble later: reserved words, spaces/special characters, names that shadow common form properties.

check_name

check_name(name: object, *, what: str = 'name') -> str

Validate name against Access's hard naming rules and return it unchanged.

Parameters:

Name Type Description Default
name object

The candidate name.

required
what str

What is being named, used in error messages ("table name"...).

'name'

Raises:

Type Description
SpecError

If the name is not a legal Access object name.

lint_name

lint_name(name: str, *, what: str = 'name') -> list[str]

Return human-readable warnings for a legal name that is likely to cause problems.

warn_name

warn_name(
    name: str, *, what: str = "name", stacklevel: int = 3
) -> None

Emit an :class:AccessNameWarning for every soft-rule problem found by :func:lint_name.

name_key

name_key(name: str) -> str

Key for case-insensitive name comparison (Access object names are case-insensitive).

names_equal

names_equal(left: str, right: str) -> bool

Whether two Access names refer to the same object.

quote_identifier

quote_identifier(name: str) -> str

Bracket-quote a name for Access SQL and expressions: Order Details → [Order Details].