diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4b9370e4..ec1b8818 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ exclude: ^(\.[^/]*cache/.*)$ repos: - repo: https://github.com/executablebooks/mdformat # Do this before other tools "fixing" the line endings - rev: 0.7.21 + rev: 0.7.22 hooks: - id: mdformat name: Format Markdown @@ -58,7 +58,7 @@ repos: - -d - "{extends: relaxed, rules: {line-length: {max: 90}}}" - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.8.6 + rev: v0.9.10 hooks: - id: ruff - id: ruff-format @@ -72,7 +72,7 @@ repos: hooks: - id: validate-pyproject - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.14.1 + rev: v1.15.0 hooks: - id: mypy args: ["--config-file", "pyproject.toml"] diff --git a/codetypo/_codetypo.py b/codetypo/_codetypo.py index e6383f22..623652d3 100644 --- a/codetypo/_codetypo.py +++ b/codetypo/_codetypo.py @@ -58,10 +58,9 @@ # these may occur unescaped in URIs, and so we are more restrictive on the # endpoint. Emails are more restrictive, so the endpoint remains flexible. uri_regex_def = ( - "(\\b(?:https?|[ts]?ftp|file|git|smb)://[^\\s]+(?=$|\\s)|" - "\\b[\\w.%+-]+@[\\w.-]+\\b)" + "(\\b(?:https?|[ts]?ftp|file|git|smb)://[^\\s]+(?=$|\\s)|\\b[\\w.%+-]+@[\\w.-]+\\b)" ) -inline_ignore_regex = re.compile(r"[^\w\s]\s?codetypo:ignore\b(\s+(?P[\w,]*))?") +inline_ignore_regex = re.compile(r"[^\w\s]\s*codetypo:ignore\b(\s+(?P[\w,]*))?") USAGE = """ \t%prog [OPTIONS] [file1 file2 ... fileN] """ @@ -763,9 +762,9 @@ def ask_for_word_fix( return misspelling.fix, fix_case(wrongword, misspelling.data) line_ui = ( - f"{line[:match.start()]}" + f"{line[: match.start()]}" f"{colors.WWORD}{wrongword}{colors.DISABLE}" - f"{line[match.end():]}" + f"{line[match.end() :]}" ) if misspelling.fix and interactivity & 1: @@ -1057,8 +1056,7 @@ def parse_file( print_context(lines, i, context) if filename != "-": print( - f"{cfilename}:{cline}: {cwrongword} " - f"==> {crightword}{creason}" + f"{cfilename}:{cline}: {cwrongword} ==> {crightword}{creason}" ) elif options.stdin_single_line: print(f"{cline}: {cwrongword} ==> {crightword}{creason}") diff --git a/codetypo/data/dictionary.txt b/codetypo/data/dictionary.txt index 3081ed83..4deae333 100644 --- a/codetypo/data/dictionary.txt +++ b/codetypo/data/dictionary.txt @@ -834,6 +834,8 @@ acciental->accidental accientally->accidentally accissible->accessible acclamied->acclaimed +accleometer->accelerometer +accleometers->accelerometers acclerate->accelerate acclerated->accelerated acclerates->accelerates @@ -3393,6 +3395,7 @@ aligment->alignment aligments->alignments aligmnet->alignment aligmnets->alignments +alignaed->aligned alignament->alignment alignaments->alignments alignation->alignment @@ -4461,7 +4464,7 @@ androis->androids andthe->and the andtoid->android andtoids->androids -ane->and +ane->and, one, anecdatal->anecdotal anecdatally->anecdotally anecdate->anecdote @@ -7167,6 +7170,7 @@ assesments->assessments assessin->assassin, assessing, assess in, assessmant->assessment assessmants->assessments +assests->assess, assets, assfalt->asphalt assfalted->asphalted assfalting->asphalting @@ -10433,6 +10437,10 @@ buyed->bought, buyer, buzilla->bugzilla bve->be bwtween->between +by-pass->bypass +by-passed->bypassed +by-passes->bypasses +by-passing->bypassing byast->biased bycicle->bicycle bycicled->bicycled @@ -10818,6 +10826,12 @@ callls->calls calloed->called callser->caller callsr->calls +calncel->cancel +calncellation->cancellation +calncellations->cancellations +calncelled->cancelled +calncelling->cancelling +calncels->cancels calss->calls, class, calsses->classes calssic->classic @@ -13424,6 +13438,8 @@ coeffiecient->coefficient coeffiecients->coefficients coeffient->coefficient coeffients->coefficients +coeffitient->coefficient +coeffitients->coefficients coeficent->coefficient coeficents->coefficients coeficient->coefficient @@ -16163,7 +16179,7 @@ constents->constants, consents, contents, constext->context consting->consisting constinually->continually -constist->consist +constist->consist, consists, constisted->consisted constistency->consistency constistent->consistent @@ -16365,7 +16381,7 @@ containted->contained containter->container containters->containers containting->containing -containts->contains +containts->contains, constraints, containuations->continuations contais->contains contaisn->contains @@ -17530,6 +17546,11 @@ corretness->correctness corretor->corrector corretors->correctors correts->corrects +correxpond->correspond +correxpondance->correspondence +correxponded->corresponded +correxponding->corresponding +correxponds->corresponds corridoor->corridor corridoors->corridors corrispond->correspond @@ -17789,6 +17810,8 @@ counry->country, county, counsellin->counselling counsil->counsel counsils->counsels +counstructor->constructor +counstructors->constructors countain->contain countainer->container countainers->containers @@ -17843,8 +17866,14 @@ coutermeasures->countermeasures couterpart->counterpart couters->counters, routers, scouters, couting->counting +coutn->count +coutndown->countdown +coutned->counted coutner->counter coutners->counters +coutning->counting +coutnown->countdown +coutns->counts coutries->countries coutry->country couuld->could @@ -18092,6 +18121,7 @@ critcially->critically critcials->criticals criteak->critique critera->criteria +criteras->criteria criterea->criteria critereon->criterion criterias->criteria @@ -18128,6 +18158,7 @@ critizing->criticizing critque->critique critqued->critiqued critquing->critiquing +critreria->criteria croch->crotch crockadile->crocodile crockodiles->crocodiles @@ -18706,6 +18737,9 @@ daquiri->daiquiri daquiris->daiquiris Dardenelles->Dardanelles darma->dharma +darw->draw +darwn->drawn, Darwin, +darws->draws dasboard->dashboard dasboards->dashboards dasdot->dashdot @@ -20224,7 +20258,6 @@ depricating->deprecating deprication->deprecation, deprivation, dequed->dequeued dequeing->dequeuing -deques->dequeues derageable->dirigible derailin->derailing, derail in, deram->dram, dream, @@ -21295,7 +21328,10 @@ dicard->discard dicarded->discarded dicarding->discarding dicards->discards +dicate->dictate +dicated->dictated dicates->dictates +dicating->dictating dicationaries->dictionaries dicationary->dictionary dicergence->divergence @@ -21342,6 +21378,10 @@ dicslosing->disclosing dicslosure->disclosure dicslosures->disclosures dicsriminated->discriminated +dictacte->dictate +dictacted->dictated +dictactes->dictates +dictacting->dictating dictaionaries->dictionaries dictaionary->dictionary dictinary->dictionary @@ -21650,6 +21690,7 @@ dimensionaility->dimensionality dimensionailties->dimensionalities dimensionailty->dimensionality dimensiones->dimensions +dimensionned->dimensioned dimenson->dimension dimensonal->dimensional dimensonalities->dimensionalities @@ -22510,6 +22551,9 @@ disssociating->dissociating distace->distance, distaste, distaced->distanced distaces->distances, distastes, +distacne->distance +distacned->distanced +distacnes->distances distancef->distanced, distances, distance, distancin->distancing distange->distance @@ -22760,6 +22804,10 @@ divsion->division divsions->divisions divsiors->divisors djanog->Django +dleay->delay +dleayed->delayed +dleaying->delaying +dleays->delays dloating->floating dnamically->dynamically dne->done @@ -24215,6 +24263,10 @@ enabeling->enabling enabels->enables enabes->enables enabing->enabling +enabke->enable +enabked->enabled +enabkes->enables +enabking->enabling enabledi->enabled enableing->enabling enablen->enabled @@ -31879,6 +31931,12 @@ impplement->implement impplementating->implementing impplementation->implementation impplemented->implemented +impprove->improve +impproved->improved +impprovement->improvement +impprovements->improvements +impproves->improves +impproving->improving imprement->implement, improvement, imprementation->implementation imprementations->implementations @@ -32828,6 +32886,7 @@ informtion->information informtional->informational inforrmation->information inforrmational->informational +infp->info infrantryman->infantryman infrasctructure->infrastructure infrasctructures->infrastructures @@ -36357,7 +36416,7 @@ lighbulbs->lightbulbs ligher->lighter, liar, liger, lighers->lighters, liars, ligers, lighing->lighting -lighning->lightning +lighning->lightning, lighting, lightbulp->lightbulb lightbulps->lightbulbs lightin->lighting, light in, lighten, @@ -41499,10 +41558,11 @@ opemess->openness opeming->opening opems->opens openbrower->openbrowser -opended->opened +opend->opened +opended->opened, open-ended, openeing->opening openen->opened, opening, -openend->opened +openend->opened, open-ended, openened->opened openening->opening openes->opens, openness, @@ -42177,6 +42237,10 @@ osffset->offset osffsets->offsets osffsetting->offsetting osicllations->oscillations +ossociate->associate +ossociated->associated +ossociation->association +ossociations->associations osterage->ostrich osterages->ostriches ostridge->ostrich @@ -45091,6 +45155,7 @@ practictitioners->practitioners practicval->practical practioner->practitioner practioners->practitioners +practive->practice, proactive, praefix->prefix pragam->pragma pragmato->pragma to @@ -45153,6 +45218,10 @@ pre-proces->pre-process pre-procesing->pre-processing pre-realease->pre-release pre-registeres->pre-registers +pre-select->preselect +pre-selected->preselected +pre-selecting->preselecting +pre-selects->preselects preallocationg->preallocating, preallocation, prealocate->preallocate prealocated->preallocated @@ -45527,6 +45596,10 @@ presearves->preserves presearving->preserving presed->pressed, preset, presedential->presidential +preselet->preselect +preseleted->preselected +preseleting->preselecting +preselets->preselects presenation->presentation presenations->presentations presenece->presence @@ -45829,6 +45902,7 @@ priorized->prioritized priorizes->prioritizes priorizin->prioritizing priorizing->prioritizing +priort->prior, priory, priors, priori, priorties->priorities, prior ties, priortisation->prioritisation priortisations->prioritisations @@ -51219,6 +51293,7 @@ returnin->returning, return in, returnn->return returnned->returned returnning->returning +returnst->returns returs->returns retursn->returns retutn->return @@ -54413,6 +54488,7 @@ snythetically->synthetically snythetics->synthetics Soalris->Solaris socail->social +socal->social socalism->socialism socalist->socialist socalists->socialists @@ -54877,6 +54953,8 @@ specical->special specically->specifically specication->specification specications->specifications +specicification->specification +specicifications->specifications specidic->specific specied->specified speciefic->specific @@ -56419,6 +56497,8 @@ subscibe->subscribe subscibed->subscribed subsciber->subscriber subscibers->subscribers +subsciption->subscription +subsciptions->subscriptions subscirbe->subscribe subscirbed->subscribed subscirber->subscriber @@ -58999,6 +59079,7 @@ timemout->timeout timemouts->timeouts timeot->timeout timeots->timeouts +timeour->timeout timeoutted->timed out timeput->timeout, time put, timeputs->timeouts, time puts, @@ -60235,7 +60316,14 @@ tryin->trying, try in, tryinng->trying trys->tries tryying->trying -ttests->tests +ttempt->attempt, tempt, +ttempted->attempted, tempted, +ttempting->attempting, tempting, +ttempts->attempts, tempts, +ttest->test, attest, +ttested->tested, attested, +ttesting->test, attesting, +ttests->tests, attests, tthank->thank tthanks->thanks tthat->that @@ -61198,6 +61286,10 @@ unmaping->unmapping unmappend->unmapped unmarsalling->unmarshalling unmaximice->unmaximize +unmber->number, umber, +unmbered->numbered +unmbering->numbering +unmbers->numbers unmisakable->unmistakable unmisakably->unmistakably unmistakeably->unmistakably @@ -62013,6 +62105,7 @@ utilitization->utilization utilitize->utilize utilitizes->utilizes utilitizing->utilizing +utiliy->utility utiliz->utilize utiliza->utilize utilizaton->utilization @@ -63227,6 +63320,8 @@ warantee->warranty waranties->warranties waranty->warranty wardobe->wardrobe +warehosue->warehouse +warehosues->warehouses waring->warning warings->warnings warinig->warning diff --git a/codetypo/data/dictionary_rare.txt b/codetypo/data/dictionary_rare.txt index 675f9c73..2ad15c97 100644 --- a/codetypo/data/dictionary_rare.txt +++ b/codetypo/data/dictionary_rare.txt @@ -154,8 +154,6 @@ lamdas->lambdas leaded->led, lead, leas->least, lease, lief->leaf, life, -lien->line -liens->lines lightening->lightning, lighting, loafing->loading lod->load, loud, lode, diff --git a/codetypo/data/dictionary_usage.txt b/codetypo/data/dictionary_usage.txt index 8b3a1503..91b67cf9 100644 --- a/codetypo/data/dictionary_usage.txt +++ b/codetypo/data/dictionary_usage.txt @@ -2,7 +2,6 @@ black-hat->malicious actor, attacker, blackhat->malicious actor, attacker, blacklist->blocklist blacklists->blocklists -blueish->bluish cripples->slows down, hinders, obstructs, crippling->attenuating, incapacitating, dummy-value->placeholder value diff --git a/codetypo/tests/test_basic.py b/codetypo/tests/test_basic.py index e8cecb84..a8ff95ce 100644 --- a/codetypo/tests/test_basic.py +++ b/codetypo/tests/test_basic.py @@ -368,9 +368,7 @@ def test_ignore_words_with_cases( """Test case-sensitivity implemented for -I and -L options in #3272.""" bad_name = tmp_path / "MIS.txt" bad_name.write_text( - "1 MIS (Management Information System) 1\n" - "2 Les Mis (1980 musical) 2\n" - "3 mis 3\n" + "1 MIS (Management Information System) 1\n2 Les Mis (1980 musical) 2\n3 mis 3\n" ) assert cs.main(bad_name) == 3 assert cs.main(bad_name, "-f") == 4 diff --git a/codetypo/tests/test_dictionary.py b/codetypo/tests/test_dictionary.py index af979cd3..6df893d7 100644 --- a/codetypo/tests/test_dictionary.py +++ b/codetypo/tests/test_dictionary.py @@ -47,7 +47,7 @@ for d in _builtin_dictionaries ] fname_params = pytest.mark.parametrize( - "fname, in_aspell, in_dictionary", _fnames_in_aspell + ("fname", "in_aspell", "in_dictionary"), _fnames_in_aspell ) @@ -144,9 +144,9 @@ def _check_err_rep( assert whitespace.search(err) is None, f"error {err!r} has whitespace" assert "," not in err, f"error {err!r} has a comma" assert len(rep) > 0, f"error {err}: correction {rep!r} must be non-empty" - assert not start_whitespace.match( - rep - ), f"error {err}: correction {rep!r} cannot start with whitespace" + assert not start_whitespace.match(rep), ( + f"error {err}: correction {rep!r} cannot start with whitespace" + ) _check_aspell(err, f"error {err!r}", in_aspell[0], fname, languages[0]) prefix = f"error {err}: correction {rep!r}" for regex, msg in ( @@ -166,9 +166,9 @@ def _check_err_rep( assert not regex.search(rep), msg % (prefix,) del msg if rep.count(","): - assert rep.endswith( - "," - ), f'error {err}: multiple corrections must end with trailing ","' + assert rep.endswith(","), ( + f'error {err}: multiple corrections must end with trailing ","' + ) reps = [r.strip() for r in rep.split(",")] reps = [r for r in reps if len(r)] for r in reps: @@ -185,9 +185,9 @@ def _check_err_rep( # we could ignore the case, but that would miss things like days of the # week which we want to be correct reps = [r.lower() for r in reps] - assert len(set(reps)) == len( - reps - ), f'error {err}: corrections "{rep}" are not (lower-case) unique' + assert len(set(reps)) == len(reps), ( + f'error {err}: corrections "{rep}" are not (lower-case) unique' + ) @pytest.mark.parametrize( @@ -307,18 +307,18 @@ def test_dictionary_looping( for line in fid: err, rep = line.split("->") err = err.lower() - assert ( - err not in this_err_dict - ), f"error {err!r} already exists in {short_fname}" + assert err not in this_err_dict, ( + f"error {err!r} already exists in {short_fname}" + ) rep = rep.rstrip("\n") reps = [r.strip() for r in rep.lower().split(",")] reps = [r for r in reps if len(r)] this_err_dict[err] = reps # 1. check the dict against itself (diagonal) for err, reps in this_err_dict.items(): - assert word_regex.fullmatch( - err - ), f"error {err!r} does not match default word regex '{word_regex_def}'" + assert word_regex.fullmatch(err), ( + f"error {err!r} does not match default word regex '{word_regex_def}'" + ) for r in reps: assert r not in this_err_dict, ( f"error {err}: correction {r} is an error itself "