Skip to content

Resources

provide.foundation.errors.resources

TODO: Add module docstring.

Classes

AlreadyExistsError

AlreadyExistsError(
    message: str,
    *,
    resource_type: str | None = None,
    resource_id: str | None = None,
    **kwargs: Any
)

Bases: FoundationError

Raised when attempting to create a resource that already exists.

Parameters:

Name Type Description Default
message str

Error message describing the conflict.

required
resource_type str | None

Optional type of resource.

None
resource_id str | None

Optional resource identifier.

None
**kwargs Any

Additional context passed to FoundationError.

{}

Examples:

>>> raise AlreadyExistsError("User already registered")
>>> raise AlreadyExistsError("Duplicate key", resource_type="user", resource_id="[email protected]")
Source code in provide/foundation/errors/resources.py
def __init__(
    self,
    message: str,
    *,
    resource_type: str | None = None,
    resource_id: str | None = None,
    **kwargs: Any,
) -> None:
    if resource_type:
        kwargs.setdefault("context", {})["exists.type"] = resource_type
    if resource_id:
        kwargs.setdefault("context", {})["exists.id"] = resource_id
    super().__init__(message, **kwargs)

LockError

LockError(
    message: str,
    *,
    lock_path: str | None = None,
    timeout: float | None = None,
    **kwargs: Any
)

Bases: FoundationError

Raised when file lock operations fail.

Parameters:

Name Type Description Default
message str

Error message describing the lock issue.

required
lock_path str | None

Optional path to the lock file.

None
timeout float | None

Optional timeout that was exceeded.

None
**kwargs Any

Additional context passed to FoundationError.

{}

Examples:

>>> raise LockError("Failed to acquire lock")
>>> raise LockError("Lock timeout", lock_path="/tmp/app.lock", timeout=30)
Source code in provide/foundation/errors/resources.py
def __init__(
    self,
    message: str,
    *,
    lock_path: str | None = None,
    timeout: float | None = None,
    **kwargs: Any,
) -> None:
    if lock_path:
        kwargs.setdefault("context", {})["lock.path"] = lock_path
    if timeout is not None:
        kwargs.setdefault("context", {})["lock.timeout"] = timeout
    super().__init__(message, **kwargs)

NotFoundError

NotFoundError(
    message: str,
    *,
    resource_type: str | None = None,
    resource_id: str | None = None,
    **kwargs: Any
)

Bases: FoundationError

Raised when a requested resource cannot be found.

Parameters:

Name Type Description Default
message str

Error message describing what was not found.

required
resource_type str | None

Optional type of resource.

None
resource_id str | None

Optional resource identifier.

None
**kwargs Any

Additional context passed to FoundationError.

{}

Examples:

>>> raise NotFoundError("User not found")
>>> raise NotFoundError("Entity missing", resource_type="user", resource_id="123")
Source code in provide/foundation/errors/resources.py
def __init__(
    self,
    message: str,
    *,
    resource_type: str | None = None,
    resource_id: str | None = None,
    **kwargs: Any,
) -> None:
    if resource_type:
        kwargs.setdefault("context", {})["notfound.type"] = resource_type
    if resource_id:
        kwargs.setdefault("context", {})["notfound.id"] = resource_id
    super().__init__(message, **kwargs)

ResourceError

ResourceError(
    message: str,
    *,
    resource_type: str | None = None,
    resource_path: str | None = None,
    **kwargs: Any
)

Bases: FoundationError

Raised when resource operations fail.

Parameters:

Name Type Description Default
message str

Error message describing the resource issue.

required
resource_type str | None

Optional type of resource (file, network, etc.).

None
resource_path str | None

Optional path or identifier of the resource.

None
**kwargs Any

Additional context passed to FoundationError.

{}

Examples:

>>> raise ResourceError("File not found")
>>> raise ResourceError("Permission denied", resource_type="file", resource_path="/etc/config")
Source code in provide/foundation/errors/resources.py
def __init__(
    self,
    message: str,
    *,
    resource_type: str | None = None,
    resource_path: str | None = None,
    **kwargs: Any,
) -> None:
    if resource_type:
        kwargs.setdefault("context", {})["resource.type"] = resource_type
    if resource_path:
        kwargs.setdefault("context", {})["resource.path"] = resource_path
    super().__init__(message, **kwargs)