1SUFFIX_NOT_ACRONYMS = {
2 'dr',
3 'esq',
4 'esquire',
5 'jr',
6 'jnr',
7 'junior',
8 'sr',
9 'snr',
10 '2',
11 'i',
12 'ii',
13 'iii',
14 'iv',
15 'v',
16 # Bare, not '(ret)'/'(vet)': moved here from literal parenthesized
17 # entries in SUFFIX_ACRONYMS. parse_nicknames()'s handle_match() now
18 # strips parens/quotes before this set is consulted, so the bare form
19 # is correct -- do not re-add the parenthesized form, that would
20 # silently reintroduce the #111 bug (parenthesized "(Ret)" matching
21 # literally instead of going through nickname/suffix disambiguation).
22 'ret',
23 'vet',
24}
25"""
26
27Post-nominal pieces that are not acronyms. The parser does not remove periods
28when matching against these pieces.
29
30"""
31SUFFIX_ACRONYMS_AMBIGUOUS = {
32 # Suffix acronyms that also commonly work as given-name nicknames on
33 # their own (e.g. "Ed", "JD"). Read only by HumanName.parse_nicknames()
34 # when deciding whether parenthesized/quoted content is a nickname or a
35 # suffix -- content matching one of these stays a nickname rather than
36 # being reclassified as a suffix, since that's the more common reading
37 # in ambiguous, delimiter-only context.
38 #
39 # When adding a new entry to SUFFIX_ACRONYMS, also add it here only if
40 # the exact letter sequence could plausibly be someone's given name or
41 # common nickname on its own (e.g. 'jd', 'ed'). Unambiguous
42 # certifications/degrees (e.g. 'mba', 'cpa', 'phd') don't need an entry.
43 'ed',
44 'jd',
45}
46"""
47
48Acronym suffixes from SUFFIX_ACRONYMS that also plausibly collide with a
49common given-name nickname. Not a partition of SUFFIX_ACRONYMS -- a small,
50standalone exception list consulted only by parse_nicknames().
51
52"""
53SUFFIX_ACRONYMS = {
54 '8-vsb',
55 'aas',
56 'aba',
57 'abc',
58 'abd',
59 'abpp',
60 'abr',
61 'aca',
62 'acas',
63 'ace',
64 'acha',
65 'acp',
66 'ae',
67 'ae',
68 'aem',
69 'afasma',
70 'afc',
71 'afc',
72 'afm',
73 'afm',
74 'agsf',
75 'aia',
76 'aicp',
77 'ala',
78 'alc',
79 'alp',
80 'am',
81 'amd',
82 'ame',
83 'amieee',
84 'ams',
85 'aphr',
86 'apn',
87 'aprn',
88 'apr',
89 'apss',
90 'aqp',
91 'arm',
92 'arrc',
93 'asa',
94 'asc',
95 'asid',
96 'asla',
97 'asp',
98 'atc',
99 'awb',
100 'ba',
101 'bca',
102 'bcl',
103 'bcss',
104 'bds',
105 'bem',
106 'bls-i',
107 'bn',
108 'bpe',
109 'bpi',
110 'bpt',
111 'bsc',
112 'bt',
113 'btcs',
114 'bts',
115 'cacts',
116 'cae',
117 'caha',
118 'caia',
119 'cams',
120 'cap',
121 'capa',
122 'capm',
123 'capp',
124 'caps',
125 'caro',
126 'cas',
127 'casp',
128 'cb',
129 'cbe',
130 'cbm',
131 'cbne',
132 'cbnt',
133 'cbp',
134 'cbrte',
135 'cbs',
136 'cbsp',
137 'cbt',
138 'cbte',
139 'cbv',
140 'cca',
141 'ccc',
142 'ccca',
143 'cccm',
144 'cce',
145 'cchp',
146 'ccie',
147 'ccim',
148 'cciso',
149 'ccm',
150 'ccmt',
151 'ccna',
152 'ccnp',
153 'ccp',
154 'ccp-c',
155 'ccpr',
156 'ccs',
157 'ccufc',
158 'cd',
159 'cdal',
160 'cdfm',
161 'cdmp',
162 'cds',
163 'cdt',
164 'cea',
165 'ceas',
166 'cebs',
167 'ceds',
168 'ceh',
169 'cela',
170 'cem',
171 'cep',
172 'cera',
173 'cet',
174 'cfa',
175 'cfc',
176 'cfcc',
177 'cfce',
178 'cfcm',
179 'cfe',
180 'cfeds',
181 'cfi',
182 'cfm',
183 'cfp',
184 'cfps',
185 'cfr',
186 'cfre',
187 'cga',
188 'cgap',
189 'cgb',
190 'cgc',
191 'cgfm',
192 'cgfo',
193 'cgm',
194 'cgm',
195 'cgma',
196 'cgp',
197 'cgr',
198 'cgsp',
199 'ch',
200 'ch',
201 'cha',
202 'chba',
203 'chdm',
204 'che',
205 'ches',
206 'chfc',
207 'chfc',
208 'chi',
209 'chmc',
210 'chmm',
211 'chp',
212 'chpa',
213 'chpe',
214 'chpln',
215 'chpse',
216 'chrm',
217 'chsc',
218 'chse',
219 'chse-a',
220 'chsos',
221 'chss',
222 'cht',
223 'cia',
224 'cic',
225 'cie',
226 'cig',
227 'cip',
228 'cipm',
229 'cips',
230 'ciro',
231 'cisa',
232 'cism',
233 'cissp',
234 'cla',
235 'clsd',
236 'cltd',
237 'clu',
238 'cm',
239 'cma',
240 'cmas',
241 'cmc',
242 'cmfo',
243 'cmg',
244 'cmp',
245 'cms',
246 'cmsp',
247 'cmt',
248 'cna',
249 'cnm',
250 'cnp',
251 'cp',
252 'cp-c',
253 'cpa',
254 'cpacc',
255 'cpbe',
256 'cpcm',
257 'cpcu',
258 'cpe',
259 'cpfa',
260 'cpfo',
261 'cpg',
262 'cph',
263 'cpht',
264 'cpim',
265 'cpl',
266 'cplp',
267 'cpm',
268 'cpo',
269 'cpp',
270 'cppm',
271 'cprc',
272 'cpre',
273 'cprp',
274 'cpsc',
275 'cpsi',
276 'cpss',
277 'cpt',
278 'cpwa',
279 'crde',
280 'crisc',
281 'crma',
282 'crme',
283 'crna',
284 'cro',
285 'crp',
286 'crt',
287 'crtt',
288 'csa',
289 'csbe',
290 'csc',
291 'cscp',
292 'cscu',
293 'csep',
294 'csi',
295 'csm',
296 'csp',
297 'cspo',
298 'csre',
299 'csrte',
300 'csslp',
301 'cssm',
302 'cst',
303 'cste',
304 'ctbs',
305 'ctfa',
306 'cto',
307 'ctp',
308 'cts',
309 'cua',
310 'cusp',
311 'cva',
312 'cva[22]',
313 'cvo',
314 'cvp',
315 'cvrs',
316 'cwap',
317 'cwb',
318 'cwdp',
319 'cwep',
320 'cwna',
321 'cwne',
322 'cwp',
323 'cwsp',
324 'cxa',
325 'cyds',
326 'cysa',
327 'dabfm',
328 'dabvlm',
329 'dacvim',
330 'dbe',
331 'dc',
332 'dcb',
333 'dcm',
334 'dcmg',
335 'dcvo',
336 'dd',
337 'dds',
338 'ded',
339 'dep',
340 'dfc',
341 'dfm',
342 'diplac',
343 'diplom',
344 'djur',
345 'dma',
346 'dmd',
347 'dmin',
348 'dnp',
349 'do',
350 'dpm',
351 'dpt',
352 'drb',
353 'drmp',
354 'drph',
355 'dsc',
356 'dsm',
357 'dso',
358 'dss',
359 'dtr',
360 'dvep',
361 'dvm',
362 'ea',
363 'ed',
364 'edd',
365 'ei',
366 'eit',
367 'els',
368 'emd',
369 'emt-b',
370 'emt-i/85',
371 'emt-i/99',
372 'emt-p',
373 'enp',
374 'erd',
375 'esq',
376 'evp',
377 'faafp',
378 'faan',
379 'faap',
380 'fac-c',
381 'facc',
382 'facd',
383 'facem',
384 'facep',
385 'facha',
386 'facofp',
387 'facog',
388 'facp',
389 'facph',
390 'facs',
391 'faia',
392 'faicp',
393 'fala',
394 'fashp',
395 'fasid',
396 'fasla',
397 'fasma',
398 'faspen',
399 'fca',
400 'fcas',
401 'fcela',
402 'fd',
403 'fec',
404 'fhames',
405 'fic',
406 'ficf',
407 'fieee',
408 'fmp',
409 'fmva',
410 'fnss',
411 'fp&a',
412 'fp-c',
413 'fpc',
414 'frm',
415 'fsa',
416 'fsdp',
417 'fws',
418 'gaee[14]',
419 'gba',
420 'gbe',
421 'gc',
422 'gcb',
423 'gcb',
424 'gchs',
425 'gcie',
426 'gcmg',
427 'gcmg',
428 'gcsi',
429 'gcvo',
430 'gcvo',
431 'gisp',
432 'git',
433 'gm',
434 'gmb',
435 'gmr',
436 'gphr',
437 'gri',
438 'grp',
439 'gsmieee',
440 'hccp',
441 'hrs',
442 'iaccp',
443 'iaee',
444 'iccm-d',
445 'iccm-f',
446 'idsm',
447 'ifgict',
448 'iom',
449 'ipep',
450 'ipm',
451 'iso',
452 'issp-csp',
453 'issp-sa',
454 'itil',
455 'jd',
456 'jp',
457 'kbe',
458 'kcb',
459 'kchs/dchs',
460 'kcie',
461 'kcie',
462 'kcmg',
463 'kcsi',
464 'kcsi',
465 'kcvo',
466 'kg',
467 'khs/dhs',
468 'kp',
469 'kt',
470 'lac',
471 'lcmt',
472 'lcpc',
473 'lcsw',
474 'leed ap',
475 'lg',
476 'litk',
477 'litl',
478 'litp',
479 'llm',
480 'lm',
481 'lmsw',
482 'lmt',
483 'lp',
484 'lpa',
485 'lpc',
486 'lpn',
487 'lpss',
488 'lsi',
489 'lsit',
490 'lt',
491 'lvn',
492 'lvo',
493 'lvt',
494 'ma',
495 'maaa',
496 'mai',
497 'mba',
498 'mbe',
499 'mbs',
500 'mc',
501 'mcct',
502 'mcdba',
503 'mches',
504 'mcm',
505 'mcp',
506 'mcpd',
507 'mcsa',
508 'mcsd',
509 'mcse',
510 'mct',
511 'md',
512 'mda',
513 'mdb',
514 'mdbb',
515 'mdep',
516 'mdhb',
517 'mdiv',
518 'mdl',
519 'mem',
520 'meng',
521 'mfa',
522 'micp',
523 'mieee',
524 'mirm',
525 'mle',
526 'mls',
527 'mlse',
528 'mlt',
529 'mm',
530 'mmad',
531 'mmas',
532 'mnaa',
533 'mnae',
534 'mp',
535 'mpa',
536 'mph',
537 'mpse',
538 'mra',
539 'ms',
540 'msa',
541 'msc',
542 'mscmsm',
543 'msm',
544 'mt',
545 'mts',
546 'mvo',
547 'nbc-his',
548 'nbcch',
549 'nbcch-ps',
550 'nbcdch',
551 'nbcdch-ps',
552 'nbcfch',
553 'nbcfch-ps',
554 'nbct',
555 'ncarb',
556 'nccp',
557 'ncidq',
558 'ncps',
559 'ncso',
560 'ncto',
561 'nd',
562 'ndtr',
563 'nicet i',
564 'nicet ii',
565 'nicet iii',
566 'nicet iv',
567 'nmd',
568 'np',
569 'np[18]',
570 'nraemt',
571 'nremr',
572 'nremt',
573 'nrp',
574 'obe',
575 'obi',
576 'oca',
577 'ocm',
578 'ocp',
579 'od',
580 'om',
581 'oscp',
582 'ot',
583 'pa-c',
584 'pcc',
585 'pci',
586 'pe',
587 'pfmp',
588 'pg',
589 'pgmp',
590 'ph',
591 'pharmd',
592 'phc',
593 'phd',
594 'phr',
595 'phrca',
596 'pla',
597 'pls',
598 'pmc',
599 'pmi-acp',
600 'pmp',
601 'pp',
602 'pps',
603 'prm',
604 'psm i',
605 'psm ii',
606 'psm',
607 'psp',
608 'psyd',
609 'pt',
610 'pta',
611 'qam',
612 'qc',
613 'qcsw',
614 'qfsm',
615 'qgm',
616 'qpm',
617 'qsd',
618 'qsp',
619 'ra',
620 'rai',
621 'rba',
622 'rci',
623 'rcp',
624 'rd',
625 'rdcs',
626 'rdh',
627 'rdms',
628 'rdn',
629 'res',
630 'rfp',
631 'rhca',
632 'rid',
633 'rls',
634 'rmsks',
635 'rn',
636 'rp',
637 'rpa',
638 'rph',
639 'rpl',
640 'rrc',
641 'rrt',
642 'rrt-accs',
643 'rrt-nps',
644 'rrt-sds',
645 'rtrp',
646 'rvm',
647 'rvt',
648 'sa',
649 'same',
650 'sasm',
651 'sccp',
652 'scmp',
653 'se',
654 'secb',
655 'sfp',
656 'sgm',
657 'shrm-cp',
658 'shrm-scp',
659 'si',
660 'siie',
661 'smieee',
662 'sphr',
663 'sra',
664 'sscp',
665 'stb',
666 'stmieee',
667 'tbr-ct',
668 'td',
669 'thd',
670 'thm',
671 'ud',
672 'usa',
673 'usaf',
674 'usar',
675 'uscg',
676 'usmc',
677 'usn',
678 'usnr',
679 'uxc',
680 'uxmc',
681 'vc',
682 'vc',
683 'vcp',
684 'vd',
685 'vrd',
686}
687"""
688
689Post-nominal acronyms. Titles, degrees and other things people stick after their name
690that may or may not have periods between the letters. The parser removes periods
691when matching against these pieces.
692
693"""