From 6c3bfcb727472d97d32822f6e67c531d4fce0c85 Mon Sep 17 00:00:00 2001 From: rltest Date: Mon, 23 Oct 2017 18:02:13 +0200 Subject: [PATCH 1/2] Extend Gedcom constructor with encoding, errors and opener arguments for better text encoding management --- gedcom/__init__.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/gedcom/__init__.py b/gedcom/__init__.py index c652829..1303e5c 100644 --- a/gedcom/__init__.py +++ b/gedcom/__init__.py @@ -41,12 +41,18 @@ class Gedcom: - a dict (only elements with pointers, which are the keys) """ - def __init__(self, filepath): + def __init__(self, filepath, + encoding='utf-8', + errors=None, + opener=None): """ Initialize a GEDCOM data object. You must supply a Gedcom file.""" self.__element_list = [] self.__element_dict = {} self.__element_top = Element(-1, "", "TOP", "") - self.__parse(filepath) + self.__parse(filepath, + encoding=encoding, + errors=errors, + opener=opener) def element_list(self): """ Return a list of all the elements in the Gedcom file. @@ -64,10 +70,17 @@ def element_dict(self): return self.__element_dict # Private methods - - def __parse(self, filepath): + def __parse(self, filepath, + encoding='utf-8', + errors=None, + opener=None): """Open and parse file path as GEDCOM 5.5 formatted data.""" - gedcom_file = open(filepath, 'rU') + gedcom_file = open(filepath, + mode = 'rU', + encoding=encoding, + errors=errors, + newline='\r\n', # this is part of gedcom 5.5 spec + opener=opener) line_num = 1 last_elem = self.__element_top for line in gedcom_file: From 0fcedb00a99faf3e6536a69b24c41cbbfa527244 Mon Sep 17 00:00:00 2001 From: rltest Date: Sat, 28 Oct 2017 19:58:56 +0200 Subject: [PATCH 2/2] Default encoding value is None --- gedcom/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gedcom/__init__.py b/gedcom/__init__.py index 1303e5c..785d16b 100644 --- a/gedcom/__init__.py +++ b/gedcom/__init__.py @@ -42,7 +42,7 @@ class Gedcom: """ def __init__(self, filepath, - encoding='utf-8', + encoding=None, errors=None, opener=None): """ Initialize a GEDCOM data object. You must supply a Gedcom file."""