trilium_alchemy.core
¶
This module implements ORM access to Trilium and fundamental note capabilities.
See the User guide for a detailed walkthrough with examples.
Class index¶
Canonical
Interface to Trilium and context in which to store changes to entities. |
Imported
Encapsulates a note. Can be subclassed for custom attribute accessors. |
||
Encapsulates an attribute, a key-value record attached to a note. |
||
Encapsulates a label. |
||
Encapsulates a relation. |
||
Encapsulates a branch, a parent-child association between notes. |
||
Note to use as subclass for declarative notes, i.e. note classes which automatically sync with the corresponding note if it already exists in Trilium. |
||
Reusable collection of attributes and children which can be inherited by a
|
||
Base class for Trilium entities. |
||
Entity state. Maintained automatically based on the user’s updates and object’s current state in Trilium. |
Function index¶
Imported
Adds a |
||
Adds a |
||
Adds a |
||
Adds a |
||
Add |
||
Instantiate provided class and add as child, creating a
|
Exception index¶
Imported
Raised when user attempts to write a field which is read-only. |
||
Raised upon flush when changes in unit of work are invalid or incompatible. |
Symbols¶
- class trilium_alchemy.core.Session(host: str, token: str | None = None, password: str | None = None, default: bool = True)¶
Initialization:
Either
token
orpassword
is required; if both are provided,token
takes precedence.- Parameters:
Aliases:
trilium_alchemy.Session
Interface to Trilium and context in which to store changes to entities.
Changes to entities are tracked as they’re made by the user. The user must then invoke
Session.flush
to commit them.For details and example usage, see Sessions in the user guide.
- property dirty_count: int¶
Number of dirty
BaseEntity
objects.
- property dirty_set: set[BaseEntity]¶
All dirty
BaseEntity
objects.
- property dirty_map: dict[State, set[BaseEntity]]¶
Mapping of state to dirty
BaseEntity
objects in that state.Example usage:
create_set = my_session.dirty_map[State.CREATE]
- property api: trilium_client.DefaultApi¶
ETAPI client object. Used internally and exposed for manual low-level operations. For its documentation, see: https://github.com/mm21/trilium-client
- flush(entities: collections.abc.Iterable[BaseEntity] | None = None)¶
Commits pending changes to Trilium via ETAPI.
If
entities
passed, only flushes those entities and their dependencies.If
entities = None
, flushes all dirty entities.Note
You may equivalently invoke
Entity.flush
to flush anBaseEntity
along with its dependencies.- Parameters:
- entities: collections.abc.Iterable[BaseEntity] | None = None
Entities for which to commit changes, internally processed as a
set
and sorted according to dependencies
- search(query: str, order_by: str | None = None, order_direction: Literal[asc, desc] | None = None, limit: int | None = None, fast_search: bool = False, include_archived_notes: bool = False, ancestor_note: Note | None = None, ancestor_depth: int | None = None, debug: bool = False) list[Note] ¶
Perform note search using query string as described at: https://github.com/zadam/trilium/wiki/Search
- Parameters:
- query: str
Query string
- order_by: str | None = None
Name of the property/label to order search results by
- order_direction: Literal[asc, desc] | None = None
Ascending (
"asc"
) or descending ("desc"
), ascending by default- limit: int | None = None
Limit the number of results to receive
- fast_search: bool = False
Enable fast search (doesn’t search content)
- include_archived_notes: bool = False
Include archived notes
- ancestor_note: Note | None = None
Search only in subtree of provided note
- ancestor_depth: int | None = None
Define how deep in the tree should the notes be searched
- debug: bool = False
Get debug information in the response (search query parsing)
- Returns:
-
List of notes
- backup(name: str)¶
Create backup with provided name, e.g.
now
will writebackup-now.db
.- Parameters:
- name: str
Name of backup to write
- get_day_note(date: datetime.date) Note ¶
Returns a day note for a given date. Gets created if doesn’t exist.
- Parameters:
- date: datetime.date
Date object, e.g.
datetime.date(2023, 7, 5)
- get_week_note(date: datetime.date) Note ¶
Returns a week note for a given date. Gets created if doesn’t exist.
- Parameters:
- date: datetime.date
Date object, e.g.
datetime.date(2023, 7, 5)
- get_month_note(month: str) Note ¶
Returns a month note for a given date. Gets created if doesn’t exist.
- Parameters:
- month: str
Month in the form
yyyy-mm
, e.g.2023-07
- get_year_note(year: str) Note ¶
Returns a year note for a given date. Gets created if doesn’t exist.
- Parameters:
- year: str
Year as string
- get_inbox_note(date: datetime.date) Note ¶
Returns an “inbox” note into which note can be created. Date will be used depending on whether the inbox is a fixed note (identified with
#inbox
label) or a day note in a journal.- Parameters:
- date: datetime.date
Date object, e.g.
datetime.date(2023, 7, 5)
- get_app_info() trilium_client.models.app_info.AppInfo ¶
Returns app info. See https://github.com/mm21/trilium-client/blob/main/docs/AppInfo.md for its definition.
- refresh_note_ordering(note: Note)¶
Refresh ordering of provided note’s children for any connected clients.
Note
This API is automatically invoked after any child branch positions are adjusted. It should rarely be required, but is provided for completeness.
- classmethod login(host: str, password: str) str ¶
Login using a password and get an ETAPI token.
Note
You can implicitly login by passing
password
when creating aSession
. This API should rarely be required, but is provided for completeness.
- logout()¶
Deletes the currently active API token, if this
Session
was created with apassword
rather thantoken
.Warning
Subsequent attempts to invoke ETAPI methods using this
Session
, such as those invoked byflush
, will fail.If this
Session
was instead created with a token, a warning will be generated and no action will be taken. For token-based sessions there’s no corresponding login.
- deregister_default()¶
If this session was registered as default, deregister it. No-op otherwise.