Skip to main content

gemtext - A simple library for parsing the Gemtext markup language

Introduction

gemtext is a small and simple library that provides code for parsing the hypertext markup language of the Gemini project.

Installation

gemtext is available from pypi and can be installed with your package installer of choice.

With pip:

pip install gemtext

With uv:

uv add gemtext

Quick start

The library provides a single main parsing class called Gemtext. It is initialised with a body of gemtext and the content property provides a list of lines, typed with their parsed type, each having its own relevant properties.

A very minimal parser might look like this:

import fileinput
from gemtext import Gemtext

def parse_input() -> None:
    for gem_line in Gemtext("".join(fileinput.input())).content:
        print(f"{gem_line!r}")

The library contains a simple test command line tool, which can be accessed either via the Python -m switch, or depending on your environment, via the gemtext command. For example, given this content of a file called example.gmi:

# This is a heading

## This is a sub-heading

### This is a sub-sub-heading

=> gemini://davep.gemcities.com/ Dave's test capsule

> This is a deep and meaningful quote

```
Here is some pre-formatted text.

Here's some more of that text.
```

* One
* Two
* Three

The gemtext command (or python -m gemtext) would produce:

$ gemtext example.gmi
Heading(content='This is a heading', level=1)
Paragraph(content='')
Heading(content='This is a sub-heading', level=2)
Paragraph(content='')
Heading(content='This is a sub-sub-heading', level=3)
Paragraph(content='')
Link(content="Dave's test capsule", uri='gemini://davep.gemcities.com/')
Paragraph(content='')
Quote(content='This is a deep and meaningful quote')
Paragraph(content='')
PreFormatted(content="Here is some pre-formatted text.\n\nHere's some more of that text.")
Paragraph(content='')
ListItem(content='One')
ListItem(content='Two')
ListItem(content='Three')

See the main documentation for the full API.

Download files

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

Source Distribution

gemtext-1.1.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

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

gemtext-1.1.0-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file gemtext-1.1.0.tar.gz.

File metadata

  • Download URL: gemtext-1.1.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for gemtext-1.1.0.tar.gz
Algorithm Hash digest
SHA256 d8e0d89994c3d462c416886280b2ff3abfbcd57e3230b8b449bc7fee3b7c3535
MD5 01935f9d102f988b36974726e6cd7fd5
BLAKE2b-256 5d0e42d7dba3d43ba12565838d674fecee40db12cd15be92ac58a7309bea7218

See more details on using hashes here.

File details

Details for the file gemtext-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: gemtext-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for gemtext-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 87483b8c4a99f70fb3bb59fe6c05398de7a50fd234ae40ff25be843dda814e56
MD5 2e26e6efe9f6568dd6f3102702d60100
BLAKE2b-256 92d76ab676a86f5a2642925e82cc0dd0d5608a759b171c17e10ae6a2a655e3f9

See more details on using hashes here.

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