Grammalecte  Hex Artifact Content

Artifact 96ddf4a9dc4d16775b25ec3c307a6b5f721896bf6c69101d6574ca711843f0be:


0000: 23 20 47 72 61 6d 6d 61 6c 65 63 74 65 20 2d 20  # Grammalecte - 
0010: 43 6f 6e 6a 75 67 75 65 75 72 0a 23 20 4c 69 63  Conjugueur.# Lic
0020: 65 6e 73 65 3a 20 47 50 4c 20 33 0a 0a 69 6d 70  ense: GPL 3..imp
0030: 6f 72 74 20 72 65 0a 69 6d 70 6f 72 74 20 74 72  ort re.import tr
0040: 61 63 65 62 61 63 6b 0a 0a 66 72 6f 6d 20 2e 63  aceback..from .c
0050: 6f 6e 6a 5f 64 61 74 61 20 69 6d 70 6f 72 74 20  onj_data import 
0060: 6c 56 74 79 70 20 61 73 20 5f 6c 56 74 79 70 0a  lVtyp as _lVtyp.
0070: 66 72 6f 6d 20 2e 63 6f 6e 6a 5f 64 61 74 61 20  from .conj_data 
0080: 69 6d 70 6f 72 74 20 6c 54 61 67 73 20 61 73 20  import lTags as 
0090: 5f 6c 54 61 67 73 0a 66 72 6f 6d 20 2e 63 6f 6e  _lTags.from .con
00a0: 6a 5f 64 61 74 61 20 69 6d 70 6f 72 74 20 64 50  j_data import dP
00b0: 61 74 74 65 72 6e 43 6f 6e 6a 20 61 73 20 5f 64  atternConj as _d
00c0: 50 61 74 74 65 72 6e 43 6f 6e 6a 0a 66 72 6f 6d  PatternConj.from
00d0: 20 2e 63 6f 6e 6a 5f 64 61 74 61 20 69 6d 70 6f   .conj_data impo
00e0: 72 74 20 64 56 65 72 62 20 61 73 20 5f 64 56 65  rt dVerb as _dVe
00f0: 72 62 0a 0a 0a 5f 7a 53 74 61 72 74 56 6f 79 20  rb..._zStartVoy 
0100: 3d 20 72 65 2e 63 6f 6d 70 69 6c 65 28 22 5e 5b  = re.compile("^[
0110: 61 65 c3 a9 69 6f 75 c5 93 c3 aa 5d 22 29 0a 5f  ae..iou....]")._
0120: 7a 4e 65 65 64 54 65 75 70 68 20 3d 20 72 65 2e  zNeedTeuph = re.
0130: 63 6f 6d 70 69 6c 65 28 22 5b 74 64 63 5d 24 22  compile("[tdc]$"
0140: 29 0a 23 5f 7a 4e 45 45 44 41 43 43 45 4e 54 57  ).#_zNEEDACCENTW
0150: 49 54 48 4a 45 20 3d 20 72 65 2e 63 6f 6d 70 69  ITHJE = re.compi
0160: 6c 65 28 22 5b 5e 69 5d 65 24 22 29 0a 0a 5f 64  le("[^i]e$").._d
0170: 50 72 6f 53 75 6a 20 3d 20 7b 20 22 3a 31 73 22  ProSuj = { ":1s"
0180: 3a 20 22 6a 65 22 2c 20 22 3a 31 c5 9b 22 3a 20  : "je", ":1..": 
0190: 22 6a 65 22 2c 20 22 3a 32 73 22 3a 20 22 74 75  "je", ":2s": "tu
01a0: 22 2c 20 22 3a 33 73 22 3a 20 22 69 6c 22 2c 20  ", ":3s": "il", 
01b0: 22 3a 31 70 22 3a 20 22 6e 6f 75 73 22 2c 20 22  ":1p": "nous", "
01c0: 3a 32 70 22 3a 20 22 76 6f 75 73 22 2c 20 22 3a  :2p": "vous", ":
01d0: 33 70 22 3a 20 22 69 6c 73 22 20 7d 0a 5f 64 50  3p": "ils" }._dP
01e0: 72 6f 4f 62 6a 20 3d 20 7b 20 22 3a 31 73 22 3a  roObj = { ":1s":
01f0: 20 22 6d 65 20 22 2c 20 22 3a 31 c5 9b 22 3a 20   "me ", ":1..": 
0200: 22 6d 65 20 22 2c 20 22 3a 32 73 22 3a 20 22 74  "me ", ":2s": "t
0210: 65 20 22 2c 20 22 3a 33 73 22 3a 20 22 73 65 20  e ", ":3s": "se 
0220: 22 2c 20 22 3a 31 70 22 3a 20 22 6e 6f 75 73 20  ", ":1p": "nous 
0230: 22 2c 20 22 3a 32 70 22 3a 20 22 76 6f 75 73 20  ", ":2p": "vous 
0240: 22 2c 20 22 3a 33 70 22 3a 20 22 73 65 20 22 20  ", ":3p": "se " 
0250: 7d 0a 5f 64 50 72 6f 4f 62 6a 45 6c 20 3d 20 7b  }._dProObjEl = {
0260: 20 22 3a 31 73 22 3a 20 22 6d e2 80 99 22 2c 20   ":1s": "m...", 
0270: 22 3a 31 c5 9b 22 3a 20 22 6d e2 80 99 22 2c 20  ":1..": "m...", 
0280: 22 3a 32 73 22 3a 20 22 74 e2 80 99 22 2c 20 22  ":2s": "t...", "
0290: 3a 33 73 22 3a 20 22 73 e2 80 99 22 2c 20 22 3a  :3s": "s...", ":
02a0: 31 70 22 3a 20 22 6e 6f 75 73 20 22 2c 20 22 3a  1p": "nous ", ":
02b0: 32 70 22 3a 20 22 76 6f 75 73 20 22 2c 20 22 3a  2p": "vous ", ":
02c0: 33 70 22 3a 20 22 73 e2 80 99 22 20 7d 0a 5f 64  3p": "s..." }._d
02d0: 49 6d 70 65 50 72 6f 20 3d 20 7b 20 22 3a 32 73  ImpePro = { ":2s
02e0: 22 3a 20 22 2d 74 6f 69 22 2c 20 22 3a 31 70 22  ": "-toi", ":1p"
02f0: 3a 20 22 2d 6e 6f 75 73 22 2c 20 22 3a 32 70 22  : "-nous", ":2p"
0300: 3a 20 22 2d 76 6f 75 73 22 20 7d 0a 5f 64 49 6d  : "-vous" }._dIm
0310: 70 65 50 72 6f 4e 65 67 20 3d 20 7b 20 22 3a 32  peProNeg = { ":2
0320: 73 22 3a 20 22 6e 65 20 74 65 20 22 2c 20 22 3a  s": "ne te ", ":
0330: 31 70 22 3a 20 22 6e 65 20 6e 6f 75 73 20 22 2c  1p": "ne nous ",
0340: 20 22 3a 32 70 22 3a 20 22 6e 65 20 76 6f 75 73   ":2p": "ne vous
0350: 20 22 20 7d 0a 5f 64 49 6d 70 65 50 72 6f 45 6e   " }._dImpeProEn
0360: 20 3d 20 7b 20 22 3a 32 73 22 3a 20 22 2d 74 e2   = { ":2s": "-t.
0370: 80 99 65 6e 22 2c 20 22 3a 31 70 22 3a 20 22 2d  ..en", ":1p": "-
0380: 6e 6f 75 73 2d 65 6e 22 2c 20 22 3a 32 70 22 3a  nous-en", ":2p":
0390: 20 22 2d 76 6f 75 73 2d 65 6e 22 20 7d 0a 5f 64   "-vous-en" }._d
03a0: 49 6d 70 65 50 72 6f 4e 65 67 45 6e 20 3d 20 7b  ImpeProNegEn = {
03b0: 20 22 3a 32 73 22 3a 20 22 6e 65 20 74 e2 80 99   ":2s": "ne t...
03c0: 65 6e 20 22 2c 20 22 3a 31 70 22 3a 20 22 6e 65  en ", ":1p": "ne
03d0: 20 6e 6f 75 73 20 65 6e 20 22 2c 20 22 3a 32 70   nous en ", ":2p
03e0: 22 3a 20 22 6e 65 20 76 6f 75 73 20 65 6e 20 22  ": "ne vous en "
03f0: 20 7d 0a 0a 5f 64 47 72 6f 75 70 20 3d 20 7b 20   }.._dGroup = { 
0400: 22 30 22 3a 20 22 61 75 78 69 6c 69 61 69 72 65  "0": "auxiliaire
0410: 22 2c 20 22 31 22 3a 20 22 31 e1 b5 89 ca b3 20  ", "1": "1..... 
0420: 67 72 6f 75 70 65 22 2c 20 22 32 22 3a 20 22 32  groupe", "2": "2
0430: e1 b5 89 20 67 72 6f 75 70 65 22 2c 20 22 33 22  ... groupe", "3"
0440: 3a 20 22 33 e1 b5 89 20 67 72 6f 75 70 65 22 20  : "3... groupe" 
0450: 7d 0a 0a 5f 64 54 65 6e 73 65 49 64 78 20 3d 20  }.._dTenseIdx = 
0460: 7b 20 22 3a 50 51 22 3a 20 30 2c 20 22 3a 49 70  { ":PQ": 0, ":Ip
0470: 22 3a 20 31 2c 20 22 3a 49 71 22 3a 20 32 2c 20  ": 1, ":Iq": 2, 
0480: 22 3a 49 73 22 3a 20 33 2c 20 22 3a 49 66 22 3a  ":Is": 3, ":If":
0490: 20 34 2c 20 22 3a 4b 22 3a 20 35 2c 20 22 3a 53   4, ":K": 5, ":S
04a0: 70 22 3a 20 36 2c 20 22 3a 53 71 22 3a 20 37 2c  p": 6, ":Sq": 7,
04b0: 20 22 3a 45 22 3a 20 38 20 7d 0a 0a 0a 0a 64 65   ":E": 8 }....de
04c0: 66 20 69 73 56 65 72 62 20 28 73 56 65 72 62 29  f isVerb (sVerb)
04d0: 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 73 56 65  :.    return sVe
04e0: 72 62 20 69 6e 20 5f 64 56 65 72 62 0a 0a 0a 64  rb in _dVerb...d
04f0: 65 66 20 67 65 74 43 6f 6e 6a 20 28 73 56 65 72  ef getConj (sVer
0500: 62 2c 20 73 54 65 6e 73 65 2c 20 73 57 68 6f 29  b, sTense, sWho)
0510: 3a 0a 20 20 20 20 22 72 65 74 75 72 6e 73 20 63  :.    "returns c
0520: 6f 6e 6a 75 67 61 74 69 6f 6e 20 28 63 61 6e 20  onjugation (can 
0530: 62 65 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  be an empty stri
0540: 6e 67 29 22 0a 20 20 20 20 69 66 20 73 56 65 72  ng)".    if sVer
0550: 62 20 6e 6f 74 20 69 6e 20 5f 64 56 65 72 62 3a  b not in _dVerb:
0560: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
0570: 4e 6f 6e 65 0a 20 20 20 20 72 65 74 75 72 6e 20  None.    return 
0580: 5f 6d 6f 64 69 66 79 53 74 72 69 6e 67 57 69 74  _modifyStringWit
0590: 68 53 75 66 66 69 78 43 6f 64 65 28 73 56 65 72  hSuffixCode(sVer
05a0: 62 2c 20 5f 64 50 61 74 74 65 72 6e 43 6f 6e 6a  b, _dPatternConj
05b0: 5b 73 54 65 6e 73 65 5d 5b 5f 6c 54 61 67 73 5b  [sTense][_lTags[
05c0: 5f 64 56 65 72 62 5b 73 56 65 72 62 5d 5b 31 5d  _dVerb[sVerb][1]
05d0: 5d 5b 5f 64 54 65 6e 73 65 49 64 78 5b 73 54 65  ][_dTenseIdx[sTe
05e0: 6e 73 65 5d 5d 5d 2e 67 65 74 28 73 57 68 6f 2c  nse]]].get(sWho,
05f0: 20 22 22 29 29 0a 0a 0a 64 65 66 20 68 61 73 43   ""))...def hasC
0600: 6f 6e 6a 20 28 73 56 65 72 62 2c 20 73 54 65 6e  onj (sVerb, sTen
0610: 73 65 2c 20 73 57 68 6f 29 3a 0a 20 20 20 20 22  se, sWho):.    "
0620: 72 65 74 75 72 6e 73 20 46 61 6c 73 65 20 69 66  returns False if
0630: 20 6e 6f 20 63 6f 6e 6a 75 67 61 74 69 6f 6e 20   no conjugation 
0640: 28 61 6c 73 6f 20 69 66 20 65 6d 70 74 79 29 20  (also if empty) 
0650: 65 6c 73 65 20 54 72 75 65 22 0a 20 20 20 20 69  else True".    i
0660: 66 20 73 56 65 72 62 20 6e 6f 74 20 69 6e 20 5f  f sVerb not in _
0670: 64 56 65 72 62 3a 0a 20 20 20 20 20 20 20 20 72  dVerb:.        r
0680: 65 74 75 72 6e 20 46 61 6c 73 65 0a 20 20 20 20  eturn False.    
0690: 69 66 20 5f 64 50 61 74 74 65 72 6e 43 6f 6e 6a  if _dPatternConj
06a0: 5b 73 54 65 6e 73 65 5d 5b 5f 6c 54 61 67 73 5b  [sTense][_lTags[
06b0: 5f 64 56 65 72 62 5b 73 56 65 72 62 5d 5b 31 5d  _dVerb[sVerb][1]
06c0: 5d 5b 5f 64 54 65 6e 73 65 49 64 78 5b 73 54 65  ][_dTenseIdx[sTe
06d0: 6e 73 65 5d 5d 5d 2e 67 65 74 28 73 57 68 6f 2c  nse]]].get(sWho,
06e0: 20 46 61 6c 73 65 29 3a 0a 20 20 20 20 20 20 20   False):.       
06f0: 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20   return True.   
0700: 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a 0a 0a   return False...
0710: 64 65 66 20 67 65 74 56 74 79 70 20 28 73 56 65  def getVtyp (sVe
0720: 72 62 29 3a 0a 20 20 20 20 22 72 65 74 75 72 6e  rb):.    "return
0730: 73 20 72 61 77 20 69 6e 66 6f 72 6d 61 74 69 6f  s raw informatio
0740: 6e 73 20 61 62 6f 75 74 20 73 56 65 72 62 22 0a  ns about sVerb".
0750: 20 20 20 20 69 66 20 73 56 65 72 62 20 6e 6f 74      if sVerb not
0760: 20 69 6e 20 5f 64 56 65 72 62 3a 0a 20 20 20 20   in _dVerb:.    
0770: 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a      return None.
0780: 20 20 20 20 72 65 74 75 72 6e 20 5f 6c 56 74 79      return _lVty
0790: 70 5b 5f 64 56 65 72 62 5b 73 56 65 72 62 5d 5b  p[_dVerb[sVerb][
07a0: 30 5d 5d 0a 0a 0a 64 65 66 20 67 65 74 53 69 6d  0]]...def getSim
07b0: 69 6c 20 28 73 57 6f 72 64 2c 20 73 4d 6f 72 70  il (sWord, sMorp
07c0: 68 2c 20 62 53 75 62 73 74 3d 46 61 6c 73 65 29  h, bSubst=False)
07d0: 3a 0a 20 20 20 20 69 66 20 22 3a 56 22 20 6e 6f  :.    if ":V" no
07e0: 74 20 69 6e 20 73 4d 6f 72 70 68 3a 0a 20 20 20  t in sMorph:.   
07f0: 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 74 28       return set(
0800: 29 0a 20 20 20 20 73 49 6e 66 69 20 3d 20 73 4d  ).    sInfi = sM
0810: 6f 72 70 68 5b 31 3a 73 4d 6f 72 70 68 2e 66 69  orph[1:sMorph.fi
0820: 6e 64 28 22 2f 22 29 5d 0a 20 20 20 20 61 53 75  nd("/")].    aSu
0830: 67 67 20 3d 20 73 65 74 28 29 0a 20 20 20 20 74  gg = set().    t
0840: 54 61 67 73 20 3d 20 5f 67 65 74 54 61 67 73 28  Tags = _getTags(
0850: 73 49 6e 66 69 29 0a 20 20 20 20 69 66 20 74 54  sInfi).    if tT
0860: 61 67 73 3a 0a 20 20 20 20 20 20 20 20 69 66 20  ags:.        if 
0870: 6e 6f 74 20 62 53 75 62 73 74 3a 0a 20 20 20 20  not bSubst:.    
0880: 20 20 20 20 20 20 20 20 23 20 77 65 20 73 75 67          # we sug
0890: 67 65 73 74 20 63 6f 6e 6a 75 67 61 74 65 64 20  gest conjugated 
08a0: 66 6f 72 6d 73 0a 20 20 20 20 20 20 20 20 20 20  forms.          
08b0: 20 20 69 66 20 22 3a 56 31 22 20 69 6e 20 73 4d    if ":V1" in sM
08c0: 6f 72 70 68 3a 0a 20 20 20 20 20 20 20 20 20 20  orph:.          
08d0: 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64 28        aSugg.add(
08e0: 73 49 6e 66 69 29 0a 20 20 20 20 20 20 20 20 20  sInfi).         
08f0: 20 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64         aSugg.add
0900: 28 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67  (_getConjWithTag
0910: 73 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c 20  s(sInfi, tTags, 
0920: 22 3a 49 70 22 2c 20 22 3a 33 73 22 29 29 0a 20  ":Ip", ":3s")). 
0930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
0940: 53 75 67 67 2e 61 64 64 28 5f 67 65 74 43 6f 6e  Sugg.add(_getCon
0950: 6a 57 69 74 68 54 61 67 73 28 73 49 6e 66 69 2c  jWithTags(sInfi,
0960: 20 74 54 61 67 73 2c 20 22 3a 49 70 22 2c 20 22   tTags, ":Ip", "
0970: 3a 32 70 22 29 29 0a 20 20 20 20 20 20 20 20 20  :2p")).         
0980: 20 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64         aSugg.add
0990: 28 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67  (_getConjWithTag
09a0: 73 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c 20  s(sInfi, tTags, 
09b0: 22 3a 49 71 22 2c 20 22 3a 31 73 22 29 29 0a 20  ":Iq", ":1s")). 
09c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
09d0: 53 75 67 67 2e 61 64 64 28 5f 67 65 74 43 6f 6e  Sugg.add(_getCon
09e0: 6a 57 69 74 68 54 61 67 73 28 73 49 6e 66 69 2c  jWithTags(sInfi,
09f0: 20 74 54 61 67 73 2c 20 22 3a 49 71 22 2c 20 22   tTags, ":Iq", "
0a00: 3a 33 73 22 29 29 0a 20 20 20 20 20 20 20 20 20  :3s")).         
0a10: 20 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64         aSugg.add
0a20: 28 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67  (_getConjWithTag
0a30: 73 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c 20  s(sInfi, tTags, 
0a40: 22 3a 49 71 22 2c 20 22 3a 33 70 22 29 29 0a 20  ":Iq", ":3p")). 
0a50: 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20             elif 
0a60: 22 3a 56 32 22 20 69 6e 20 73 4d 6f 72 70 68 3a  ":V2" in sMorph:
0a70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0a80: 20 61 53 75 67 67 2e 61 64 64 28 5f 67 65 74 43   aSugg.add(_getC
0a90: 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 49 6e 66  onjWithTags(sInf
0aa0: 69 2c 20 74 54 61 67 73 2c 20 22 3a 49 70 22 2c  i, tTags, ":Ip",
0ab0: 20 22 3a 31 73 22 29 29 0a 20 20 20 20 20 20 20   ":1s")).       
0ac0: 20 20 20 20 20 20 20 20 20 61 53 75 67 67 2e 61           aSugg.a
0ad0: 64 64 28 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54  dd(_getConjWithT
0ae0: 61 67 73 28 73 49 6e 66 69 2c 20 74 54 61 67 73  ags(sInfi, tTags
0af0: 2c 20 22 3a 49 70 22 2c 20 22 3a 33 73 22 29 29  , ":Ip", ":3s"))
0b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69  .            eli
0b10: 66 20 22 3a 56 33 22 20 69 6e 20 73 4d 6f 72 70  f ":V3" in sMorp
0b20: 68 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h:.             
0b30: 20 20 20 61 53 75 67 67 2e 61 64 64 28 5f 67 65     aSugg.add(_ge
0b40: 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 49  tConjWithTags(sI
0b50: 6e 66 69 2c 20 74 54 61 67 73 2c 20 22 3a 49 70  nfi, tTags, ":Ip
0b60: 22 2c 20 22 3a 31 73 22 29 29 0a 20 20 20 20 20  ", ":1s")).     
0b70: 20 20 20 20 20 20 20 20 20 20 20 61 53 75 67 67             aSugg
0b80: 2e 61 64 64 28 5f 67 65 74 43 6f 6e 6a 57 69 74  .add(_getConjWit
0b90: 68 54 61 67 73 28 73 49 6e 66 69 2c 20 74 54 61  hTags(sInfi, tTa
0ba0: 67 73 2c 20 22 3a 49 70 22 2c 20 22 3a 33 73 22  gs, ":Ip", ":3s"
0bb0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
0bc0: 20 20 20 61 53 75 67 67 2e 61 64 64 28 5f 67 65     aSugg.add(_ge
0bd0: 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 49  tConjWithTags(sI
0be0: 6e 66 69 2c 20 74 54 61 67 73 2c 20 22 3a 49 73  nfi, tTags, ":Is
0bf0: 22 2c 20 22 3a 31 73 22 29 29 0a 20 20 20 20 20  ", ":1s")).     
0c00: 20 20 20 20 20 20 20 20 20 20 20 61 53 75 67 67             aSugg
0c10: 2e 61 64 64 28 5f 67 65 74 43 6f 6e 6a 57 69 74  .add(_getConjWit
0c20: 68 54 61 67 73 28 73 49 6e 66 69 2c 20 74 54 61  hTags(sInfi, tTa
0c30: 67 73 2c 20 22 3a 49 73 22 2c 20 22 3a 33 73 22  gs, ":Is", ":3s"
0c40: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  )).            e
0c50: 6c 69 66 20 22 3a 56 30 61 22 20 69 6e 20 73 4d  lif ":V0a" in sM
0c60: 6f 72 70 68 3a 0a 20 20 20 20 20 20 20 20 20 20  orph:.          
0c70: 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64 28        aSugg.add(
0c80: 22 65 75 73 22 29 0a 20 20 20 20 20 20 20 20 20  "eus").         
0c90: 20 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64         aSugg.add
0ca0: 28 22 65 75 74 22 29 0a 20 20 20 20 20 20 20 20  ("eut").        
0cb0: 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20      else:.      
0cc0: 20 20 20 20 20 20 20 20 20 20 61 53 75 67 67 2e            aSugg.
0cd0: 61 64 64 28 22 c3 a9 74 61 69 73 22 29 0a 20 20  add("..tais").  
0ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 53                aS
0cf0: 75 67 67 2e 61 64 64 28 22 c3 a9 74 61 69 74 22  ugg.add("..tait"
0d00: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 53  ).            aS
0d10: 75 67 67 2e 64 69 73 63 61 72 64 28 22 22 29 0a  ugg.discard("").
0d20: 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20          else:.  
0d30: 20 20 20 20 20 20 20 20 20 20 23 20 77 65 20 73            # we s
0d40: 75 67 67 65 73 74 20 70 61 73 74 20 70 61 72 74  uggest past part
0d50: 69 63 69 70 6c 65 73 0a 20 20 20 20 20 20 20 20  iciples.        
0d60: 20 20 20 20 61 53 75 67 67 2e 61 64 64 28 5f 67      aSugg.add(_g
0d70: 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73  etConjWithTags(s
0d80: 49 6e 66 69 2c 20 74 54 61 67 73 2c 20 22 3a 50  Infi, tTags, ":P
0d90: 51 22 2c 20 22 3a 51 31 22 29 29 0a 20 20 20 20  Q", ":Q1")).    
0da0: 20 20 20 20 20 20 20 20 61 53 75 67 67 2e 61 64          aSugg.ad
0db0: 64 28 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61  d(_getConjWithTa
0dc0: 67 73 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c  gs(sInfi, tTags,
0dd0: 20 22 3a 50 51 22 2c 20 22 3a 51 32 22 29 29 0a   ":PQ", ":Q2")).
0de0: 20 20 20 20 20 20 20 20 20 20 20 20 61 53 75 67              aSug
0df0: 67 2e 61 64 64 28 5f 67 65 74 43 6f 6e 6a 57 69  g.add(_getConjWi
0e00: 74 68 54 61 67 73 28 73 49 6e 66 69 2c 20 74 54  thTags(sInfi, tT
0e10: 61 67 73 2c 20 22 3a 50 51 22 2c 20 22 3a 51 33  ags, ":PQ", ":Q3
0e20: 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")).            
0e30: 61 53 75 67 67 2e 61 64 64 28 5f 67 65 74 43 6f  aSugg.add(_getCo
0e40: 6e 6a 57 69 74 68 54 61 67 73 28 73 49 6e 66 69  njWithTags(sInfi
0e50: 2c 20 74 54 61 67 73 2c 20 22 3a 50 51 22 2c 20  , tTags, ":PQ", 
0e60: 22 3a 51 34 22 29 29 0a 20 20 20 20 20 20 20 20  ":Q4")).        
0e70: 20 20 20 20 61 53 75 67 67 2e 64 69 73 63 61 72      aSugg.discar
0e80: 64 28 22 22 29 0a 20 20 20 20 20 20 20 20 20 20  d("").          
0e90: 20 20 23 20 69 66 20 74 68 65 72 65 20 69 73 20    # if there is 
0ea0: 6f 6e 6c 79 20 6f 6e 65 20 70 61 73 74 20 70 61  only one past pa
0eb0: 72 74 69 63 69 70 6c 65 20 28 65 70 69 20 69 6e  rticiple (epi in
0ec0: 76 29 2c 20 75 6e 72 65 6c 69 61 62 6c 65 2e 0a  v), unreliable..
0ed0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c              if l
0ee0: 65 6e 28 61 53 75 67 67 29 20 3d 3d 20 31 3a 0a  en(aSugg) == 1:.
0ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0f00: 61 53 75 67 67 2e 63 6c 65 61 72 28 29 0a 20 20  aSugg.clear().  
0f10: 20 20 72 65 74 75 72 6e 20 61 53 75 67 67 0a 0a    return aSugg..
0f20: 0a 64 65 66 20 67 65 74 43 6f 6e 6a 53 69 6d 69  .def getConjSimi
0f30: 6c 49 6e 66 69 56 31 20 28 73 49 6e 66 69 29 3a  lInfiV1 (sInfi):
0f40: 0a 20 20 20 20 69 66 20 73 49 6e 66 69 20 6e 6f  .    if sInfi no
0f50: 74 20 69 6e 20 5f 64 56 65 72 62 3a 0a 20 20 20  t in _dVerb:.   
0f60: 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 74 28       return set(
0f70: 29 0a 20 20 20 20 61 53 75 67 67 20 3d 20 73 65  ).    aSugg = se
0f80: 74 28 29 0a 20 20 20 20 74 54 61 67 73 20 3d 20  t().    tTags = 
0f90: 5f 67 65 74 54 61 67 73 28 73 49 6e 66 69 29 0a  _getTags(sInfi).
0fa0: 20 20 20 20 69 66 20 74 54 61 67 73 3a 0a 20 20      if tTags:.  
0fb0: 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64 28        aSugg.add(
0fc0: 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73  _getConjWithTags
0fd0: 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c 20 22  (sInfi, tTags, "
0fe0: 3a 49 71 22 2c 20 22 3a 32 73 22 29 29 0a 20 20  :Iq", ":2s")).  
0ff0: 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64 28        aSugg.add(
1000: 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73  _getConjWithTags
1010: 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c 20 22  (sInfi, tTags, "
1020: 3a 49 71 22 2c 20 22 3a 33 73 22 29 29 0a 20 20  :Iq", ":3s")).  
1030: 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64 28        aSugg.add(
1040: 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73  _getConjWithTags
1050: 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c 20 22  (sInfi, tTags, "
1060: 3a 49 71 22 2c 20 22 3a 33 70 22 29 29 0a 20 20  :Iq", ":3p")).  
1070: 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64 28        aSugg.add(
1080: 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73  _getConjWithTags
1090: 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c 20 22  (sInfi, tTags, "
10a0: 3a 49 73 22 2c 20 22 3a 31 73 22 29 29 0a 20 20  :Is", ":1s")).  
10b0: 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64 28        aSugg.add(
10c0: 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73  _getConjWithTags
10d0: 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c 20 22  (sInfi, tTags, "
10e0: 3a 49 70 22 2c 20 22 3a 32 70 22 29 29 0a 20 20  :Ip", ":2p")).  
10f0: 20 20 20 20 20 20 61 53 75 67 67 2e 61 64 64 28        aSugg.add(
1100: 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73  _getConjWithTags
1110: 28 73 49 6e 66 69 2c 20 74 54 61 67 73 2c 20 22  (sInfi, tTags, "
1120: 3a 49 71 22 2c 20 22 3a 32 70 22 29 29 0a 20 20  :Iq", ":2p")).  
1130: 20 20 20 20 20 20 61 53 75 67 67 2e 64 69 73 63        aSugg.disc
1140: 61 72 64 28 22 22 29 0a 20 20 20 20 72 65 74 75  ard("").    retu
1150: 72 6e 20 61 53 75 67 67 0a 0a 0a 64 65 66 20 5f  rn aSugg...def _
1160: 67 65 74 54 61 67 73 20 28 73 56 65 72 62 29 3a  getTags (sVerb):
1170: 0a 20 20 20 20 22 72 65 74 75 72 6e 73 20 74 75  .    "returns tu
1180: 70 6c 65 20 6f 66 20 74 61 67 73 20 28 75 73 61  ple of tags (usa
1190: 62 6c 65 20 77 69 74 68 20 66 75 6e 63 74 69 6f  ble with functio
11a0: 6e 73 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54  ns _getConjWithT
11b0: 61 67 73 20 61 6e 64 20 5f 68 61 73 43 6f 6e 6a  ags and _hasConj
11c0: 57 69 74 68 54 61 67 73 29 22 0a 20 20 20 20 69  WithTags)".    i
11d0: 66 20 73 56 65 72 62 20 6e 6f 74 20 69 6e 20 5f  f sVerb not in _
11e0: 64 56 65 72 62 3a 0a 20 20 20 20 20 20 20 20 72  dVerb:.        r
11f0: 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 72  eturn None.    r
1200: 65 74 75 72 6e 20 5f 6c 54 61 67 73 5b 5f 64 56  eturn _lTags[_dV
1210: 65 72 62 5b 73 56 65 72 62 5d 5b 31 5d 5d 0a 0a  erb[sVerb][1]]..
1220: 0a 64 65 66 20 5f 67 65 74 43 6f 6e 6a 57 69 74  .def _getConjWit
1230: 68 54 61 67 73 20 28 73 56 65 72 62 2c 20 74 54  hTags (sVerb, tT
1240: 61 67 73 2c 20 73 54 65 6e 73 65 2c 20 73 57 68  ags, sTense, sWh
1250: 6f 29 3a 0a 20 20 20 20 22 72 65 74 75 72 6e 73  o):.    "returns
1260: 20 63 6f 6e 6a 75 67 61 74 69 6f 6e 20 28 63 61   conjugation (ca
1270: 6e 20 62 65 20 61 6e 20 65 6d 70 74 79 20 73 74  n be an empty st
1280: 72 69 6e 67 29 22 0a 20 20 20 20 72 65 74 75 72  ring)".    retur
1290: 6e 20 5f 6d 6f 64 69 66 79 53 74 72 69 6e 67 57  n _modifyStringW
12a0: 69 74 68 53 75 66 66 69 78 43 6f 64 65 28 73 56  ithSuffixCode(sV
12b0: 65 72 62 2c 20 5f 64 50 61 74 74 65 72 6e 43 6f  erb, _dPatternCo
12c0: 6e 6a 5b 73 54 65 6e 73 65 5d 5b 74 54 61 67 73  nj[sTense][tTags
12d0: 5b 5f 64 54 65 6e 73 65 49 64 78 5b 73 54 65 6e  [_dTenseIdx[sTen
12e0: 73 65 5d 5d 5d 2e 67 65 74 28 73 57 68 6f 2c 20  se]]].get(sWho, 
12f0: 22 22 29 29 0a 0a 0a 64 65 66 20 5f 68 61 73 43  ""))...def _hasC
1300: 6f 6e 6a 57 69 74 68 54 61 67 73 20 28 74 54 61  onjWithTags (tTa
1310: 67 73 2c 20 73 54 65 6e 73 65 2c 20 73 57 68 6f  gs, sTense, sWho
1320: 29 3a 0a 20 20 20 20 22 72 65 74 75 72 6e 73 20  ):.    "returns 
1330: 46 61 6c 73 65 20 69 66 20 6e 6f 20 63 6f 6e 6a  False if no conj
1340: 75 67 61 74 69 6f 6e 20 28 61 6c 73 6f 20 69 66  ugation (also if
1350: 20 65 6d 70 74 79 29 20 65 6c 73 65 20 54 72 75   empty) else Tru
1360: 65 22 0a 20 20 20 20 69 66 20 5f 64 50 61 74 74  e".    if _dPatt
1370: 65 72 6e 43 6f 6e 6a 5b 73 54 65 6e 73 65 5d 5b  ernConj[sTense][
1380: 74 54 61 67 73 5b 5f 64 54 65 6e 73 65 49 64 78  tTags[_dTenseIdx
1390: 5b 73 54 65 6e 73 65 5d 5d 5d 2e 67 65 74 28 73  [sTense]]].get(s
13a0: 57 68 6f 2c 20 46 61 6c 73 65 29 3a 0a 20 20 20  Who, False):.   
13b0: 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65       return True
13c0: 0a 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73  .    return Fals
13d0: 65 0a 0a 0a 64 65 66 20 5f 6d 6f 64 69 66 79 53  e...def _modifyS
13e0: 74 72 69 6e 67 57 69 74 68 53 75 66 66 69 78 43  tringWithSuffixC
13f0: 6f 64 65 20 28 73 57 6f 72 64 2c 20 73 53 66 78  ode (sWord, sSfx
1400: 29 3a 0a 20 20 20 20 22 72 65 74 75 72 6e 73 20  ):.    "returns 
1410: 73 57 6f 72 64 20 6d 6f 64 69 66 69 65 64 20 62  sWord modified b
1420: 79 20 73 53 66 78 22 0a 20 20 20 20 69 66 20 6e  y sSfx".    if n
1430: 6f 74 20 73 53 66 78 3a 0a 20 20 20 20 20 20 20  ot sSfx:.       
1440: 20 72 65 74 75 72 6e 20 22 22 0a 20 20 20 20 69   return "".    i
1450: 66 20 73 53 66 78 20 3d 3d 20 22 30 22 3a 0a 20  f sSfx == "0":. 
1460: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 57         return sW
1470: 6f 72 64 0a 20 20 20 20 74 72 79 3a 0a 20 20 20  ord.    try:.   
1480: 20 20 20 20 20 72 65 74 75 72 6e 20 73 57 6f 72       return sWor
1490: 64 5b 3a 2d 28 6f 72 64 28 73 53 66 78 5b 30 5d  d[:-(ord(sSfx[0]
14a0: 29 2d 34 38 29 5d 20 2b 20 73 53 66 78 5b 31 3a  )-48)] + sSfx[1:
14b0: 5d 20 20 69 66 20 73 53 66 78 5b 30 5d 20 21 3d  ]  if sSfx[0] !=
14c0: 20 27 30 27 20 20 65 6c 73 65 20 20 73 57 6f 72   '0'  else  sWor
14d0: 64 20 2b 20 73 53 66 78 5b 31 3a 5d 20 20 23 20  d + sSfx[1:]  # 
14e0: 34 38 20 69 73 20 74 68 65 20 41 53 43 49 49 20  48 is the ASCII 
14f0: 63 6f 64 65 20 66 6f 72 20 22 30 22 0a 20 20 20  code for "0".   
1500: 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20   except:.       
1510: 20 72 65 74 75 72 6e 20 22 23 23 20 65 72 72 65   return "## erre
1520: 75 72 2c 20 63 6f 64 65 20 3a 20 22 20 2b 20 73  ur, code : " + s
1530: 74 72 28 73 53 66 78 29 20 2b 20 22 20 23 23 22  tr(sSfx) + " ##"
1540: 0a 20 20 20 20 20 20 20 20 0a 0a 0a 63 6c 61 73  .        ...clas
1550: 73 20 56 65 72 62 20 28 29 3a 0a 20 20 20 20 64  s Verb ():.    d
1560: 65 66 20 5f 5f 69 6e 69 74 5f 5f 20 28 73 65 6c  ef __init__ (sel
1570: 66 2c 20 73 56 65 72 62 2c 20 73 56 65 72 62 50  f, sVerb, sVerbP
1580: 61 74 74 65 72 6e 3d 22 22 29 3a 0a 20 20 20 20  attern=""):.    
1590: 20 20 20 20 23 20 63 6f 6e 6a 75 67 61 74 65 20      # conjugate 
15a0: 61 20 75 6e 6b 6e 6f 77 6e 20 76 65 72 62 20 77  a unknown verb w
15b0: 69 74 68 20 72 75 6c 65 73 20 66 72 6f 6d 20 73  ith rules from s
15c0: 56 65 72 62 50 61 74 74 65 72 6e 0a 20 20 20 20  VerbPattern.    
15d0: 20 20 20 20 69 66 20 6e 6f 74 20 69 73 69 6e 73      if not isins
15e0: 74 61 6e 63 65 28 73 56 65 72 62 2c 20 73 74 72  tance(sVerb, str
15f0: 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ):.            r
1600: 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 28 22  aise TypeError("
1610: 73 56 65 72 62 20 73 68 6f 75 6c 64 20 62 65 20  sVerb should be 
1620: 61 20 73 74 72 69 6e 67 22 29 0a 20 20 20 20 20  a string").     
1630: 20 20 20 69 66 20 6e 6f 74 20 73 56 65 72 62 3a     if not sVerb:
1640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69  .            rai
1650: 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 22 45  se ValueError("E
1660: 6d 70 74 79 20 73 74 72 69 6e 67 2e 22 29 0a 0a  mpty string.")..
1670: 20 20 20 20 20 20 20 20 69 66 20 73 56 65 72 62          if sVerb
1680: 50 61 74 74 65 72 6e 20 3d 3d 20 22 22 3a 0a 20  Pattern == "":. 
1690: 20 20 20 20 20 20 20 20 20 20 20 73 56 65 72 62             sVerb
16a0: 50 61 74 74 65 72 6e 20 3d 20 73 56 65 72 62 0a  Pattern = sVerb.
16b0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 56  .        self.sV
16c0: 65 72 62 20 3d 20 73 56 65 72 62 0a 20 20 20 20  erb = sVerb.    
16d0: 20 20 20 20 73 65 6c 66 2e 73 56 65 72 62 41 75      self.sVerbAu
16e0: 78 20 3d 20 22 22 0a 20 20 20 20 20 20 20 20 73  x = "".        s
16f0: 65 6c 66 2e 5f 73 52 61 77 49 6e 66 6f 20 3d 20  elf._sRawInfo = 
1700: 67 65 74 56 74 79 70 28 73 56 65 72 62 50 61 74  getVtyp(sVerbPat
1710: 74 65 72 6e 29 0a 20 20 20 20 20 20 20 20 73 65  tern).        se
1720: 6c 66 2e 73 49 6e 66 6f 20 3d 20 73 65 6c 66 2e  lf.sInfo = self.
1730: 5f 72 65 61 64 61 62 6c 65 49 6e 66 6f 28 29 0a  _readableInfo().
1740: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 50 72          self.bPr
1750: 6f 57 69 74 68 45 6e 20 3d 20 28 73 65 6c 66 2e  oWithEn = (self.
1760: 5f 73 52 61 77 49 6e 66 6f 5b 35 5d 20 3d 3d 20  _sRawInfo[5] == 
1770: 22 65 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c  "e").        sel
1780: 66 2e 5f 74 54 61 67 73 20 3d 20 5f 67 65 74 54  f._tTags = _getT
1790: 61 67 73 28 73 56 65 72 62 50 61 74 74 65 72 6e  ags(sVerbPattern
17a0: 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74  ).        if not
17b0: 20 73 65 6c 66 2e 5f 74 54 61 67 73 3a 0a 20 20   self._tTags:.  
17c0: 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20            raise 
17d0: 56 61 6c 75 65 45 72 72 6f 72 28 22 55 6e 6b 6e  ValueError("Unkn
17e0: 6f 77 6e 20 76 65 72 62 2e 22 29 0a 20 20 20 20  own verb.").    
17f0: 20 20 20 20 73 65 6c 66 2e 5f 74 54 61 67 73 41      self._tTagsA
1800: 75 78 20 3d 20 5f 67 65 74 54 61 67 73 28 73 65  ux = _getTags(se
1810: 6c 66 2e 73 56 65 72 62 41 75 78 29 0a 20 20 20  lf.sVerbAux).   
1820: 20 20 20 20 20 73 65 6c 66 2e 63 47 72 6f 75 70       self.cGroup
1830: 20 3d 20 73 65 6c 66 2e 5f 73 52 61 77 49 6e 66   = self._sRawInf
1840: 6f 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 73 65  o[0];.        se
1850: 6c 66 2e 64 43 6f 6e 6a 20 3d 20 7b 0a 20 20 20  lf.dConj = {.   
1860: 20 20 20 20 20 20 20 20 20 22 3a 59 22 3a 20 7b           ":Y": {
1870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1880: 20 22 6c 61 62 65 6c 22 3a 20 22 49 6e 66 69 6e   "label": "Infin
1890: 69 74 69 66 22 2c 0a 20 20 20 20 20 20 20 20 20  itif",.         
18a0: 20 20 20 20 20 20 20 22 3a 22 3a 20 73 56 65 72         ":": sVer
18b0: 62 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  b,.            }
18c0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 3a  ,.            ":
18d0: 50 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20  P": {.          
18e0: 20 20 20 20 20 20 22 6c 61 62 65 6c 22 3a 20 22        "label": "
18f0: 50 61 72 74 69 63 69 70 65 20 70 72 c3 a9 73 65  Participe pr..se
1900: 6e 74 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20  nt",.           
1910: 20 20 20 20 20 22 3a 22 3a 20 5f 67 65 74 43 6f       ":": _getCo
1920: 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72 62  njWithTags(sVerb
1930: 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22  , self._tTags, "
1940: 3a 50 51 22 2c 20 22 3a 50 22 29 2c 0a 20 20 20  :PQ", ":P"),.   
1950: 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20           },.    
1960: 20 20 20 20 20 20 20 20 22 3a 51 22 3a 20 7b 0a          ":Q": {.
1970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1980: 22 6c 61 62 65 6c 22 3a 20 22 50 61 72 74 69 63  "label": "Partic
1990: 69 70 65 73 20 70 61 73 73 c3 a9 73 22 2c 0a 20  ipes pass..s",. 
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
19b0: 3a 51 31 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69  :Q1": _getConjWi
19c0: 74 68 54 61 67 73 28 73 56 65 72 62 2c 20 73 65  thTags(sVerb, se
19d0: 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a 50 51 22  lf._tTags, ":PQ"
19e0: 2c 20 22 3a 51 31 22 29 2c 0a 20 20 20 20 20 20  , ":Q1"),.      
19f0: 20 20 20 20 20 20 20 20 20 20 22 3a 51 32 22 3a            ":Q2":
1a00: 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67   _getConjWithTag
1a10: 73 28 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74  s(sVerb, self._t
1a20: 54 61 67 73 2c 20 22 3a 50 51 22 2c 20 22 3a 51  Tags, ":PQ", ":Q
1a30: 32 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20  2"),.           
1a40: 20 20 20 20 20 22 3a 51 33 22 3a 20 5f 67 65 74       ":Q3": _get
1a50: 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65  ConjWithTags(sVe
1a60: 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c  rb, self._tTags,
1a70: 20 22 3a 50 51 22 2c 20 22 3a 51 33 22 29 2c 0a   ":PQ", ":Q3"),.
1a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a90: 22 3a 51 34 22 3a 20 5f 67 65 74 43 6f 6e 6a 57  ":Q4": _getConjW
1aa0: 69 74 68 54 61 67 73 28 73 56 65 72 62 2c 20 73  ithTags(sVerb, s
1ab0: 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a 50 51  elf._tTags, ":PQ
1ac0: 22 2c 20 22 3a 51 34 22 29 2c 0a 20 20 20 20 20  ", ":Q4"),.     
1ad0: 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20         },.      
1ae0: 20 20 20 20 20 20 22 3a 49 70 22 3a 20 7b 0a 20        ":Ip": {. 
1af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1b00: 6c 61 62 65 6c 22 3a 20 22 50 72 c3 a9 73 65 6e  label": "Pr..sen
1b10: 74 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  t",.            
1b20: 20 20 20 20 22 3a 31 73 22 3a 20 5f 67 65 74 43      ":1s": _getC
1b30: 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72  onjWithTags(sVer
1b40: 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20  b, self._tTags, 
1b50: 22 3a 49 70 22 2c 20 22 3a 31 73 22 29 2c 0a 20  ":Ip", ":1s"),. 
1b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1b70: 3a 31 c5 9b 22 3a 20 5f 67 65 74 43 6f 6e 6a 57  :1..": _getConjW
1b80: 69 74 68 54 61 67 73 28 73 56 65 72 62 2c 20 73  ithTags(sVerb, s
1b90: 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a 49 70  elf._tTags, ":Ip
1ba0: 22 2c 20 22 3a 31 c5 9b 22 29 2c 0a 20 20 20 20  ", ":1.."),.    
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 32 73              ":2s
1bc0: 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54  ": _getConjWithT
1bd0: 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66 2e  ags(sVerb, self.
1be0: 5f 74 54 61 67 73 2c 20 22 3a 49 70 22 2c 20 22  _tTags, ":Ip", "
1bf0: 3a 32 73 22 29 2c 0a 20 20 20 20 20 20 20 20 20  :2s"),.         
1c00: 20 20 20 20 20 20 20 22 3a 33 73 22 3a 20 5f 67         ":3s": _g
1c10: 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73  etConjWithTags(s
1c20: 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67  Verb, self._tTag
1c30: 73 2c 20 22 3a 49 70 22 2c 20 22 3a 33 73 22 29  s, ":Ip", ":3s")
1c40: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
1c50: 20 20 22 3a 31 70 22 3a 20 5f 67 65 74 43 6f 6e    ":1p": _getCon
1c60: 6a 57 69 74 68 54 61 67 73 28 73 56 65 72 62 2c  jWithTags(sVerb,
1c70: 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a   self._tTags, ":
1c80: 49 70 22 2c 20 22 3a 31 70 22 29 2c 0a 20 20 20  Ip", ":1p"),.   
1c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 32               ":2
1ca0: 70 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68  p": _getConjWith
1cb0: 54 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66  Tags(sVerb, self
1cc0: 2e 5f 74 54 61 67 73 2c 20 22 3a 49 70 22 2c 20  ._tTags, ":Ip", 
1cd0: 22 3a 32 70 22 29 2c 0a 20 20 20 20 20 20 20 20  ":2p"),.        
1ce0: 20 20 20 20 20 20 20 20 22 3a 33 70 22 3a 20 5f          ":3p": _
1cf0: 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28  getConjWithTags(
1d00: 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61  sVerb, self._tTa
1d10: 67 73 2c 20 22 3a 49 70 22 2c 20 22 3a 33 70 22  gs, ":Ip", ":3p"
1d20: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ),.            }
1d30: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 3a  ,.            ":
1d40: 49 71 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 20  Iq": {.         
1d50: 20 20 20 20 20 20 20 22 6c 61 62 65 6c 22 3a 20         "label": 
1d60: 22 49 6d 70 61 72 66 61 69 74 22 2c 0a 20 20 20  "Imparfait",.   
1d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 31               ":1
1d80: 73 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68  s": _getConjWith
1d90: 54 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66  Tags(sVerb, self
1da0: 2e 5f 74 54 61 67 73 2c 20 22 3a 49 71 22 2c 20  ._tTags, ":Iq", 
1db0: 22 3a 31 73 22 29 2c 0a 20 20 20 20 20 20 20 20  ":1s"),.        
1dc0: 20 20 20 20 20 20 20 20 22 3a 32 73 22 3a 20 5f          ":2s": _
1dd0: 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28  getConjWithTags(
1de0: 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61  sVerb, self._tTa
1df0: 67 73 2c 20 22 3a 49 71 22 2c 20 22 3a 32 73 22  gs, ":Iq", ":2s"
1e00: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ),.             
1e10: 20 20 20 22 3a 33 73 22 3a 20 5f 67 65 74 43 6f     ":3s": _getCo
1e20: 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72 62  njWithTags(sVerb
1e30: 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22  , self._tTags, "
1e40: 3a 49 71 22 2c 20 22 3a 33 73 22 29 2c 0a 20 20  :Iq", ":3s"),.  
1e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a                ":
1e60: 31 70 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74  1p": _getConjWit
1e70: 68 54 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c  hTags(sVerb, sel
1e80: 66 2e 5f 74 54 61 67 73 2c 20 22 3a 49 71 22 2c  f._tTags, ":Iq",
1e90: 20 22 3a 31 70 22 29 2c 0a 20 20 20 20 20 20 20   ":1p"),.       
1ea0: 20 20 20 20 20 20 20 20 20 22 3a 32 70 22 3a 20           ":2p": 
1eb0: 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73  _getConjWithTags
1ec0: 28 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54  (sVerb, self._tT
1ed0: 61 67 73 2c 20 22 3a 49 71 22 2c 20 22 3a 32 70  ags, ":Iq", ":2p
1ee0: 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  "),.            
1ef0: 20 20 20 20 22 3a 33 70 22 3a 20 5f 67 65 74 43      ":3p": _getC
1f00: 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72  onjWithTags(sVer
1f10: 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20  b, self._tTags, 
1f20: 22 3a 49 71 22 2c 20 22 3a 33 70 22 29 2c 0a 20  ":Iq", ":3p"),. 
1f30: 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20             },.  
1f40: 20 20 20 20 20 20 20 20 20 20 22 3a 49 73 22 3a            ":Is":
1f50: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
1f60: 20 20 20 22 6c 61 62 65 6c 22 3a 20 22 50 61 73     "label": "Pas
1f70: 73 c3 a9 20 73 69 6d 70 6c 65 22 2c 0a 20 20 20  s.. simple",.   
1f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 31               ":1
1f90: 73 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68  s": _getConjWith
1fa0: 54 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66  Tags(sVerb, self
1fb0: 2e 5f 74 54 61 67 73 2c 20 22 3a 49 73 22 2c 20  ._tTags, ":Is", 
1fc0: 22 3a 31 73 22 29 2c 0a 20 20 20 20 20 20 20 20  ":1s"),.        
1fd0: 20 20 20 20 20 20 20 20 22 3a 32 73 22 3a 20 5f          ":2s": _
1fe0: 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28  getConjWithTags(
1ff0: 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61  sVerb, self._tTa
2000: 67 73 2c 20 22 3a 49 73 22 2c 20 22 3a 32 73 22  gs, ":Is", ":2s"
2010: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ),.             
2020: 20 20 20 22 3a 33 73 22 3a 20 5f 67 65 74 43 6f     ":3s": _getCo
2030: 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72 62  njWithTags(sVerb
2040: 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22  , self._tTags, "
2050: 3a 49 73 22 2c 20 22 3a 33 73 22 29 2c 0a 20 20  :Is", ":3s"),.  
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a                ":
2070: 31 70 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74  1p": _getConjWit
2080: 68 54 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c  hTags(sVerb, sel
2090: 66 2e 5f 74 54 61 67 73 2c 20 22 3a 49 73 22 2c  f._tTags, ":Is",
20a0: 20 22 3a 31 70 22 29 2c 0a 20 20 20 20 20 20 20   ":1p"),.       
20b0: 20 20 20 20 20 20 20 20 20 22 3a 32 70 22 3a 20           ":2p": 
20c0: 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73  _getConjWithTags
20d0: 28 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54  (sVerb, self._tT
20e0: 61 67 73 2c 20 22 3a 49 73 22 2c 20 22 3a 32 70  ags, ":Is", ":2p
20f0: 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  "),.            
2100: 20 20 20 20 22 3a 33 70 22 3a 20 5f 67 65 74 43      ":3p": _getC
2110: 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72  onjWithTags(sVer
2120: 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20  b, self._tTags, 
2130: 22 3a 49 73 22 2c 20 22 3a 33 70 22 29 2c 0a 20  ":Is", ":3p"),. 
2140: 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20             },.  
2150: 20 20 20 20 20 20 20 20 20 20 22 3a 49 66 22 3a            ":If":
2160: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
2170: 20 20 20 22 6c 61 62 65 6c 22 3a 20 22 46 75 74     "label": "Fut
2180: 75 72 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ur",.           
2190: 20 20 20 20 20 22 3a 31 73 22 3a 20 5f 67 65 74       ":1s": _get
21a0: 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65  ConjWithTags(sVe
21b0: 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c  rb, self._tTags,
21c0: 20 22 3a 49 66 22 2c 20 22 3a 31 73 22 29 2c 0a   ":If", ":1s"),.
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 22 3a 32 73 22 3a 20 5f 67 65 74 43 6f 6e 6a 57  ":2s": _getConjW
21f0: 69 74 68 54 61 67 73 28 73 56 65 72 62 2c 20 73  ithTags(sVerb, s
2200: 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a 49 66  elf._tTags, ":If
2210: 22 2c 20 22 3a 32 73 22 29 2c 0a 20 20 20 20 20  ", ":2s"),.     
2220: 20 20 20 20 20 20 20 20 20 20 20 22 3a 33 73 22             ":3s"
2230: 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61  : _getConjWithTa
2240: 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f  gs(sVerb, self._
2250: 74 54 61 67 73 2c 20 22 3a 49 66 22 2c 20 22 3a  tTags, ":If", ":
2260: 33 73 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20  3s"),.          
2270: 20 20 20 20 20 20 22 3a 31 70 22 3a 20 5f 67 65        ":1p": _ge
2280: 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 56  tConjWithTags(sV
2290: 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73  erb, self._tTags
22a0: 2c 20 22 3a 49 66 22 2c 20 22 3a 31 70 22 29 2c  , ":If", ":1p"),
22b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22c0: 20 22 3a 32 70 22 3a 20 5f 67 65 74 43 6f 6e 6a   ":2p": _getConj
22d0: 57 69 74 68 54 61 67 73 28 73 56 65 72 62 2c 20  WithTags(sVerb, 
22e0: 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a 49  self._tTags, ":I
22f0: 66 22 2c 20 22 3a 32 70 22 29 2c 0a 20 20 20 20  f", ":2p"),.    
2300: 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 33 70              ":3p
2310: 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54  ": _getConjWithT
2320: 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66 2e  ags(sVerb, self.
2330: 5f 74 54 61 67 73 2c 20 22 3a 49 66 22 2c 20 22  _tTags, ":If", "
2340: 3a 33 70 22 29 2c 0a 20 20 20 20 20 20 20 20 20  :3p"),.         
2350: 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20     },.          
2360: 20 20 22 3a 53 70 22 3a 20 7b 0a 20 20 20 20 20    ":Sp": {.     
2370: 20 20 20 20 20 20 20 20 20 20 20 22 6c 61 62 65             "labe
2380: 6c 22 3a 20 22 50 72 c3 a9 73 65 6e 74 20 73 75  l": "Pr..sent su
2390: 62 6a 6f 6e 63 74 69 66 22 2c 0a 20 20 20 20 20  bjonctif",.     
23a0: 20 20 20 20 20 20 20 20 20 20 20 22 3a 31 73 22             ":1s"
23b0: 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61  : _getConjWithTa
23c0: 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f  gs(sVerb, self._
23d0: 74 54 61 67 73 2c 20 22 3a 53 70 22 2c 20 22 3a  tTags, ":Sp", ":
23e0: 31 73 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20  1s"),.          
23f0: 20 20 20 20 20 20 22 3a 31 c5 9b 22 3a 20 5f 67        ":1..": _g
2400: 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73  etConjWithTags(s
2410: 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67  Verb, self._tTag
2420: 73 2c 20 22 3a 53 70 22 2c 20 22 3a 31 c5 9b 22  s, ":Sp", ":1.."
2430: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ),.             
2440: 20 20 20 22 3a 32 73 22 3a 20 5f 67 65 74 43 6f     ":2s": _getCo
2450: 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72 62  njWithTags(sVerb
2460: 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22  , self._tTags, "
2470: 3a 53 70 22 2c 20 22 3a 32 73 22 29 2c 0a 20 20  :Sp", ":2s"),.  
2480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a                ":
2490: 33 73 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74  3s": _getConjWit
24a0: 68 54 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c  hTags(sVerb, sel
24b0: 66 2e 5f 74 54 61 67 73 2c 20 22 3a 53 70 22 2c  f._tTags, ":Sp",
24c0: 20 22 3a 33 73 22 29 2c 0a 20 20 20 20 20 20 20   ":3s"),.       
24d0: 20 20 20 20 20 20 20 20 20 22 3a 31 70 22 3a 20           ":1p": 
24e0: 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73  _getConjWithTags
24f0: 28 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54  (sVerb, self._tT
2500: 61 67 73 2c 20 22 3a 53 70 22 2c 20 22 3a 31 70  ags, ":Sp", ":1p
2510: 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  "),.            
2520: 20 20 20 20 22 3a 32 70 22 3a 20 5f 67 65 74 43      ":2p": _getC
2530: 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72  onjWithTags(sVer
2540: 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20  b, self._tTags, 
2550: 22 3a 53 70 22 2c 20 22 3a 32 70 22 29 2c 0a 20  ":Sp", ":2p"),. 
2560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2570: 3a 33 70 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69  :3p": _getConjWi
2580: 74 68 54 61 67 73 28 73 56 65 72 62 2c 20 73 65  thTags(sVerb, se
2590: 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a 53 70 22  lf._tTags, ":Sp"
25a0: 2c 20 22 3a 33 70 22 29 2c 0a 20 20 20 20 20 20  , ":3p"),.      
25b0: 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20        },.       
25c0: 20 20 20 20 20 22 3a 53 71 22 3a 20 7b 0a 20 20       ":Sq": {.  
25d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6c                "l
25e0: 61 62 65 6c 22 3a 20 22 49 6d 70 61 72 66 61 69  abel": "Imparfai
25f0: 74 20 73 75 62 6a 6f 6e 63 74 69 66 22 2c 0a 20  t subjonctif",. 
2600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2610: 3a 31 73 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69  :1s": _getConjWi
2620: 74 68 54 61 67 73 28 73 56 65 72 62 2c 20 73 65  thTags(sVerb, se
2630: 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a 53 71 22  lf._tTags, ":Sq"
2640: 2c 20 22 3a 31 73 22 29 2c 0a 20 20 20 20 20 20  , ":1s"),.      
2650: 20 20 20 20 20 20 20 20 20 20 22 3a 31 c5 9b 22            ":1.."
2660: 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61  : _getConjWithTa
2670: 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f  gs(sVerb, self._
2680: 74 54 61 67 73 2c 20 22 3a 53 71 22 2c 20 22 3a  tTags, ":Sq", ":
2690: 31 c5 9b 22 29 2c 0a 20 20 20 20 20 20 20 20 20  1.."),.         
26a0: 20 20 20 20 20 20 20 22 3a 32 73 22 3a 20 5f 67         ":2s": _g
26b0: 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73  etConjWithTags(s
26c0: 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67  Verb, self._tTag
26d0: 73 2c 20 22 3a 53 71 22 2c 20 22 3a 32 73 22 29  s, ":Sq", ":2s")
26e0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
26f0: 20 20 22 3a 33 73 22 3a 20 5f 67 65 74 43 6f 6e    ":3s": _getCon
2700: 6a 57 69 74 68 54 61 67 73 28 73 56 65 72 62 2c  jWithTags(sVerb,
2710: 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a   self._tTags, ":
2720: 53 71 22 2c 20 22 3a 33 73 22 29 2c 0a 20 20 20  Sq", ":3s"),.   
2730: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 31               ":1
2740: 70 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68  p": _getConjWith
2750: 54 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66  Tags(sVerb, self
2760: 2e 5f 74 54 61 67 73 2c 20 22 3a 53 71 22 2c 20  ._tTags, ":Sq", 
2770: 22 3a 31 70 22 29 2c 0a 20 20 20 20 20 20 20 20  ":1p"),.        
2780: 20 20 20 20 20 20 20 20 22 3a 32 70 22 3a 20 5f          ":2p": _
2790: 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28  getConjWithTags(
27a0: 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61  sVerb, self._tTa
27b0: 67 73 2c 20 22 3a 53 71 22 2c 20 22 3a 32 70 22  gs, ":Sq", ":2p"
27c0: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ),.             
27d0: 20 20 20 22 3a 33 70 22 3a 20 5f 67 65 74 43 6f     ":3p": _getCo
27e0: 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72 62  njWithTags(sVerb
27f0: 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22  , self._tTags, "
2800: 3a 53 71 22 2c 20 22 3a 33 70 22 29 2c 0a 20 20  :Sq", ":3p"),.  
2810: 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20            },.   
2820: 20 20 20 20 20 20 20 20 20 22 3a 4b 22 3a 20 7b           ":K": {
2830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2840: 20 22 6c 61 62 65 6c 22 3a 20 22 43 6f 6e 64 69   "label": "Condi
2850: 74 69 6f 6e 6e 65 6c 22 2c 0a 20 20 20 20 20 20  tionnel",.      
2860: 20 20 20 20 20 20 20 20 20 20 22 3a 31 73 22 3a            ":1s":
2870: 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67   _getConjWithTag
2880: 73 28 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74  s(sVerb, self._t
2890: 54 61 67 73 2c 20 22 3a 4b 22 2c 20 22 3a 31 73  Tags, ":K", ":1s
28a0: 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  "),.            
28b0: 20 20 20 20 22 3a 32 73 22 3a 20 5f 67 65 74 43      ":2s": _getC
28c0: 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72  onjWithTags(sVer
28d0: 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20  b, self._tTags, 
28e0: 22 3a 4b 22 2c 20 22 3a 32 73 22 29 2c 0a 20 20  ":K", ":2s"),.  
28f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a                ":
2900: 33 73 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74  3s": _getConjWit
2910: 68 54 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c  hTags(sVerb, sel
2920: 66 2e 5f 74 54 61 67 73 2c 20 22 3a 4b 22 2c 20  f._tTags, ":K", 
2930: 22 3a 33 73 22 29 2c 0a 20 20 20 20 20 20 20 20  ":3s"),.        
2940: 20 20 20 20 20 20 20 20 22 3a 31 70 22 3a 20 5f          ":1p": _
2950: 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67 73 28  getConjWithTags(
2960: 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74 54 61  sVerb, self._tTa
2970: 67 73 2c 20 22 3a 4b 22 2c 20 22 3a 31 70 22 29  gs, ":K", ":1p")
2980: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
2990: 20 20 22 3a 32 70 22 3a 20 5f 67 65 74 43 6f 6e    ":2p": _getCon
29a0: 6a 57 69 74 68 54 61 67 73 28 73 56 65 72 62 2c  jWithTags(sVerb,
29b0: 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a   self._tTags, ":
29c0: 4b 22 2c 20 22 3a 32 70 22 29 2c 0a 20 20 20 20  K", ":2p"),.    
29d0: 20 20 20 20 20 20 20 20 20 20 20 20 22 3a 33 70              ":3p
29e0: 22 3a 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54  ": _getConjWithT
29f0: 61 67 73 28 73 56 65 72 62 2c 20 73 65 6c 66 2e  ags(sVerb, self.
2a00: 5f 74 54 61 67 73 2c 20 22 3a 4b 22 2c 20 22 3a  _tTags, ":K", ":
2a10: 33 70 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20  3p"),.          
2a20: 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20    },.           
2a30: 20 22 3a 45 22 3a 20 7b 0a 20 20 20 20 20 20 20   ":E": {.       
2a40: 20 20 20 20 20 20 20 20 20 22 6c 61 62 65 6c 22           "label"
2a50: 3a 20 22 49 6d 70 c3 a9 72 61 74 69 66 22 2c 0a  : "Imp..ratif",.
2a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a70: 22 3a 32 73 22 3a 20 5f 67 65 74 43 6f 6e 6a 57  ":2s": _getConjW
2a80: 69 74 68 54 61 67 73 28 73 56 65 72 62 2c 20 73  ithTags(sVerb, s
2a90: 65 6c 66 2e 5f 74 54 61 67 73 2c 20 22 3a 45 22  elf._tTags, ":E"
2aa0: 2c 20 22 3a 32 73 22 29 2c 0a 20 20 20 20 20 20  , ":2s"),.      
2ab0: 20 20 20 20 20 20 20 20 20 20 22 3a 31 70 22 3a            ":1p":
2ac0: 20 5f 67 65 74 43 6f 6e 6a 57 69 74 68 54 61 67   _getConjWithTag
2ad0: 73 28 73 56 65 72 62 2c 20 73 65 6c 66 2e 5f 74  s(sVerb, self._t
2ae0: 54 61 67 73 2c 20 22 3a 45 22 2c 20 22 3a 31 70  Tags, ":E", ":1p
2af0: 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  "),.            
2b00: 20 20 20 20 22 3a 32 70 22 3a 20 5f 67 65 74 43      ":2p": _getC
2b10: 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 56 65 72  onjWithTags(sVer
2b20: 62 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73 2c 20  b, self._tTags, 
2b30: 22 3a 45 22 2c 20 22 3a 32 70 22 29 2c 0a 20 20  ":E", ":2p"),.  
2b40: 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20            },.   
2b50: 20 20 20 20 20 7d 0a 0a 20 20 20 20 64 65 66 20       }..    def 
2b60: 5f 72 65 61 64 61 62 6c 65 49 6e 66 6f 20 28 73  _readableInfo (s
2b70: 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 22 72  elf):.        "r
2b80: 65 74 75 72 6e 73 20 72 65 61 64 61 62 6c 65 20  eturns readable 
2b90: 69 6e 66 6f 73 20 61 62 6f 75 74 20 73 56 65 72  infos about sVer
2ba0: 62 22 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a  b".        try:.
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e              if n
2bc0: 6f 74 20 73 65 6c 66 2e 5f 73 52 61 77 49 6e 66  ot self._sRawInf
2bd0: 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  o:.             
2be0: 20 20 20 72 65 74 75 72 6e 20 22 76 65 72 62 65     return "verbe
2bf0: 20 69 6e 63 6f 6e 6e 75 22 0a 20 20 20 20 20 20   inconnu".      
2c00: 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 73        if self._s
2c10: 52 61 77 49 6e 66 6f 5b 37 3a 38 5d 20 3d 3d 20  RawInfo[7:8] == 
2c20: 22 65 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20  "e":.           
2c30: 20 20 20 20 20 73 65 6c 66 2e 73 56 65 72 62 41       self.sVerbA
2c40: 75 78 20 3d 20 22 c3 aa 74 72 65 22 0a 20 20 20  ux = "..tre".   
2c50: 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20           else:. 
2c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
2c70: 65 6c 66 2e 73 56 65 72 62 41 75 78 20 3d 20 22  elf.sVerbAux = "
2c80: 61 76 6f 69 72 22 0a 20 20 20 20 20 20 20 20 20  avoir".         
2c90: 20 20 20 73 47 72 6f 75 70 20 3d 20 5f 64 47 72     sGroup = _dGr
2ca0: 6f 75 70 2e 67 65 74 28 73 65 6c 66 2e 5f 73 52  oup.get(self._sR
2cb0: 61 77 49 6e 66 6f 5b 30 5d 2c 20 22 23 20 65 72  awInfo[0], "# er
2cc0: 72 65 75 72 20 22 29 0a 20 20 20 20 20 20 20 20  reur ").        
2cd0: 20 20 20 20 73 49 6e 66 6f 20 3d 20 22 22 0a 20      sInfo = "". 
2ce0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65             if se
2cf0: 6c 66 2e 5f 73 52 61 77 49 6e 66 6f 5b 33 3a 34  lf._sRawInfo[3:4
2d00: 5d 20 3d 3d 20 22 74 22 3a 0a 20 20 20 20 20 20  ] == "t":.      
2d10: 20 20 20 20 20 20 20 20 20 20 73 49 6e 66 6f 20            sInfo 
2d20: 3d 20 22 74 72 61 6e 73 69 74 69 66 22 0a 20 20  = "transitif".  
2d30: 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 73            elif s
2d40: 65 6c 66 2e 5f 73 52 61 77 49 6e 66 6f 5b 34 3a  elf._sRawInfo[4:
2d50: 35 5d 20 3d 3d 20 22 6e 22 3a 0a 20 20 20 20 20  5] == "n":.     
2d60: 20 20 20 20 20 20 20 20 20 20 20 73 49 6e 66 6f             sInfo
2d70: 20 3d 20 22 74 72 61 6e 73 69 74 69 66 20 69 6e   = "transitif in
2d80: 64 69 72 65 63 74 22 0a 20 20 20 20 20 20 20 20  direct".        
2d90: 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e 5f 73      elif self._s
2da0: 52 61 77 49 6e 66 6f 5b 32 3a 33 5d 20 3d 3d 20  RawInfo[2:3] == 
2db0: 22 69 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20  "i":.           
2dc0: 20 20 20 20 20 73 49 6e 66 6f 20 3d 20 22 69 6e       sInfo = "in
2dd0: 74 72 61 6e 73 69 74 69 66 22 0a 20 20 20 20 20  transitif".     
2de0: 20 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c 66         elif self
2df0: 2e 5f 73 52 61 77 49 6e 66 6f 5b 35 3a 36 5d 20  ._sRawInfo[5:6] 
2e00: 3d 3d 20 22 72 22 3a 0a 20 20 20 20 20 20 20 20  == "r":.        
2e10: 20 20 20 20 20 20 20 20 73 49 6e 66 6f 20 3d 20          sInfo = 
2e20: 22 70 72 6f 6e 6f 6d 69 6e 61 6c 20 72 c3 a9 63  "pronominal r..c
2e30: 69 70 72 6f 71 75 65 22 0a 20 20 20 20 20 20 20  iproque".       
2e40: 20 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e 5f       elif self._
2e50: 73 52 61 77 49 6e 66 6f 5b 35 3a 36 5d 20 3d 3d  sRawInfo[5:6] ==
2e60: 20 22 70 22 3a 0a 20 20 20 20 20 20 20 20 20 20   "p":.          
2e70: 20 20 20 20 20 20 73 49 6e 66 6f 20 3d 20 22 70        sInfo = "p
2e80: 72 6f 6e 6f 6d 69 6e 61 6c 22 0a 20 20 20 20 20  ronominal".     
2e90: 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f         if self._
2ea0: 73 52 61 77 49 6e 66 6f 5b 35 3a 36 5d 20 69 6e  sRawInfo[5:6] in
2eb0: 20 5b 22 71 22 2c 20 22 75 22 2c 20 22 76 22 2c   ["q", "u", "v",
2ec0: 20 22 65 22 5d 3a 0a 20 20 20 20 20 20 20 20 20   "e"]:.         
2ed0: 20 20 20 20 20 20 20 73 49 6e 66 6f 20 3d 20 73         sInfo = s
2ee0: 49 6e 66 6f 20 2b 20 22 20 28 2b 20 75 73 61 67  Info + " (+ usag
2ef0: 65 20 70 72 6f 6e 6f 6d 69 6e 61 6c 29 22 0a 20  e pronominal)". 
2f00: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65             if se
2f10: 6c 66 2e 5f 73 52 61 77 49 6e 66 6f 5b 36 3a 37  lf._sRawInfo[6:7
2f20: 5d 20 3d 3d 20 22 6d 22 3a 0a 20 20 20 20 20 20  ] == "m":.      
2f30: 20 20 20 20 20 20 20 20 20 20 73 49 6e 66 6f 20            sInfo 
2f40: 3d 20 73 49 6e 66 6f 20 2b 20 22 20 69 6d 70 65  = sInfo + " impe
2f50: 72 73 6f 6e 6e 65 6c 22 0a 20 20 20 20 20 20 20  rsonnel".       
2f60: 20 20 20 20 20 69 66 20 6e 6f 74 20 73 49 6e 66       if not sInf
2f70: 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  o:.             
2f80: 20 20 20 73 49 6e 66 6f 20 3d 20 22 23 20 65 72     sInfo = "# er
2f90: 72 65 75 72 20 2d 20 63 6f 64 65 20 3a 20 22 20  reur - code : " 
2fa0: 2b 20 73 65 6c 66 2e 5f 73 52 61 77 49 6e 66 6f  + self._sRawInfo
2fb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2fc0: 75 72 6e 20 73 47 72 6f 75 70 20 2b 20 22 20 c2  urn sGroup + " .
2fd0: b7 20 22 20 2b 20 73 49 6e 66 6f 0a 20 20 20 20  . " + sInfo.    
2fe0: 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20      except:.    
2ff0: 20 20 20 20 20 20 20 20 74 72 61 63 65 62 61 63          tracebac
3000: 6b 2e 70 72 69 6e 74 5f 65 78 63 28 29 0a 20 20  k.print_exc().  
3010: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3020: 20 22 23 20 65 72 72 65 75 72 22 0a 0a 20 20 20   "# erreur"..   
3030: 20 64 65 66 20 69 6e 66 69 6e 69 74 69 66 20 28   def infinitif (
3040: 73 65 6c 66 2c 20 62 50 72 6f 2c 20 62 4e 65 67  self, bPro, bNeg
3050: 2c 20 62 54 70 73 43 6f 2c 20 62 49 6e 74 2c 20  , bTpsCo, bInt, 
3060: 62 46 65 6d 29 3a 0a 20 20 20 20 20 20 20 20 74  bFem):.        t
3070: 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry:.            
3080: 69 66 20 62 54 70 73 43 6f 3a 0a 20 20 20 20 20  if bTpsCo:.     
3090: 20 20 20 20 20 20 20 20 20 20 20 73 49 6e 66 69             sInfi
30a0: 20 3d 20 73 65 6c 66 2e 73 56 65 72 62 41 75 78   = self.sVerbAux
30b0: 20 20 69 66 20 6e 6f 74 20 62 50 72 6f 20 20 65    if not bPro  e
30c0: 6c 73 65 20 20 22 c3 aa 74 72 65 22 0a 20 20 20  lse  "..tre".   
30d0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20           else:. 
30e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
30f0: 49 6e 66 69 20 3d 20 73 65 6c 66 2e 73 56 65 72  Infi = self.sVer
3100: 62 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  b.            if
3110: 20 62 50 72 6f 3a 0a 20 20 20 20 20 20 20 20 20   bPro:.         
3120: 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 62         if self.b
3130: 50 72 6f 57 69 74 68 45 6e 3a 0a 20 20 20 20 20  ProWithEn:.     
3140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
3150: 49 6e 66 69 20 3d 20 22 73 e2 80 99 65 6e 20 22  Infi = "s...en "
3160: 20 2b 20 73 49 6e 66 69 0a 20 20 20 20 20 20 20   + sInfi.       
3170: 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20           else:. 
3180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3190: 20 20 20 73 49 6e 66 69 20 3d 20 22 73 e2 80 99     sInfi = "s...
31a0: 22 20 2b 20 73 49 6e 66 69 20 20 69 66 20 5f 7a  " + sInfi  if _z
31b0: 53 74 61 72 74 56 6f 79 2e 73 65 61 72 63 68 28  StartVoy.search(
31c0: 73 49 6e 66 69 29 20 20 65 6c 73 65 20 20 22 73  sInfi)  else  "s
31d0: 65 20 22 20 2b 20 73 49 6e 66 69 0a 20 20 20 20  e " + sInfi.    
31e0: 20 20 20 20 20 20 20 20 69 66 20 62 4e 65 67 3a          if bNeg:
31f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3200: 20 73 49 6e 66 69 20 3d 20 22 6e 65 20 70 61 73   sInfi = "ne pas
3210: 20 22 20 2b 20 73 49 6e 66 69 0a 20 20 20 20 20   " + sInfi.     
3220: 20 20 20 20 20 20 20 69 66 20 62 54 70 73 43 6f         if bTpsCo
3230: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
3240: 20 20 73 49 6e 66 69 20 2b 3d 20 22 20 22 20 2b    sInfi += " " +
3250: 20 73 65 6c 66 2e 5f 73 65 65 6b 50 70 61 73 28   self._seekPpas(
3260: 62 50 72 6f 2c 20 62 46 65 6d 2c 20 73 65 6c 66  bPro, bFem, self
3270: 2e 5f 73 52 61 77 49 6e 66 6f 5b 35 5d 20 3d 3d  ._sRawInfo[5] ==
3280: 20 22 72 22 29 0a 20 20 20 20 20 20 20 20 20 20   "r").          
3290: 20 20 69 66 20 62 49 6e 74 3a 0a 20 20 20 20 20    if bInt:.     
32a0: 20 20 20 20 20 20 20 20 20 20 20 73 49 6e 66 69             sInfi
32b0: 20 2b 3d 20 22 20 e2 80 a6 20 3f 22 0a 20 20 20   += " ... ?".   
32c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32d0: 73 49 6e 66 69 0a 20 20 20 20 20 20 20 20 65 78  sInfi.        ex
32e0: 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20  cept:.          
32f0: 20 20 74 72 61 63 65 62 61 63 6b 2e 70 72 69 6e    traceback.prin
3300: 74 5f 65 78 63 28 29 0a 20 20 20 20 20 20 20 20  t_exc().        
3310: 20 20 20 20 72 65 74 75 72 6e 20 22 23 20 65 72      return "# er
3320: 72 65 75 72 22 0a 0a 20 20 20 20 64 65 66 20 70  reur"..    def p
3330: 61 72 74 69 63 69 70 65 50 61 73 73 65 20 28 73  articipePasse (s
3340: 65 6c 66 2c 20 73 57 68 6f 29 3a 0a 20 20 20 20  elf, sWho):.    
3350: 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20      try:.       
3360: 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66       return self
3370: 2e 64 43 6f 6e 6a 5b 22 3a 51 22 5d 5b 73 57 68  .dConj[":Q"][sWh
3380: 6f 5d 0a 20 20 20 20 20 20 20 20 65 78 63 65 70  o].        excep
3390: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  t:.            t
33a0: 72 61 63 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65  raceback.print_e
33b0: 78 63 28 29 0a 20 20 20 20 20 20 20 20 20 20 20  xc().           
33c0: 20 72 65 74 75 72 6e 20 22 23 20 65 72 72 65 75   return "# erreu
33d0: 72 22 0a 0a 20 20 20 20 64 65 66 20 70 61 72 74  r"..    def part
33e0: 69 63 69 70 65 50 72 65 73 65 6e 74 20 28 73 65  icipePresent (se
33f0: 6c 66 2c 20 62 50 72 6f 2c 20 62 4e 65 67 2c 20  lf, bPro, bNeg, 
3400: 62 54 70 73 43 6f 2c 20 62 49 6e 74 2c 20 62 46  bTpsCo, bInt, bF
3410: 65 6d 29 3a 0a 20 20 20 20 20 20 20 20 74 72 79  em):.        try
3420: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  :.            if
3430: 20 6e 6f 74 20 73 65 6c 66 2e 64 43 6f 6e 6a 5b   not self.dConj[
3440: 22 3a 50 22 5d 5b 22 3a 22 5d 3a 0a 20 20 20 20  ":P"][":"]:.    
3450: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3460: 72 6e 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  rn "".          
3470: 20 20 69 66 20 62 54 70 73 43 6f 3a 0a 20 20 20    if bTpsCo:.   
3480: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 50 61               sPa
3490: 72 74 50 72 65 20 3d 20 5f 67 65 74 43 6f 6e 6a  rtPre = _getConj
34a0: 57 69 74 68 54 61 67 73 28 73 65 6c 66 2e 73 56  WithTags(self.sV
34b0: 65 72 62 41 75 78 2c 20 73 65 6c 66 2e 5f 74 54  erbAux, self._tT
34c0: 61 67 73 41 75 78 2c 20 22 3a 50 51 22 2c 20 22  agsAux, ":PQ", "
34d0: 3a 50 22 29 20 20 69 66 20 6e 6f 74 20 62 50 72  :P")  if not bPr
34e0: 6f 20 20 65 6c 73 65 20 20 67 65 74 43 6f 6e 6a  o  else  getConj
34f0: 28 22 c3 aa 74 72 65 22 2c 20 22 3a 50 51 22 2c  ("..tre", ":PQ",
3500: 20 22 3a 50 22 29 0a 20 20 20 20 20 20 20 20 20   ":P").         
3510: 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20     else:.       
3520: 20 20 20 20 20 20 20 20 20 73 50 61 72 74 50 72           sPartPr
3530: 65 20 3d 20 73 65 6c 66 2e 64 43 6f 6e 6a 5b 22  e = self.dConj["
3540: 3a 50 22 5d 5b 22 3a 22 5d 0a 20 20 20 20 20 20  :P"][":"].      
3550: 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 50 61        if not sPa
3560: 72 74 50 72 65 3a 0a 20 20 20 20 20 20 20 20 20  rtPre:.         
3570: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 22         return ""
3580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 45 6c  .            bEl
3590: 69 20 3d 20 54 72 75 65 20 20 69 66 20 5f 7a 53  i = True  if _zS
35a0: 74 61 72 74 56 6f 79 2e 73 65 61 72 63 68 28 73  tartVoy.search(s
35b0: 50 61 72 74 50 72 65 29 20 20 65 6c 73 65 20 20  PartPre)  else  
35c0: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20  False.          
35d0: 20 20 69 66 20 62 50 72 6f 3a 0a 20 20 20 20 20    if bPro:.     
35e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65             if se
35f0: 6c 66 2e 62 50 72 6f 57 69 74 68 45 6e 3a 0a 20  lf.bProWithEn:. 
3600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3610: 20 20 20 73 50 61 72 74 50 72 65 20 3d 20 22 73     sPartPre = "s
3620: e2 80 99 65 6e 20 22 20 2b 20 73 50 61 72 74 50  ...en " + sPartP
3630: 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  re.             
3640: 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20     else:.       
3650: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 50 61               sPa
3660: 72 74 50 72 65 20 3d 20 22 73 e2 80 99 22 20 2b  rtPre = "s..." +
3670: 20 73 50 61 72 74 50 72 65 20 20 69 66 20 62 45   sPartPre  if bE
3680: 6c 69 20 20 65 6c 73 65 20 20 22 73 65 20 22 20  li  else  "se " 
3690: 2b 20 73 50 61 72 74 50 72 65 0a 20 20 20 20 20  + sPartPre.     
36a0: 20 20 20 20 20 20 20 69 66 20 62 4e 65 67 3a 0a         if bNeg:.
36b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36c0: 69 66 20 62 45 6c 69 20 61 6e 64 20 6e 6f 74 20  if bEli and not 
36d0: 62 50 72 6f 3a 0a 20 20 20 20 20 20 20 20 20 20  bPro:.          
36e0: 20 20 20 20 20 20 20 20 20 20 73 50 61 72 74 50            sPartP
36f0: 72 65 20 3d 20 22 6e e2 80 99 22 20 2b 20 73 50  re = "n..." + sP
3700: 61 72 74 50 72 65 20 2b 20 22 20 70 61 73 22 0a  artPre + " pas".
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3720: 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20  else:.          
3730: 20 20 20 20 20 20 20 20 20 20 73 50 61 72 74 50            sPartP
3740: 72 65 20 3d 20 22 6e 65 20 22 20 2b 20 73 50 61  re = "ne " + sPa
3750: 72 74 50 72 65 20 2b 20 22 20 70 61 73 22 0a 20  rtPre + " pas". 
3760: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 62 54             if bT
3770: 70 73 43 6f 3a 0a 20 20 20 20 20 20 20 20 20 20  psCo:.          
3780: 20 20 20 20 20 20 73 50 61 72 74 50 72 65 20 2b        sPartPre +
3790: 3d 20 22 20 22 20 2b 20 73 65 6c 66 2e 5f 73 65  = " " + self._se
37a0: 65 6b 50 70 61 73 28 62 50 72 6f 2c 20 62 46 65  ekPpas(bPro, bFe
37b0: 6d 2c 20 73 65 6c 66 2e 5f 73 52 61 77 49 6e 66  m, self._sRawInf
37c0: 6f 5b 35 5d 20 3d 3d 20 22 72 22 29 0a 20 20 20  o[5] == "r").   
37d0: 20 20 20 20 20 20 20 20 20 69 66 20 62 49 6e 74           if bInt
37e0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
37f0: 20 20 73 50 61 72 74 50 72 65 20 2b 3d 20 22 20    sPartPre += " 
3800: e2 80 a6 20 3f 22 0a 20 20 20 20 20 20 20 20 20  ... ?".         
3810: 20 20 20 72 65 74 75 72 6e 20 73 50 61 72 74 50     return sPartP
3820: 72 65 0a 20 20 20 20 20 20 20 20 65 78 63 65 70  re.        excep
3830: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  t:.            t
3840: 72 61 63 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65  raceback.print_e
3850: 78 63 28 29 0a 20 20 20 20 20 20 20 20 20 20 20  xc().           
3860: 20 72 65 74 75 72 6e 20 22 23 20 65 72 72 65 75   return "# erreu
3870: 72 22 0a 0a 20 20 20 20 64 65 66 20 63 6f 6e 6a  r"..    def conj
3880: 75 67 75 65 20 28 73 65 6c 66 2c 20 73 54 65 6d  ugue (self, sTem
3890: 70 73 2c 20 73 57 68 6f 2c 20 62 50 72 6f 2c 20  ps, sWho, bPro, 
38a0: 62 4e 65 67 2c 20 62 54 70 73 43 6f 2c 20 62 49  bNeg, bTpsCo, bI
38b0: 6e 74 2c 20 62 46 65 6d 29 3a 0a 20 20 20 20 20  nt, bFem):.     
38c0: 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20     try:.        
38d0: 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e      if not self.
38e0: 64 43 6f 6e 6a 5b 73 54 65 6d 70 73 5d 5b 73 57  dConj[sTemps][sW
38f0: 68 6f 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ho]:.           
3900: 20 20 20 20 20 72 65 74 75 72 6e 20 22 22 0a 20       return "". 
3910: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f             if no
3920: 74 20 62 54 70 73 43 6f 20 61 6e 64 20 62 49 6e  t bTpsCo and bIn
3930: 74 20 61 6e 64 20 73 57 68 6f 20 3d 3d 20 22 3a  t and sWho == ":
3940: 31 73 22 20 61 6e 64 20 73 65 6c 66 2e 64 43 6f  1s" and self.dCo
3950: 6e 6a 5b 73 54 65 6d 70 73 5d 2e 67 65 74 28 22  nj[sTemps].get("
3960: 3a 31 c5 9b 22 2c 20 46 61 6c 73 65 29 3a 0a 20  :1..", False):. 
3970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
3980: 57 68 6f 20 3d 20 22 3a 31 c5 9b 22 0a 20 20 20  Who = ":1..".   
3990: 20 20 20 20 20 20 20 20 20 69 66 20 62 54 70 73           if bTps
39a0: 43 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  Co:.            
39b0: 20 20 20 20 73 43 6f 6e 6a 20 3d 20 5f 67 65 74      sConj = _get
39c0: 43 6f 6e 6a 57 69 74 68 54 61 67 73 28 73 65 6c  ConjWithTags(sel
39d0: 66 2e 73 56 65 72 62 41 75 78 2c 20 73 65 6c 66  f.sVerbAux, self
39e0: 2e 5f 74 54 61 67 73 41 75 78 2c 20 73 54 65 6d  ._tTagsAux, sTem
39f0: 70 73 2c 20 73 57 68 6f 29 20 20 69 66 20 6e 6f  ps, sWho)  if no
3a00: 74 20 62 50 72 6f 20 20 65 6c 73 65 20 20 67 65  t bPro  else  ge
3a10: 74 43 6f 6e 6a 28 22 c3 aa 74 72 65 22 2c 20 73  tConj("..tre", s
3a20: 54 65 6d 70 73 2c 20 73 57 68 6f 29 0a 20 20 20  Temps, sWho).   
3a30: 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20           else:. 
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
3a50: 43 6f 6e 6a 20 3d 20 73 65 6c 66 2e 64 43 6f 6e  Conj = self.dCon
3a60: 6a 5b 73 54 65 6d 70 73 5d 5b 73 57 68 6f 5d 0a  j[sTemps][sWho].
3a70: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e              if n
3a80: 6f 74 20 73 43 6f 6e 6a 3a 0a 20 20 20 20 20 20  ot sConj:.      
3a90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3aa0: 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20   "".            
3ab0: 62 45 6c 69 20 3d 20 54 72 75 65 20 20 69 66 20  bEli = True  if 
3ac0: 5f 7a 53 74 61 72 74 56 6f 79 2e 73 65 61 72 63  _zStartVoy.searc
3ad0: 68 28 73 43 6f 6e 6a 29 20 20 65 6c 73 65 20 20  h(sConj)  else  
3ae0: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20  False.          
3af0: 20 20 69 66 20 62 50 72 6f 3a 0a 20 20 20 20 20    if bPro:.     
3b00: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f             if no
3b10: 74 20 73 65 6c 66 2e 62 50 72 6f 57 69 74 68 45  t self.bProWithE
3b20: 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n:.             
3b30: 20 20 20 20 20 20 20 73 43 6f 6e 6a 20 3d 20 5f         sConj = _
3b40: 64 50 72 6f 4f 62 6a 45 6c 5b 73 57 68 6f 5d 20  dProObjEl[sWho] 
3b50: 2b 20 73 43 6f 6e 6a 20 20 69 66 20 62 45 6c 69  + sConj  if bEli
3b60: 20 20 65 6c 73 65 20 5f 64 50 72 6f 4f 62 6a 5b    else _dProObj[
3b70: 73 57 68 6f 5d 20 2b 20 73 43 6f 6e 6a 0a 20 20  sWho] + sConj.  
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
3b90: 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  se:.            
3ba0: 20 20 20 20 20 20 20 20 73 43 6f 6e 6a 20 3d 20          sConj = 
3bb0: 5f 64 50 72 6f 4f 62 6a 45 6c 5b 73 57 68 6f 5d  _dProObjEl[sWho]
3bc0: 20 2b 20 22 65 6e 20 22 20 2b 20 73 43 6f 6e 6a   + "en " + sConj
3bd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
3be0: 62 4e 65 67 3a 0a 20 20 20 20 20 20 20 20 20 20  bNeg:.          
3bf0: 20 20 20 20 20 20 73 43 6f 6e 6a 20 3d 20 22 6e        sConj = "n
3c00: e2 80 99 22 20 2b 20 73 43 6f 6e 6a 20 20 69 66  ..." + sConj  if
3c10: 20 62 45 6c 69 20 61 6e 64 20 6e 6f 74 20 62 50   bEli and not bP
3c20: 72 6f 20 20 65 6c 73 65 20 20 22 6e 65 20 22 20  ro  else  "ne " 
3c30: 2b 20 73 43 6f 6e 6a 0a 20 20 20 20 20 20 20 20  + sConj.        
3c40: 20 20 20 20 69 66 20 62 49 6e 74 3a 0a 20 20 20      if bInt:.   
3c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3c60: 73 57 68 6f 20 3d 3d 20 22 3a 33 73 22 20 61 6e  sWho == ":3s" an
3c70: 64 20 6e 6f 74 20 5f 7a 4e 65 65 64 54 65 75 70  d not _zNeedTeup
3c80: 68 2e 73 65 61 72 63 68 28 73 43 6f 6e 6a 29 3a  h.search(sConj):
3c90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3ca0: 20 20 20 20 20 73 43 6f 6e 6a 20 2b 3d 20 22 2d       sConj += "-
3cb0: 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t".             
3cc0: 20 20 20 73 43 6f 6e 6a 20 2b 3d 20 22 2d 22 20     sConj += "-" 
3cd0: 2b 20 73 65 6c 66 2e 5f 67 65 74 50 72 6f 6e 6f  + self._getProno
3ce0: 6d 28 73 57 68 6f 2c 20 62 46 65 6d 29 0a 20 20  m(sWho, bFem).  
3cf0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a            else:.
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d10: 69 66 20 73 57 68 6f 20 3d 3d 20 22 3a 31 73 22  if sWho == ":1s"
3d20: 20 61 6e 64 20 62 45 6c 69 20 61 6e 64 20 6e 6f   and bEli and no
3d30: 74 20 62 4e 65 67 20 61 6e 64 20 6e 6f 74 20 62  t bNeg and not b
3d40: 50 72 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20  Pro:.           
3d50: 20 20 20 20 20 20 20 20 20 73 43 6f 6e 6a 20 3d           sConj =
3d60: 20 22 6a e2 80 99 22 20 2b 20 73 43 6f 6e 6a 0a   "j..." + sConj.
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d80: 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20  else:.          
3d90: 20 20 20 20 20 20 20 20 20 20 73 43 6f 6e 6a 20            sConj 
3da0: 3d 20 73 65 6c 66 2e 5f 67 65 74 50 72 6f 6e 6f  = self._getProno
3db0: 6d 28 73 57 68 6f 2c 20 62 46 65 6d 29 20 2b 20  m(sWho, bFem) + 
3dc0: 22 20 22 20 2b 20 73 43 6f 6e 6a 0a 20 20 20 20  " " + sConj.    
3dd0: 20 20 20 20 20 20 20 20 69 66 20 62 4e 65 67 3a          if bNeg:
3de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3df0: 20 73 43 6f 6e 6a 20 2b 3d 20 22 20 70 61 73 22   sConj += " pas"
3e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
3e10: 62 54 70 73 43 6f 3a 0a 20 20 20 20 20 20 20 20  bTpsCo:.        
3e20: 20 20 20 20 20 20 20 20 73 43 6f 6e 6a 20 2b 3d          sConj +=
3e30: 20 22 20 22 20 2b 20 73 65 6c 66 2e 5f 73 65 65   " " + self._see
3e40: 6b 50 70 61 73 28 62 50 72 6f 2c 20 62 46 65 6d  kPpas(bPro, bFem
3e50: 2c 20 73 57 68 6f 2e 65 6e 64 73 77 69 74 68 28  , sWho.endswith(
3e60: 22 70 22 29 20 6f 72 20 73 65 6c 66 2e 5f 73 52  "p") or self._sR
3e70: 61 77 49 6e 66 6f 5b 35 5d 20 3d 3d 20 22 72 22  awInfo[5] == "r"
3e80: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ).            if
3e90: 20 62 49 6e 74 3a 0a 20 20 20 20 20 20 20 20 20   bInt:.         
3ea0: 20 20 20 20 20 20 20 73 43 6f 6e 6a 20 2b 3d 20         sConj += 
3eb0: 22 20 e2 80 a6 20 3f 22 0a 20 20 20 20 20 20 20  " ... ?".       
3ec0: 20 20 20 20 20 72 65 74 75 72 6e 20 73 43 6f 6e       return sCon
3ed0: 6a 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74  j.        except
3ee0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  :.            tr
3ef0: 61 63 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65 78  aceback.print_ex
3f00: 63 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  c().            
3f10: 72 65 74 75 72 6e 20 22 23 20 65 72 72 65 75 72  return "# erreur
3f20: 22 0a 0a 20 20 20 20 64 65 66 20 5f 67 65 74 50  "..    def _getP
3f30: 72 6f 6e 6f 6d 20 28 73 65 6c 66 2c 20 73 57 68  ronom (self, sWh
3f40: 6f 2c 20 62 46 65 6d 29 3a 0a 20 20 20 20 20 20  o, bFem):.      
3f50: 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20    try:.         
3f60: 20 20 20 69 66 20 73 57 68 6f 20 3d 3d 20 22 3a     if sWho == ":
3f70: 33 73 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20  3s":.           
3f80: 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 73 52       if self._sR
3f90: 61 77 49 6e 66 6f 5b 35 5d 20 3d 3d 20 22 72 22  awInfo[5] == "r"
3fa0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
3fb0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 6f 6e        return "on
3fc0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
3fd0: 20 20 65 6c 69 66 20 62 46 65 6d 3a 0a 20 20 20    elif bFem:.   
3fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ff0: 20 72 65 74 75 72 6e 20 22 65 6c 6c 65 22 0a 20   return "elle". 
4000: 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20             elif 
4010: 73 57 68 6f 20 3d 3d 20 22 3a 33 70 22 20 61 6e  sWho == ":3p" an
4020: 64 20 62 46 65 6d 3a 0a 20 20 20 20 20 20 20 20  d bFem:.        
4030: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22          return "
4040: 65 6c 6c 65 73 22 0a 20 20 20 20 20 20 20 20 20  elles".         
4050: 20 20 20 72 65 74 75 72 6e 20 5f 64 50 72 6f 53     return _dProS
4060: 75 6a 5b 73 57 68 6f 5d 0a 20 20 20 20 20 20 20  uj[sWho].       
4070: 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20   except:.       
4080: 20 20 20 20 20 74 72 61 63 65 62 61 63 6b 2e 70       traceback.p
4090: 72 69 6e 74 5f 65 78 63 28 29 0a 20 20 20 20 20  rint_exc().     
40a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 23         return "#
40b0: 20 65 72 72 65 75 72 22 0a 0a 20 20 20 20 64 65   erreur"..    de
40c0: 66 20 69 6d 70 65 72 61 74 69 66 20 28 73 65 6c  f imperatif (sel
40d0: 66 2c 20 73 57 68 6f 2c 20 62 50 72 6f 2c 20 62  f, sWho, bPro, b
40e0: 4e 65 67 2c 20 62 54 70 73 43 6f 2c 20 62 46 65  Neg, bTpsCo, bFe
40f0: 6d 29 3a 0a 20 20 20 20 20 20 20 20 74 72 79 3a  m):.        try:
4100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
4110: 6e 6f 74 20 73 65 6c 66 2e 64 43 6f 6e 6a 5b 22  not self.dConj["
4120: 3a 45 22 5d 5b 73 57 68 6f 5d 3a 0a 20 20 20 20  :E"][sWho]:.    
4130: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4140: 72 6e 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  rn "".          
4150: 20 20 69 66 20 62 54 70 73 43 6f 3a 0a 20 20 20    if bTpsCo:.   
4160: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 49 6d               sIm
4170: 70 65 20 3d 20 5f 67 65 74 43 6f 6e 6a 57 69 74  pe = _getConjWit
4180: 68 54 61 67 73 28 73 65 6c 66 2e 73 56 65 72 62  hTags(self.sVerb
4190: 41 75 78 2c 20 73 65 6c 66 2e 5f 74 54 61 67 73  Aux, self._tTags
41a0: 41 75 78 2c 20 22 3a 45 22 2c 20 73 57 68 6f 29  Aux, ":E", sWho)
41b0: 20 20 69 66 20 6e 6f 74 20 62 50 72 6f 20 20 65    if not bPro  e
41c0: 6c 73 65 20 20 67 65 74 43 6f 6e 6a 28 75 22 c3  lse  getConj(u".
41d0: aa 74 72 65 22 2c 20 22 3a 45 22 2c 20 73 57 68  .tre", ":E", sWh
41e0: 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  o).            e
41f0: 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  lse:.           
4200: 20 20 20 20 20 73 49 6d 70 65 20 3d 20 73 65 6c       sImpe = sel
4210: 66 2e 64 43 6f 6e 6a 5b 22 3a 45 22 5d 5b 73 57  f.dConj[":E"][sW
4220: 68 6f 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ho].            
4230: 69 66 20 6e 6f 74 20 73 49 6d 70 65 3a 0a 20 20  if not sImpe:.  
4240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
4250: 74 75 72 6e 20 22 22 0a 20 20 20 20 20 20 20 20  turn "".        
4260: 20 20 20 20 62 45 6c 69 20 3d 20 54 72 75 65 20      bEli = True 
4270: 20 69 66 20 5f 7a 53 74 61 72 74 56 6f 79 2e 73   if _zStartVoy.s
4280: 65 61 72 63 68 28 73 49 6d 70 65 29 20 20 65 6c  earch(sImpe)  el
4290: 73 65 20 20 46 61 6c 73 65 0a 20 20 20 20 20 20  se  False.      
42a0: 20 20 20 20 20 20 69 66 20 62 4e 65 67 3a 0a 20        if bNeg:. 
42b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
42c0: 66 20 62 50 72 6f 3a 0a 20 20 20 20 20 20 20 20  f bPro:.        
42d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e              if n
42e0: 6f 74 20 73 65 6c 66 2e 62 50 72 6f 57 69 74 68  ot self.bProWith
42f0: 45 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  En:.            
4300: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 62              if b
4310: 45 6c 69 20 61 6e 64 20 73 57 68 6f 20 3d 3d 20  Eli and sWho == 
4320: 22 3a 32 73 22 3a 0a 20 20 20 20 20 20 20 20 20  ":2s":.         
4330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4340: 20 20 20 73 49 6d 70 65 20 3d 20 22 6e 65 20 74     sImpe = "ne t
4350: e2 80 99 22 20 2b 20 73 49 6d 70 65 20 2b 20 22  ..." + sImpe + "
4360: 20 70 61 73 22 0a 20 20 20 20 20 20 20 20 20 20   pas".          
4370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
4380: 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  se:.            
4390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43a0: 73 49 6d 70 65 20 3d 20 5f 64 49 6d 70 65 50 72  sImpe = _dImpePr
43b0: 6f 4e 65 67 5b 73 57 68 6f 5d 20 2b 20 73 49 6d  oNeg[sWho] + sIm
43c0: 70 65 20 2b 20 22 20 70 61 73 22 0a 20 20 20 20  pe + " pas".    
43d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43e0: 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20  else:.          
43f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 49                sI
4400: 6d 70 65 20 3d 20 5f 64 49 6d 70 65 50 72 6f 4e  mpe = _dImpeProN
4410: 65 67 45 6e 5b 73 57 68 6f 5d 20 2b 20 73 49 6d  egEn[sWho] + sIm
4420: 70 65 20 2b 20 22 20 70 61 73 22 0a 20 20 20 20  pe + " pas".    
4430: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
4440: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
4450: 20 20 20 20 20 20 73 49 6d 70 65 20 3d 20 22 6e        sImpe = "n
4460: e2 80 99 22 20 2b 20 73 49 6d 70 65 20 2b 20 22  ..." + sImpe + "
4470: 20 70 61 73 22 20 20 69 66 20 62 45 6c 69 20 20   pas"  if bEli  
4480: 65 6c 73 65 20 20 22 6e 65 20 22 20 2b 20 73 49  else  "ne " + sI
4490: 6d 70 65 20 2b 20 22 20 70 61 73 22 0a 20 20 20  mpe + " pas".   
44a0: 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 62 50           elif bP
44b0: 72 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ro:.            
44c0: 20 20 20 20 73 49 6d 70 65 20 3d 20 73 49 6d 70      sImpe = sImp
44d0: 65 20 2b 20 5f 64 49 6d 70 65 50 72 6f 45 6e 5b  e + _dImpeProEn[
44e0: 73 57 68 6f 5d 20 20 69 66 20 73 65 6c 66 2e 62  sWho]  if self.b
44f0: 50 72 6f 57 69 74 68 45 6e 20 20 65 6c 73 65 20  ProWithEn  else 
4500: 20 73 49 6d 70 65 20 2b 20 5f 64 49 6d 70 65 50   sImpe + _dImpeP
4510: 72 6f 5b 73 57 68 6f 5d 0a 20 20 20 20 20 20 20  ro[sWho].       
4520: 20 20 20 20 20 69 66 20 62 54 70 73 43 6f 3a 0a       if bTpsCo:.
4530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4540: 72 65 74 75 72 6e 20 73 49 6d 70 65 20 2b 20 22  return sImpe + "
4550: 20 22 20 2b 20 73 65 6c 66 2e 5f 73 65 65 6b 50   " + self._seekP
4560: 70 61 73 28 62 50 72 6f 2c 20 62 46 65 6d 2c 20  pas(bPro, bFem, 
4570: 73 57 68 6f 2e 65 6e 64 73 77 69 74 68 28 22 70  sWho.endswith("p
4580: 22 29 20 6f 72 20 73 65 6c 66 2e 5f 73 52 61 77  ") or self._sRaw
4590: 49 6e 66 6f 5b 35 5d 20 3d 3d 20 22 72 22 29 0a  Info[5] == "r").
45a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
45b0: 72 6e 20 73 49 6d 70 65 0a 20 20 20 20 20 20 20  rn sImpe.       
45c0: 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20   except:.       
45d0: 20 20 20 20 20 74 72 61 63 65 62 61 63 6b 2e 70       traceback.p
45e0: 72 69 6e 74 5f 65 78 63 28 29 0a 20 20 20 20 20  rint_exc().     
45f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 23         return "#
4600: 20 65 72 72 65 75 72 22 0a 0a 20 20 20 20 64 65   erreur"..    de
4610: 66 20 5f 73 65 65 6b 50 70 61 73 20 28 73 65 6c  f _seekPpas (sel
4620: 66 2c 20 62 50 72 6f 2c 20 62 46 65 6d 2c 20 62  f, bPro, bFem, b
4630: 50 6c 75 72 29 3a 0a 20 20 20 20 20 20 20 20 74  Plur):.        t
4640: 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry:.            
4650: 69 66 20 6e 6f 74 20 62 50 72 6f 20 61 6e 64 20  if not bPro and 
4660: 73 65 6c 66 2e 73 56 65 72 62 41 75 78 20 3d 3d  self.sVerbAux ==
4670: 20 22 61 76 6f 69 72 22 3a 0a 20 20 20 20 20 20   "avoir":.      
4680: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4690: 20 73 65 6c 66 2e 64 43 6f 6e 6a 5b 22 3a 51 22   self.dConj[":Q"
46a0: 5d 5b 22 3a 51 31 22 5d 0a 20 20 20 20 20 20 20  ][":Q1"].       
46b0: 20 20 20 20 20 69 66 20 6e 6f 74 20 62 46 65 6d       if not bFem
46c0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
46d0: 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 43    return self.dC
46e0: 6f 6e 6a 5b 22 3a 51 22 5d 5b 22 3a 51 32 22 5d  onj[":Q"][":Q2"]
46f0: 20 20 69 66 20 62 50 6c 75 72 20 61 6e 64 20 73    if bPlur and s
4700: 65 6c 66 2e 64 43 6f 6e 6a 5b 22 3a 51 22 5d 5b  elf.dConj[":Q"][
4710: 22 3a 51 32 22 5d 20 20 65 6c 73 65 20 20 73 65  ":Q2"]  else  se
4720: 6c 66 2e 64 43 6f 6e 6a 5b 22 3a 51 22 5d 5b 22  lf.dConj[":Q"]["
4730: 3a 51 31 22 5d 0a 20 20 20 20 20 20 20 20 20 20  :Q1"].          
4740: 20 20 69 66 20 6e 6f 74 20 62 50 6c 75 72 3a 0a    if not bPlur:.
4750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4760: 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 43 6f 6e  return self.dCon
4770: 6a 5b 22 3a 51 22 5d 5b 22 3a 51 33 22 5d 20 20  j[":Q"][":Q3"]  
4780: 69 66 20 73 65 6c 66 2e 64 43 6f 6e 6a 5b 22 3a  if self.dConj[":
4790: 51 22 5d 5b 22 3a 51 33 22 5d 20 20 65 6c 73 65  Q"][":Q3"]  else
47a0: 20 20 73 65 6c 66 2e 64 43 6f 6e 6a 5b 22 3a 51    self.dConj[":Q
47b0: 22 5d 5b 22 3a 51 31 22 5d 0a 20 20 20 20 20 20  "][":Q1"].      
47c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c        return sel
47d0: 66 2e 64 43 6f 6e 6a 5b 22 3a 51 22 5d 5b 22 3a  f.dConj[":Q"][":
47e0: 51 34 22 5d 20 20 69 66 20 73 65 6c 66 2e 64 43  Q4"]  if self.dC
47f0: 6f 6e 6a 5b 22 3a 51 22 5d 5b 22 3a 51 34 22 5d  onj[":Q"][":Q4"]
4800: 20 20 65 6c 73 65 20 20 73 65 6c 66 2e 64 43 6f    else  self.dCo
4810: 6e 6a 5b 22 3a 51 22 5d 5b 22 3a 51 31 22 5d 0a  nj[":Q"][":Q1"].
4820: 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a          except:.
4830: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
4840: 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65 78 63 28  eback.print_exc(
4850: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ).            re
4860: 74 75 72 6e 20 22 23 20 65 72 72 65 75 72 22 0a  turn "# erreur".