18
18
from xml .etree .ElementTree import Element , SubElement , Comment , ElementTree
19
19
20
20
__license__ = "MIT"
21
- __version__ = '2.0.0 '
21
+ __version__ = '2.0.1 '
22
22
23
23
# define log output
24
24
logging .basicConfig (format = '%(levelname)s: %(message)s' )
@@ -159,9 +159,7 @@ def createFileDesc(config):
159
159
160
160
def createCorrespondent (nameString ):
161
161
if letter [nameString ]:
162
- defaultElement = 'name'
163
162
correspondents = []
164
- personIDs = []
165
163
# Turning the cells of correspondent names and their IDs into lists since cells
166
164
# can contain various correspondents split by an extra delimiter.
167
165
# In that case it is essential to be able to call each by their index.
@@ -170,15 +168,15 @@ def createCorrespondent(nameString):
170
168
try :
171
169
personIDs = letter [nameString + "ID" ].split (subdlm )
172
170
except KeyError :
173
- defaultElement = 'persName'
171
+ personIDs = []
174
172
else :
175
173
persons = [letter [nameString ]]
176
174
try :
177
175
personIDs = [letter [nameString + "ID" ]]
178
176
except KeyError :
179
- defaultElement = 'persName'
177
+ personIDs = []
180
178
for index , person in enumerate (persons ):
181
- correspondent = Element (defaultElement )
179
+ correspondent = Element ('persName' )
182
180
person = str (person ).strip ()
183
181
# assigning authority file IDs to their correspondents if provided
184
182
if (index < len (personIDs )) and personIDs [index ]:
@@ -225,7 +223,9 @@ def createCorrespondent(nameString):
225
223
except UnicodeEncodeError :
226
224
print (authID )
227
225
else :
228
- elementset = ('DifferentiatedPerson' ,
226
+ corporatelike = (
227
+ 'Corporate' , 'Company' , 'ReligiousAdministrativeUnit' )
228
+ personlike = ('DifferentiatedPerson' ,
229
229
'Royal' , 'Family' , 'Legendary' )
230
230
gndrdf_root = gndrdf .getroot ()
231
231
latestID = gndrdf_root [0 ].get (
@@ -235,12 +235,12 @@ def createCorrespondent(nameString):
235
235
'%s returns new ID %s' , authID , latestID )
236
236
rdftype = gndrdf_root .find (
237
237
'.//rdf:type' , ns ).get ('{http://www.w3.org/1999/02/22-rdf-syntax-ns#}resource' )
238
- if 'Corporate' in rdftype :
238
+ if any ( entity in rdftype for entity in corporatelike ) :
239
239
correspondent = Element ('orgName' )
240
- elif any (entity in rdftype for entity in elementset ):
240
+ elif any (entity in rdftype for entity in personlike ):
241
241
correspondent = Element ('persName' )
242
242
else :
243
- correspondent = Element ( 'name' )
243
+ authID = ''
244
244
if 'UndifferentiatedPerson' in rdftype :
245
245
logging .warning (
246
246
'%sID in line %s links to undifferentiated Person' , nameString , table .line_num )
@@ -268,7 +268,7 @@ def createCorrespondent(nameString):
268
268
else :
269
269
logging .error (
270
270
'No proper authority record in line %s for %s' , table .line_num , nameString )
271
- if authID and correspondent . tag != "name" :
271
+ if authID :
272
272
correspondent .set ('ref' , authID )
273
273
else :
274
274
logging .debug ('ID for "%s" missing in line %s' ,
0 commit comments