Skip to main content

A Gemmail (and Gembox) parser for misfin clients and servers

Reason this release was yanked:

Buggy

Project description

gemmail-python: A Gemmail (and Gembox) Parser for Misfin Clients and Servers

A parser written in python for gemtext, gemmails, and gemboxes, to be used with the Misfin(B) and Misfin(C) formats.

GemMail

Parses the raw metadata and message data transmitted over the wire in the Misfin(B) and Misfin(C) protocols.

Create GemMail

  • GemMail() - creates an empty GemMail
  • createGemMailFromBody(body) - creates GemMail from message body alone (metadata is not passed in)
  • parseGemMail_B(gemmail_b_text) - parses the text in Misfin(B) format. Text should include the metadata.
  • parseGemMail_C(gemmail_c_text) - parses the text in Misfin(C) format. Text should include the 3 lines of metadata at the beginning of the text.

GemMail Values

  • gm.Subject - the Subject of the message. Also included in gm.GemText.
  • gm.Senders - GemMailSender array
  • gm.Receivers - dictionary of addresses as keys, empty tuples as values.
  • gm.Timestamps - datetime array
  • gm.GemText - GemText instance containing the lines of the message body, including the Subject line. Use gm.GemText.string() to convert just the message body to a string.

GemMail Methods

  • copy() - deep copy GemMail to a new value
  • containsSender(address) - checks if address is in senders list. Returns a boolean.
  • prependSender(address, blurb) - prepends a sender to the senders list.
  • removeSender(address) - unimplemented.
  • prependTimestamp(datetime) - prepends datetime value.
  • containsReceiver(address) - checks if address is in recipients list. Returns a boolean.
  • addReceiver(address) - adds a receiver to the recipients list.
  • string_C() - returns a string of the gemmail in Misfin(C) format, ready to be transmitted over the wire using the Misfin(C) protocol.
  • string_B() - returns a string of the gemmail in Misfin(B) format.

Example Usage

from gemmail_python import *

text_misfinC = """clseibold@auragem.letz.dev Christian Lee Seibold

2023-10-04T08:26:32Z
# Message Subject Line

Message body.
"""
gemmail = gemmail_python.parseGemmail_C(text_misfinC)
gemmail.prependSender(sender_address, sender_blurb)
newGemmailString = gemmail.string_B() # Converts to Misfin(B) format for transmission via Misfin(B) protocol

GemBox

Parses a gembox file in Misfin(B) and Misfin(C) formats. Gemboxes are raw gemmail data delimited by the string "\n<=====\n". This format could change in the future.

Create a GemBox

  • GemBox(identifier) - create empty GemBox. Identifier is for programmer's use to identify gemboxes.
  • parseGemBox_B(identifier, textString) - parses gembox file in Misfin(B) format
  • parseGemBox_C(identifier, textString) - parses gembox file in Misfin(C) format

GemBox Values

  • Identifier - an identifier to be used by the programmer
  • Mails - GemMail array

GemBox Methods

  • copy() - deep copy GemBox to a new value
  • appendGemMail(gemmail) - appends a GemMail instance to the Mails array
  • removeGemMail(index) - removes a GemMail instance at the specified index from the Mails array.
  • string_B() - returns a string of the GemBox to be written to a file, in Misfin(B) format.
  • string_C() - returns a string of the GemBox to be written to a file, in Misfin(C) format.

GemText

Parses a Gemtext file (.gmi file) to be used with Gemini or the message body of a Gemmail.

Create a GemText

  • GemText() - empty gemtext
  • parseGemText(text) - parses a gemtext file into a GemText instance

GemText Values

  • firstLevel1Heading - string of first level-1 heading of file. This is also included in the lines array.
  • lines - GemTextLine array

GemText Methods

  • copy() - deep copy GemText to a new value
  • string() - convert GemText instance back to a string.

GemTextLine

A line within a Gemtext file.

Create a GemTextLine

  • GemTextLine(GemTextLineType, text, url)

GemTextLine Values

  • type - GemTextLineType
  • text - string of text, excluding the linetype prefix
  • url - string of url for Link line types

GemTextLine Methods

  • string() - Converts line to a string, including the linetype prefix.

GemTextLineType Enum Values

  • Text - regular text
  • PreformattingToggle - preformat toggle line (```)
  • PreformattedText - text in between preformat toggle lines
  • Link
  • ListItem
  • Heading1
  • Heading2
  • Heading3
  • Quote - aka. Blockquote

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

gemmail-python-1.0.10.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

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

gemmail_python-1.0.10-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file gemmail-python-1.0.10.tar.gz.

File metadata

  • Download URL: gemmail-python-1.0.10.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.2

File hashes

Hashes for gemmail-python-1.0.10.tar.gz
Algorithm Hash digest
SHA256 d5bdbeefc00cd78815932343760bb3e4f90e07519300fc2106272a21d571c9ab
MD5 41f2c24c832b5a18da97a80d4b69b605
BLAKE2b-256 ff8a52af1af3faf3aba17e28f72f13fade99d66ccb31de93b811c548d457fc60

See more details on using hashes here.

File details

Details for the file gemmail_python-1.0.10-py3-none-any.whl.

File metadata

File hashes

Hashes for gemmail_python-1.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 6d66bc8152f0dc1e012a785229234fb37ef47abba6a8f0a7242b0da474c4aace
MD5 ac13fca7ec2068e1a3eb1fb4f5903645
BLAKE2b-256 b3db0b5a64e3b7dcfc32d2f97d29942577d3c7f783baf4e01b3d3cde4c543d12

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