pyaccesskit.errors¶
pyaccesskit.errors ¶
Exception and warning hierarchy.
Every exception PyAccessKit raises derives from :class:PyAccessKitError. Low-level COM failures are
translated into specific subclasses; the original pywintypes.com_error is always kept as
__cause__ and summarised in :attr:PyAccessKitError.details, so nothing is lost for debugging.
Several classes also inherit a matching built-in exception (FileNotFoundError, LookupError,
ValueError...) so idiomatic except clauses keep working.
DaoError
dataclass
¶
DaoError(number: int, description: str, source: str)
One entry of DAO's DBEngine.Errors collection.
ErrorDetails
dataclass
¶
ErrorDetails(
hresult: int | None = None,
scode: int | None = None,
number: int | None = None,
source: str | None = None,
description: str | None = None,
dao_errors: tuple[DaoError, ...] = (),
)
Low-level details of the COM error behind a PyAccessKit exception.
Attributes:
| Name | Type | Description |
|---|---|---|
hresult |
int | None
|
The HRESULT returned by |
scode |
int | None
|
The exception's SCODE (for Access/DAO errors |
number |
int | None
|
The Access/DAO error number (e.g. |
source |
str | None
|
Error source, e.g. |
description |
str | None
|
The error text reported by Access/DAO. |
dao_errors |
tuple[DaoError, ...]
|
Snapshot of |
DialogInfo
dataclass
¶
DialogInfo(
title: str,
text: str,
buttons: tuple[str, ...] = (),
action: str = "",
)
A modal dialog that Access showed during an automated call.
PyAccessKitError ¶
PyAccessKitError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: Exception
Base class of every exception raised by PyAccessKit.
Attributes:
| Name | Type | Description |
|---|---|---|
message |
Human-readable description. |
|
operation |
What PyAccessKit was doing, e.g. |
|
details |
COM-level details when the error originated in Access/DAO. |
PyAccessKitWarning ¶
Bases: UserWarning
Base class of PyAccessKit warnings.
AccessNameWarning ¶
Bases: PyAccessKitWarning
A name is legal but likely to cause trouble (reserved word, spaces, special characters...).
AccessDialogWarning ¶
Bases: PyAccessKitWarning
Access showed a dialog that was dismissed automatically (dialog_policy="warn").
EnvironmentProblem ¶
EnvironmentProblem(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: PyAccessKitError
The machine cannot do what was asked (missing software, bitness mismatch...).
EngineUnavailableError ¶
EngineUnavailableError(
message: str,
*,
diagnosis: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: EnvironmentProblem
No usable automation engine for the requested operation.
Attributes:
| Name | Type | Description |
|---|---|---|
diagnosis |
Explanation and advice (installed products, bitness, what to try). |
AccessNotInstalledError ¶
AccessNotInstalledError(
message: str,
*,
diagnosis: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: EngineUnavailableError
Microsoft Access (Access.Application) is not installed or cannot be started.
DaoNotAvailableError ¶
DaoNotAvailableError(
message: str,
*,
diagnosis: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: EngineUnavailableError
In-process DAO (DAO.DBEngine.120) cannot be loaded into this Python process.
AccessRuntimeOnlyError ¶
AccessRuntimeOnlyError(
message: str,
*,
diagnosis: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: EngineUnavailableError
Only the Access Runtime is installed; design features need full Microsoft Access.
SessionError ¶
SessionError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
SessionClosedError ¶
SessionClosedError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
WrongThreadError ¶
WrongThreadError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: SessionError
A session was used from a thread other than the one that created it (COM apartment rule).
CapabilityError ¶
CapabilityError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: SessionError
The operation needs a capability the session does not have (e.g. forms with engine="dao").
ReadOnlyError ¶
ReadOnlyError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
DatabaseError ¶
DatabaseError(
message: str,
*,
path: Path | str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: PyAccessKitError
A problem with the database file itself.
Attributes:
| Name | Type | Description |
|---|---|---|
path |
The database path involved, when known. |
DatabaseNotFoundError ¶
DatabaseNotFoundError(
message: str,
*,
path: Path | str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
DatabaseExistsError ¶
DatabaseExistsError(
message: str,
*,
path: Path | str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: DatabaseError, FileExistsError
The database file already exists (pass overwrite=True to replace it).
DatabaseLockedError ¶
DatabaseLockedError(
message: str,
*,
path: Path | str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
InvalidPasswordError ¶
InvalidPasswordError(
message: str,
*,
path: Path | str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
UnrecognizedFormatError ¶
UnrecognizedFormatError(
message: str,
*,
path: Path | str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: DatabaseError
The file is not an Access database (or is damaged / from an unsupported version).
ObjectError ¶
ObjectError(
message: str,
*,
kind: ObjectKind | None = None,
name: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: PyAccessKitError
A problem with a named database object.
Attributes:
| Name | Type | Description |
|---|---|---|
kind |
Kind of object (table, query, form...). |
|
name |
Object name. |
ObjectNotFoundError ¶
ObjectNotFoundError(
message: str,
*,
kind: ObjectKind | None = None,
name: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
ObjectExistsError ¶
ObjectExistsError(
message: str,
*,
kind: ObjectKind | None = None,
name: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: ObjectError
An object with that name already exists (tables and queries share one namespace).
ObjectInUseError ¶
ObjectInUseError(
message: str,
*,
kind: ObjectKind | None = None,
name: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
SpecError ¶
SpecError(
message: str,
*,
problems: tuple[str, ...] = (),
operation: str | None = None,
)
Bases: PyAccessKitError, ValueError
A specification is invalid. Raised by PyAccessKit before anything is sent to Access.
Attributes:
| Name | Type | Description |
|---|---|---|
problems |
Individual problems (e.g. from Pydantic validation), each |
SchemaError ¶
SchemaError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
RelationshipError ¶
RelationshipError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
IntegrityViolationError ¶
IntegrityViolationError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
QueryError ¶
QueryError(
message: str,
*,
sql: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: PyAccessKitError
A SQL statement or saved query failed.
Attributes:
| Name | Type | Description |
|---|---|---|
sql |
The SQL text involved, when known. |
SqlSyntaxError ¶
SqlSyntaxError(
message: str,
*,
sql: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
MissingParameterError ¶
MissingParameterError(
message: str,
*,
sql: str | None = None,
operation: str | None = None,
details: ErrorDetails | None = None,
)
AccessApplicationError ¶
AccessApplicationError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
AccessDialogError ¶
AccessDialogError(
message: str,
*,
dialogs: tuple[DialogInfo, ...] = (),
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: AccessApplicationError
Access showed a modal dialog that would have blocked automation.
Attributes:
| Name | Type | Description |
|---|---|---|
dialogs |
The dialogs that were observed (title, text, buttons, how they were handled). |
AccessTimeoutError ¶
AccessTimeoutError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: AccessApplicationError
An Access call exceeded call_timeout; the owned Access process was terminated.
AccessProcessDiedError ¶
AccessProcessDiedError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: AccessApplicationError
The Access process exited or was terminated while PyAccessKit was using it.
CleanupError ¶
CleanupError(
message: str, *, errors: tuple[BaseException, ...] = ()
)
Bases: PyAccessKitError
One or more steps failed while closing a session (all remaining steps still ran).
Attributes:
| Name | Type | Description |
|---|---|---|
errors |
The exceptions raised by the failing cleanup steps. |
ComError ¶
ComError(
message: str,
*,
operation: str | None = None,
details: ErrorDetails | None = None,
)
Bases: PyAccessKitError
A COM error PyAccessKit has no more specific translation for (details are preserved).