SkillAgentSearch skills...

Orgparse

Python module for reading Emacs org-mode files

Install / Use

/learn @karlicoss/Orgparse
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

=========================================================== orgparse - Python module for reading Emacs org-mode files

  • Documentation (Read the Docs) <https://orgparse.readthedocs.org>_
  • Repository (at GitHub) <https://github.com/karlicoss/orgparse>_
  • PyPI <https://pypi.python.org/pypi/orgparse>_
  • conda-forge <https://anaconda.org/conda-forge/orgparse>_

Install

You can install orgpase via PyPI

.. code-block:: console

pip install orgparse

or via conda-forge

.. code-block:: console

conda install orgparse -c conda-forge

Usage

There are pretty extensive doctests if you're interested in some specific method. Otherwise here are some example snippets:

Load org node ^^^^^^^^^^^^^ ::

from orgparse import load, loads

load('PATH/TO/FILE.org')
load(file_like_object)

loads('''
* This is org-mode contents
  You can load org object from string.
** Second header
''')

Traverse org tree ^^^^^^^^^^^^^^^^^

root = loads(''' ... * Heading 1 ... ** Heading 2 ... *** Heading 3 ... ''') for node in root[1:]: # [1:] for skipping root itself ... print(node)

  • Heading 1 ** Heading 2 *** Heading 3

h1 = root.children[0] h2 = h1.children[0] h3 = h2.children[0] print(h1)

  • Heading 1

print(h2) ** Heading 2 print(h3) *** Heading 3 print(h2.get_parent())

  • Heading 1

print(h3.get_parent(max_level=1))

  • Heading 1

Accessing node attributes ^^^^^^^^^^^^^^^^^^^^^^^^^

root = loads(''' ... * DONE Heading :TAG: ... CLOSED: [2012-02-26 Sun 21:15] SCHEDULED: <2012-02-26 Sun> ... CLOCK: [2012-02-26 Sun 21:10]--[2012-02-26 Sun 21:15] => 0:05 ... :PROPERTIES: ... :Effort: 1:00 ... :OtherProperty: some text ... :END: ... Body texts... ... ''') node = root.children[0] node.heading 'Heading' node.scheduled OrgDateScheduled((2012, 2, 26)) node.closed OrgDateClosed((2012, 2, 26, 21, 15, 0)) node.clock [OrgDateClock((2012, 2, 26, 21, 10, 0), (2012, 2, 26, 21, 15, 0))] bool(node.deadline) # it is not specified False node.tags == set(['TAG']) True node.get_property('Effort') 60 node.get_property('UndefinedProperty') # returns None node.get_property('OtherProperty') 'some text' node.body ' Body texts...'

Project status

Project is maintained by @karlicoss (myself).

For my personal use, orgparse mostly has all features I need, so there hasn't been much active development lately.

However, contributions are always welcome! Please provide tests along with your contribution if you're fixing bugs or adding new functionality.

View on GitHub
GitHub Stars423
CategoryDevelopment
Updated3d ago
Forks46

Languages

Python

Security Score

100/100

Audited on Apr 2, 2026

No findings