degd?d@degdAdBdeggdCdDdegdEdFdegdGdHdegdIdJdegdKdLdegdMdNdegdOdPdegdQdRdegdSdTdegdUdVdegg dWdXdYegdWdXdZegd[d\degd]d^degd_d`degdadbdegdcdddegdedfdegdgdhdegdidjdegdkdldegg dmdnde gdmdodegdpdqde gdrdsde gdtdudegdvdwde gdvdxdegdydzde gd{d|degd}d~de gddde gdddegdddegdddegddde gdddegdddegddde gddde gdddegdddegddde gdddegdddegdddegdddegddde gdddegddde ggdddegdddegdddegdddegdddegdddegdddegdddeggdddegddde gdddegddde gdddegdddegddde ggddde gddde gddde gddde gddde gddde gddde gddde gddFde gddde gdWdde gdWdde gg dddegdddegdddegdddeggdddegdddegdddegdddeggdddegdddegdddeggdddegdddegdddeggdddeggdWddegggZ x6e D].Z x%e D]Z ej e de dd?d@dAdBgdZ6dCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_gd6d`dadbgd6dcdddedfdgdhdidjgd6dkdldmdndodpdqdrdsg d6dtdudvdwdxdydzd{d|d}d~ddddddddddddddddddgd6dddddddddg d6dddgd6ddddddddddddg d6dddgd6dddddddddddddddddddddddgd6ddgd6ddddddddddddg d6ddddddddddg d6ddddddddgd6dddgd6dddgd6ddddddddddddddddddddddddgd6ddddddddd d g d6Zeie d Zd d gddgddgddgddgddgddgddgddgddgddgddgd dgd!d"gd#dgd$d%gd&d'gd(d)gd*d+gd,d-gd.d-gd/d0gd1d2gd3d4gd5d-gd6d7gd8dgd9dgd:dgd;d4gd<d=gd>d?gd@dAgdBdCgdDdlgdEdlgdFdGgdHdIgdJdKgdLdXgg(Zx%eD]Z ej e de dd?d@dAdBgZdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzg,ZedZi*d{d6d|d6d}du6d~d6dd6dd6dd6dd6dd6dd6ddn6ddo6ddq6dds6d}du6ddw6ddx6ddz6dd|6dd~6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd86ZeidZdS(sThe pluralize and singular methods from the pattern library. Licenced under the BSD. See here https://github.com/clips/pattern/blob/master/LICENSE.txt for complete license information. iNtVBtNNtJJtRBtabouttabovetacrosstaftertamongtaroundtattathwarttbeforetbehindtbelowtbeneathtbesidetbesidestbetweentbetwixttbeyondtbuttbytduringtexcepttfortfromtintintotneartoftofftontontotouttovertsincettillttotundertuntiltuntotupontwiths^a$|^an$tsomes^this$ttheses^that$tthoses^any$talls^my$tours ^your$|^thy$tyours^her$|^his$|^its$|^their$ttheirs^mine$tourss^yours$|^thine$tyourss^hers$|^his$|^its$|^theirs$ttheirss^I$twes^me$tuss^myself$t ourselvess^you$tyous ^thou$|^thee$tyes^yourself$|^thyself$tyourselfs^she$|^he$|^it$|^they$ttheys^her$|^him$|^it$|^them$tthems'^herself$|^himself$|^itself$|^themself$t themselvess ^oneself$t oneselvest$tt uninflectedt uncountablesfish$tfishs ([- ])bass$s\1basssois$toisssheep$tsheepsdeer$tdeerspox$tpoxs ([A-Z].*)ese$s\1esesitis$titiss8(fruct|gluc|galact|lact|ket|malt|rib|sacchar|cellul)ose$s\1osesatlas$tatlantestatlasessbeef$tbeevessbrother$tbrethrenschild$tchildrenscorpus$tcorporatcorpusess^cow$tkines ephemeris$t ephemeridess ganglion$tgangliasgenie$tgeniisgenus$tgeneras graffito$tgraffitisloaf$tloavessmoney$tmoniess mongoose$t mongoosessmythos$tmythoisoctopus$t octopodessopus$toperatopusess^ox$toxenspenis$tpenestpenisess soliloquy$t soliloquiesstestis$ttestesstrilby$ttrilbyssturf$tturvessnumen$tnumenasocciput$toccipitasman$tmensperson$tpeoples ([lm])ouse$s\1icestooth$tteethsgoose$tgeesesfoot$tfeetszoon$tzoas ([csx])is$s\1essex$ticessex-icessex-ices-classicalsum$tasum-asum-a-classicalson$son-asa$taesa-aesa-ae-classicalstrix$ttricesseau$teauxsieu$tieus ([iay])nx$s\1ngessen$tinasen-ina-classicaltatasa-ata-classicalsis$tidessis-ides-classicalsus$tisus-i-classicalsus-us-classicalso$s o-i-classicals -i-classicaltims -im-classicals([cs])h$s\1hessss$tssessx$txesss$tsess s-singulars ([aeo]l)f$s\1vess ([^d]ea)f$sarf$tarvess ([nlw]i)fe$s ([aeiou])y$s\1yss ([A-Z].*)y$sy$tiestosso-oss ([aeiou])o$s\1ostoessl$tlssgeneral-generalstsitaircrafttantelopetbisontbreamtbreechestbritchestcarptcattletchassistclipperstcodt contretempstcorpstdebristdiabetestdjinntelandtelktfloundertgallowst headquarterstherpess high-jinksthomeworktinningst jackanapestmackereltmeaslestmewstmoosetmumpst offspringtnewstpincerstplierst proceedingstrabiestsalmontscissorstseriestshearstspeciestswinettroutttunatwhitingt wildebeesttadvicetbreadtbuttertcannabistcheeset electricityt equipmenttfruitt furnituretgarbagetgravelt happinesst informationtketchupt knowledgetlovetluggaget mathematicst mayonnaisetmeattmustardtprogresstresearchtricetsandtsoftwaret understandingtwatert acropolistaegistaliastasbestostbathostbiastbustcaddistcanvastchaost christmastcosmostdaist digitalist epidermistethostgastglottistibistlenstmantistmarquist metropolistpathostpelvistpolist rhinocerost sassafrasttrellistcodextmurextsilextapextcortextindextlatextpontifextsimplextvertextvortextagendumt bacteriumt candelabrumtdatumt desideratumterratumtextremumtovumtstratumtaquariumt compendiumt consortiumtcraniumt curriculumtdictumtemporiumtenconiumt gymnasiumt honorariumt interregnumtlustrumtmaximumtmediumt memorandumt milleniumtminimumtmomentumtoptimumtphylumtquantumtrostrumtspectrumtspeculumtstadiumt trapeziumt ultimatumtvacuumtvelumtapheliont asyndetont criteriont hyperbatontnoumenontorganont periheliont phenomenont prolegomenontalgatalumnatvertebratabscissatamoebatantennatauroratformulathydrat hyperbolatlacunatmedusatnebulatnovatparabolatforamentlumentstamentanathematbemat carcinomatcharismatdiplomatdogmatdramatedematenematenigmatgummatlemmatlymphomatmagmatmelismatmiasmatoedematsarcomatschematsomatstigmatstomattraumatclitoristiristfocustfungustgeniustincubustnimbust nucleolustradiuststylustsuccubusttorust umbilicustuterust apparatustcantustcoitusthiatustimpetustnexustplexust prospectustsinuststatustaltotbassotcantot contraltot crescendotsolotsopranottempotafreettafrittefreettcherubtgoytseraphtalbinot archipelagot armadillotcommandotdittotdynamotembryotfiascot generalissimotghettotguanotinfernotjumbotlingotlumbagotmagnetot manifestotmedicotoctavotphototprotquartotrhinotstylotAdjutantt Brigadiert LieutenanttMajort Quartermastertadjutantt brigadiert lieutenanttmajort quartermastercCs}||kr||S|jds2|jdrx|jd}t||||}|jdrm|dS|dSn|jddjd}t|dkra|ddks|ddkr|d td kr|j|d t|d |||S|dtkr7|j|d t|d |||S|j|d t|d |||Sntt tt }|j t rd dg}nx|D]}t |} x| D]} | \} } } }| d kr| s|r|r| j|d k r| j| |Sqn| d kr|t| krq| sF|rq|rq| j|d k rn| j| |SqqqqWqWd S( s+ Returns the plural of a given word. For example: child -> children. Handles nouns and adjectives, using classical inflection by default (e.g. where "matrix" pluralizes to "matrices" instead of "matrixes"). The custom dictionary is for user-defined replacements. t's'sRt-t itgeneraltGeneralisgeneral-generalsiN(tendswithtrstript pluralizetreplacetsplittlentplural_categoriestplural_prepositionstlisttranget plural_rulest startswitht ADJECTIVEtNonetsearchtsub(twordtpostcustomt classicaltownertownerstwordstnRvtrulesettruletsuffixt inflectiontcategorytclassic((si/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/en/inflect.pyRs>   ''*     #s (?i)(.)ae$s\1as (?i)(.)itis$s\1itiss (?i)(.)eaux$s\1eaus(?i)(quiz)zes$s\1s(?i)(matr)ices$s\1ixs(?i)(ap|vert|ind)ices$s\1exs (?i)^(ox)ens(?i)(alias|status)es$s(?i)([octop|vir])i$s\1uss(?i)(cris|ax|test)es$s\1iss (?i)(shoe)s$s (?i)(o)es$s (?i)(bus)es$s(?i)([m|l])ice$s\1ouses(?i)(x|ch|ss|sh)es$s (?i)(m)ovies$s\1ovies(?i)(.)ombies$s\1ombies (?i)(s)eries$s\1eriess(?i)([^aeiouy]|qu)ies$s\1ys ([aeo]l)ves$s\1fs ([^d]ea)ves$sarves$tarfserves$terves ([nlw]i)ves$s\1fes(?i)([lr])ves$s ([aeo])ves$s\1ves (?i)(sive)s$s (?i)(tive)s$s (?i)(hive)s$s(?i)([^f])ves$s(?i)(^analy)ses$s\1sissA(?i)((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$s\1\2siss (?i)(.)opses$s\1opsiss (?i)(.)yses$s\1ysiss(?i)(h|d|r|o|n|b|cl|p)oses$s<(?i)(fruct|gluc|galact|lact|ket|malt|rib|sacchar|cellul)ose$s (?i)(.)oses$s\1osiss (?i)([ti])a$s\1ums (?i)(n)ews$s\1ewss(?i)s$tgeorgiatswisstalgerietauntietbeanietbirdietbogietbombietbookietcollietcookietcutietdoggieteyrietfreebietgoonietgroupiethankiethippiethoagiethottietindietjunkietladdietlaramietlingerietmeanietnightietoldies^pietpixietquickietreverietrookietsoftietsortietstoolietsweetiettechies^tiettoughietvalkyrietveggietweenietyuppietzombietmantpersontchildtsextsexestaxetaxestmovetmovesttoothtgoosetfoottzoontatlastbeeftbrothertcorpustcowt ephemeristgangliontgenietgenustgraffitothelvethelvestleaftleavestloaftmoneytmongoosetmythostoctopustopustoxtpenist soliloquyttestisttrilbytturftnumentocciputtmyc Cs>|t|jkr ||Sd|kr|jd}t|dkr|dtkrt|d||ddj|dSn|jdrt|d dS|j}x!t D]}|j|r|SqWx!t D]}|j|r|SqWx%t D]}|j|dr|SqWx%t D]}|j|dr-|Sq-WxHtt jD]4}|j|ratjd |d t ||SqaWxtD]}|\}}|j|} | r| j} xPtdt| D]9} | | dkr|jd t| dd }qqW|j||SqW|S( NRiiRis'sRtess(?i)R@s\RA(RtkeysRRRt singularizetjoinRtlowertsingular_uninflectedtsingular_uncountablet singular_iet singular_stsingular_irregulartreRtsingular_rulesRtgroupsRRRtstr( RRRRRtwRRRtmatchRtk((si/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/en/inflect.pyRsD ",     #   '(RRRR(t__doc__RtVERBtNOUNRtADVERBRRtFalsetTrueRRRtcompileRRRRRRRRR(((si/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/en/inflect.pyts  $        L