From 43d98d7434d5329f9241bed3fcb91eae1ba464c8 Mon Sep 17 00:00:00 2001 From: Kristoffer Andersson Date: Thu, 28 Mar 2024 11:28:59 +0100 Subject: [PATCH] fix: lints and type-checks --- ruff.toml | 8 ++++---- .../src/sbx_word_prediction_kb_bert/__init__.py | 15 ++++++++------- .../src/sbx_word_prediction_kb_bert/predictor.py | 2 +- word-prediction-kb-bert/tests/conftest.py | 2 +- word-prediction-kb-bert/tests/test_predictor.py | 10 +++++----- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/ruff.toml b/ruff.toml index 31a5169..fe688d2 100644 --- a/ruff.toml +++ b/ruff.toml @@ -3,12 +3,12 @@ target-version = "py38" [lint] select = [ "A", -# "ANN", + # "ANN", "B", "BLE", "C4", "C90", -# "D", + # "D", "E", "F", "FBT", @@ -20,12 +20,12 @@ select = [ # Never enforce `E501` (line length violations). # ignore = ["E501"] -ignore = ["ANN101", "ANN102","D203", "D213", "B008"] +ignore = ["ANN101", "ANN102", "D203", "D213", "B008"] # Avoid trying to fix flake8-bugbear (`B`) violations. unfixable = ["B"] # Ignore `E402` (import violations) in all `__init__.py` files, and in `path/to/file.py`. [lint.per-file-ignores] -"**/tests/*" = ["D100","D101","D102","D103","D104","S101"] +"**/tests/*" = ["D100", "D101", "D102", "D103", "D104", "E501", "S101"] # "__init__.py" = ["E402"] diff --git a/word-prediction-kb-bert/src/sbx_word_prediction_kb_bert/__init__.py b/word-prediction-kb-bert/src/sbx_word_prediction_kb_bert/__init__.py index 616d934..b49cb67 100644 --- a/word-prediction-kb-bert/src/sbx_word_prediction_kb_bert/__init__.py +++ b/word-prediction-kb-bert/src/sbx_word_prediction_kb_bert/__init__.py @@ -1,18 +1,19 @@ from dataclasses import dataclass from typing import Optional, Tuple + from sparv.api import ( # type: ignore [import-untyped] - annotator, - Output, - get_logger, Annotation, Config, + Output, SparvErrorMessage, + annotator, + get_logger, ) - from transformers import ( # type: ignore [import-untyped] - BertTokenizer, BertForMaskedLM, + BertTokenizer, ) + from sbx_word_prediction_kb_bert.predictor import TopKPredictor __description__ = "Calculating word predictions by mask a word in a BERT model." @@ -77,13 +78,13 @@ def predict_words__kb_bert( num_predictions = int(num_predictions_str) except ValueError as exc: raise SparvErrorMessage( - f"'sbx_word_prediction_kb_bert.num_predictions' must contain an 'int' got: '{num_predictions_str}'" + f"'sbx_word_prediction_kb_bert.num_predictions' must contain an 'int' got: '{num_predictions_str}'" # noqa: E501 ) from exc try: num_decimals = int(num_decimals_str) except ValueError as exc: raise SparvErrorMessage( - f"'sbx_word_prediction_kb_bert.num_decimals' must contain an 'int' got: '{num_decimals_str}'" + f"'sbx_word_prediction_kb_bert.num_decimals' must contain an 'int' got: '{num_decimals_str}'" # noqa: E501 ) from exc tokenizer_name, tokenizer_revision = MODELS["kb-bert"].tokenizer_name_and_revision() diff --git a/word-prediction-kb-bert/src/sbx_word_prediction_kb_bert/predictor.py b/word-prediction-kb-bert/src/sbx_word_prediction_kb_bert/predictor.py index d8d0ea2..845bceb 100644 --- a/word-prediction-kb-bert/src/sbx_word_prediction_kb_bert/predictor.py +++ b/word-prediction-kb-bert/src/sbx_word_prediction_kb_bert/predictor.py @@ -30,7 +30,7 @@ def get_top_k_predictions(self, text: str, k: int = 5) -> str: if text.count("[MASK]") == 1: return self._run_pipeline_on_mask_context(text, k) raise RuntimeError( - f"can't handle large input and multiple [MASK]: {len(tokenized_inputs['input_ids'])} tokens > 512 tokens" + f"can't handle large input and multiple [MASK]: {len(tokenized_inputs['input_ids'])} tokens > 512 tokens" # noqa: E501 ) def _run_pipeline_on_mask_context(self, text, k): diff --git a/word-prediction-kb-bert/tests/conftest.py b/word-prediction-kb-bert/tests/conftest.py index 0502e1f..c943124 100644 --- a/word-prediction-kb-bert/tests/conftest.py +++ b/word-prediction-kb-bert/tests/conftest.py @@ -4,8 +4,8 @@ TopKPredictor, ) from transformers import ( # type: ignore [import-untyped] - BertTokenizer, BertForMaskedLM, + BertTokenizer, ) diff --git a/word-prediction-kb-bert/tests/test_predictor.py b/word-prediction-kb-bert/tests/test_predictor.py index 2d254c8..568b057 100644 --- a/word-prediction-kb-bert/tests/test_predictor.py +++ b/word-prediction-kb-bert/tests/test_predictor.py @@ -1,10 +1,10 @@ from itertools import islice -from typing import Tuple +from typing import Dict, Tuple + import pytest from sbx_word_prediction_kb_bert.predictor import TopKPredictor - -TEXTS: dict[str, str] = { +TEXTS: Dict[str, str] = { "short": "[MASK] åt glassen utanför kiosken .", "long-mask-middle": """ Frisörbranschen påverkas väldigt negativt av den nuvarande situationen när kunderna inte kan komma till salongerna, vilket förstås gör att många frisörer är hotade av konkurs @@ -16,7 +16,7 @@ Om jag bestämmer mig för att skriva en lång text så blir jag hungrig. Jag måste laga kaffe och kanske springa ner till bageriet, eller leta efter en karamell eller något annat sött. Och så när jag är klar med mina förberedelse ringer min före detta svärdotter. Hon har just blivit opererad. Det var blindtarmen och något mer som de plockade ut. Hennes mamma säger att hon gnäller och hennes nuvarande svärmorsa förstår inga europeiska språk, inte ett enda ord. Keine wörte bitte! Då sitter man där och ska vara snäll. Den nya svärdottern, hon som efterträdde den gamla, ringer aldrig. Kanske därför tar jag den gamla som en kompensation, eller en evig ursäkt för att inte skriva en lång text. Om jag nu bestämmer mig för att skriva en kort text, vad då? Då måste jag absolut börja med att kolla facebook, sedan mailboxen och sedan hur det går där borta i Sverige för de stackars bönderna som söker fruar men har så vansinnigt flotta och fina traktorer och hus som förr i världen skulle betraktas som herrgårdar, och så ringer telefonen. Det är en barndomsvän. Han brukar ringa varannan dag. Han har en ganska gedigen utbildning. Matematiker och gudarna vet vad, och sen fick han hjärnblödning och blev överkörd av en buss och ramlade omkull i Nationalteaterns trappuppgång, i den ordningen. Han orar sig för spionerna. Det finns tydligen spioner överallt. Det finns spioner utanför den amerikanska ambassaden och det finns spioner inni i den amerikanska ambassaden. Nu råkar denna stora vita byggnad, som hyser de amerikanska diplomaterna finnas här alldeles i närheten. De där stackarna som står givakt i alla väder kan åtminstone inte vara spionerna, men spionerna är kanske osynliga? I alla fall har jag fått reda på, genom en konstnär som spelar jultomte året om, att spionerna bakom den norska ambassaden är osynliga men om man står helt stilla kan man höra när de jojkar till varandra. Jag går och ser en föreställning och måste naturligtvis skriva lika långt varje gång. I går såg jag en ung man som åt upp ett päron, det var alltså för att vara orginell, för äpplet finns ju som en klassisk föreställning. Denna unga man som har långa ben, vansinnigt långa ben, ovanligt långa ben, lyckades tråka ihjäl femtiotvå personer som sprang ut ur en gammal fiskfabrik och kommer nog aldrig att se en s k föreställning där han finns med nån mer gång. Oj vad det är svårt att konsentrera sig om man har gäster. De ska ha kaffe och de ska underhållas, då kan man heller inte skriva en lång eller en kort text. - """, + """, # noqa: RUF001 } @@ -44,7 +44,7 @@ def test_rounding(kb_bert_predictor: TopKPredictor) -> None: def remove_scores(actual): - return "|".join(map(lambda x: x.split(":")[0], actual.split("|"))) + return "|".join((x.split(":")[0] for x in actual.split("|"))) def test_long_text(kb_bert_predictor: TopKPredictor) -> None: