Skip to content

Commit

Permalink
[DayOne] support moderm plistlib (#909)
Browse files Browse the repository at this point in the history
The API of the standard library's `plistlib` changed with version 3.4 of Python, and the old API is being removed in Python 3.9. In other words, the new API is supported by all version of Python we current support (3.6 to 3.8).

See https://docs.python.org/3.4/library/plistlib.html for more details.
  • Loading branch information
MinchinWeb committed Apr 18, 2020
1 parent 5c91296 commit 2bc545a
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions jrnl/DayOneJournal.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from datetime import datetime
import time
import fnmatch
from pathlib import Path
import plistlib
import pytz
import uuid
Expand Down Expand Up @@ -43,7 +44,7 @@ def open(self):
for filename in filenames:
with open(filename, "rb") as plist_entry:
try:
dict_entry = plistlib.readPlist(plist_entry)
dict_entry = plistlib.load(plist_entry, fmt=plistlib.FMT_XML)
except self.PLIST_EXCEPTIONS:
pass
else:
Expand Down Expand Up @@ -84,8 +85,10 @@ def write(self):
if not hasattr(entry, "uuid"):
entry.uuid = uuid.uuid1().hex

filename = os.path.join(
self.config["journal"], "entries", entry.uuid.upper() + ".doentry"
fn = (
Path(self.config["journal"])
/ "entries"
/ (entry.uuid.upper() + ".doentry")
)

entry_plist = {
Expand All @@ -99,7 +102,9 @@ def write(self):
for tag in entry.tags
],
}
plistlib.writePlist(entry_plist, filename)
# plistlib expects a binary object
with fn.open(mode="wb") as f:
plistlib.dump(entry_plist, f, fmt=plistlib.FMT_XML, sort_keys=False)
for entry in self._deleted_entries:
filename = os.path.join(
self.config["journal"], "entries", entry.uuid + ".doentry"
Expand Down

0 comments on commit 2bc545a

Please sign in to comment.