labapi.entry.entries.base.Entry#

class labapi.entry.entries.base.Entry(eid: str, data: str, user: User)[source]#

Bases: ABC, Generic

Abstract base class for all entry types on a LabArchives page.

This class provides a common interface for different entry types such as text entries, headers, attachments, and widgets. It uses a generic type parameter T to represent the content type of the entry.

LabArchives does not currently expose an API endpoint for deleting individual entries, so this class intentionally does not provide a delete() method.

Parameters:

T – The type of content stored in the entry (e.g., str for text, Attachment for files).

__init__(eid: str, data: str, user: User)[source]#

Initialize an entry.

Parameters:
  • eid – The unique ID of the entry.

  • user – The authenticated user associated with this entry.

Methods

__init__(eid, data, user)

Initialize an entry.

class_of(part_type)

Return the registered entry class for part_type.

from_part_type(part_type, eid, data, user)

Create an entry instance for a LabArchives part type.

is_registered(part_type)

Return whether an entry class is registered for part_type.

Attributes

content

Return the entry content.

content_type

Return the LabArchives content type identifier for this entry.

id

Return the unique identifier of the entry.

static is_registered(part_type: str) bool[source]#

Return whether an entry class is registered for part_type.

Parameters:

part_type – The LabArchives part type identifier to check.

Returns:

True if a class is registered for this part type, False otherwise.

static class_of(
part_type: str,
) type[Entry[Any]][source]#

Return the registered entry class for part_type.

Parameters:

part_type – The LabArchives part type identifier.

Returns:

The Entry subclass registered for this part type.

Raises:

KeyError – If no class is registered for the specified part type.

static from_part_type(
part_type: str,
eid: str,
data: str,
user: User,
) Entry[Any][source]#

Create an entry instance for a LabArchives part type.

This method takes a part type string and returns the corresponding entry class instance. The part type is normalized before matching.

Parameters:
  • part_type – The type of entry to create (e.g., “heading”, “text entry”, “plain text entry”, “attachment”, “widget entry”).

  • eid – The unique ID of the entry.

  • data – The entry data. For text-based entries, this is the text content. For attachment entries, this is the caption.

  • user – The authenticated user associated with this entry.

Returns:

An entry instance of the appropriate type.

Raises:

NotImplementedError – If the part type is not recognized or implemented.

property id#

Return the unique identifier of the entry.

Returns:

The entry’s ID as a string.

property content_type: str#

Return the LabArchives content type identifier for this entry.

Returns:

A string representing the entry’s type (e.g., “text entry”, “Attachment”).

abstract property content: T#

Return the entry content.

The specific type of the content depends on the entry type (e.g., string for text entries, Attachment for attachments).

Returns:

The content of the entry.