Skip to main content

Library for Managing your Obsidian Vault

Project description

OVault

A python library for accessing and editing your Obsidian vault.

Check out the examples!

Install

pip install ovault

or locally

git pull https://github.com/BalderHolst/ovault
cd ovault
pip install .

Example

import ovault

 # Open a vault at a given path
vault = ovault.Vault("test-vaults/simple_vault")

print()
print("Vault Path  :", vault.path)
print("Notes       :", len(vault.notes()))
print("Attachments :", len(vault.attachments()))
print("Tags        :", sorted(vault.tags()))
print()

# Get the note named 'first_note'
note = vault.note("first_note")

print("Note Name   :", note.name)
print("Note Path   :", note.path)
print("Note Tokens :", note.tokens())

Output:


Vault Path  : /home/balder/projects/ovault/test-vaults/simple_vault
Notes       : 11
Attachments : 0
Tags        : ['callout4youtag', 'frontmatter-tag1', 'frontmatter-tag2', 'linksaregood']

Note Name   : first_note
Note Path   : first_note.md
Note Tokens : [Header(# FIRST NOTE!), Text(Wuhuuuuuuuuuuu!Thi...), InternalLink(second note), Text(.Takes a look at t...), InternalLink(sub/todo), Text()]

Features

Vault Management

Indexing
  • Indexing: Automatically indexes all notes and attachments within the vault upon initialization.
  • Ignored Files: Respects and parses .vault-ignore files to exclude specified paths during indexing.
  • Dangling Links: Identify and list links within your notes that point to non-existent files.

Note Handling

Access & Properties
  • Access Notes & Attachments: Retrieve all notes or attachments in the vault as Python objects.
  • Frontmatter Extraction: Manipulate YAML frontmatter from notes.
Modification
  • Dynamic Note Modification: Programmatically insert or replace parts of a note

Tag Management

Querying Tags
  • List All Tags: Get a complete list of tags present in your vault.
  • Filter by Tag: Retrieve all notes associated with a specific tag.

Markdown Parsing & Tokenization

Token Representation
  • Rich Token Representation: Notes are parsed into a detailed stream of Token objects, representing various markdown elements.
  • Available Tokens:
    • Plain Text: This is text
    • Headers: (# Heading)
    • Internal Links: ([[Note Name]], ![[Image.png]])
    • External Links: ([link text](url), ![image alt](url))
    • Tags: (#tag)
    • Code Blocks: (fenced code, inline code)
    • Quotes: (> Quote)
    • Math: ($inline$ and $$display$$ LaTeX)
    • Dividers: (---)
    • Callouts: (> [!type] Title)
    • Frontmatter: (YAML metadata)
    • List: - item 1\n- item 2
    • NumericList: 1. first\n2. second
    • CheckList: - [x] done\n- [ ] not done
    • TemplaterCommand: (<% code goes here %>)

See lexer/tokens.rs for token definitions.

Contributing

I would be more than happy if anyone finds this useful enough to add to, or modify this code.

Development

Install ovault and development dependencies with

pip install -e ".[dev]"

or use the nix flake

nix develop

Build for Testing

maturin develop --release --features python

Test

./test.sh

Build Documentation

./docs/build.py

Release

  1. Bump version in Cargo.toml
  2. Commit change and push
  3. Merge dev into main and push
  4. Create a git tag with the same version: git tag <version>
  5. Push new tag: git push --tags

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ovault-0.0.5-cp37-abi3-manylinux_2_34_x86_64.whl (697.7 kB view details)

Uploaded CPython 3.7+manylinux: glibc 2.34+ x86-64

File details

Details for the file ovault-0.0.5-cp37-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ovault-0.0.5-cp37-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f6c716fd3d1c42606be3abb58a52936e39423249e495ecfa318d8eae0479ac69
MD5 7401c22250f187c25b88ebf23627e808
BLAKE2b-256 1012f367a7c6a2bb5f213825f44f1cc888c3c31aa87e5ebf77f4f858bc07b831

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovault-0.0.5-cp37-abi3-manylinux_2_34_x86_64.whl:

Publisher: release.yaml on BalderHolst/ovault

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page