From e6bda280ef925fce459dda8554bde4bf13077893 Mon Sep 17 00:00:00 2001 From: Hirokazu Kiyomaru Date: Sat, 3 Jun 2023 06:50:03 +0900 Subject: [PATCH 1/9] add new line after senter prediction --- src/kwja/callbacks/senter_module_writer.py | 12 ++++++++++++ src/kwja/cli/cli.py | 2 +- tests/callbacks/test_senter_module_writer.py | 4 +++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/kwja/callbacks/senter_module_writer.py b/src/kwja/callbacks/senter_module_writer.py index 0bf973bf..248bc845 100644 --- a/src/kwja/callbacks/senter_module_writer.py +++ b/src/kwja/callbacks/senter_module_writer.py @@ -94,3 +94,15 @@ def write_on_epoch_end( batch_indices: Optional[Sequence[Any]] = None, ) -> None: pass # pragma: no cover + + def on_predict_epoch_end( + self, + trainer: pl.Trainer, + pl_module: pl.LightningModule, + ) -> None: + output_string: str = "\n" + if isinstance(self.destination, Path): + with self.destination.open(mode="a") as f: + f.write(output_string) + elif isinstance(self.destination, TextIOBase): + self.destination.write(output_string) diff --git a/src/kwja/cli/cli.py b/src/kwja/cli/cli.py index 23e02688..e59cc6d4 100644 --- a/src/kwja/cli/cli.py +++ b/src/kwja/cli/cli.py @@ -129,7 +129,7 @@ def apply_module(self, input_file: Path) -> None: for sent_idx, sentence in enumerate(document.sentences): sentence.sid = f"{document.doc_id}-{sent_idx}" sentence.misc_comment = f"kwja:{kwja.__version__}" - output_string += document.to_raw_text().strip() + output_string += document.to_raw_text() self.destination.write_text(output_string) def export_prediction(self) -> str: diff --git a/tests/callbacks/test_senter_module_writer.py b/tests/callbacks/test_senter_module_writer.py index 98145f3f..4bae7ad3 100644 --- a/tests/callbacks/test_senter_module_writer.py +++ b/tests/callbacks/test_senter_module_writer.py @@ -83,12 +83,14 @@ def test_write_on_batch_end(char_tokenizer: PreTrainedTokenizerBase) -> None: # S-ID:{doc_id_prefix}-1-1 kwja:{kwja.__version__} 違う文書の一文目。 # S-ID:{doc_id_prefix}-1-2 kwja:{kwja.__version__} - 二文目。""" + 二文目。 + """ ), ] dataset = SenterInferenceDataset(ListConfig(texts), char_tokenizer, max_seq_length, doc_id_prefix=doc_id_prefix) trainer = MockTrainer([DataLoader(dataset, batch_size=num_examples)]) writer = SenterModuleWriter(destination=destination) writer.write_on_batch_end(trainer, ..., prediction, None, ..., 0, 0) + writer.on_predict_epoch_end(trainer, ...) assert isinstance(writer.destination, Path), "destination isn't set" assert writer.destination.read_text() == expected_texts[0] From 1e95221b0fcbefdc91ef00f0e0ed2c7369c9761d Mon Sep 17 00:00:00 2001 From: Taka008 Date: Sat, 3 Jun 2023 08:51:19 +0900 Subject: [PATCH 2/9] fix to overwrite word module results with seq2seq module ones --- src/kwja/cli/cli.py | 23 +++++++++++-------- .../datamodule/datasets/word_inference.py | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/kwja/cli/cli.py b/src/kwja/cli/cli.py index 23e02688..5731b57a 100644 --- a/src/kwja/cli/cli.py +++ b/src/kwja/cli/cli.py @@ -64,12 +64,12 @@ def _load_module(self) -> pl.LightningModule: def delete_module_and_trainer(self) -> None: del self.module, self.trainer - def apply_module(self, input_file: Path) -> None: - datamodule = self._load_datamodule(input_file) + def apply_module(self, input_file: Path, from_seq2seq: bool = False) -> None: + datamodule = self._load_datamodule(input_file, from_seq2seq) assert self.trainer is not None self.trainer.predict(model=self.module, dataloaders=[datamodule.predict_dataloader()], return_predictions=False) - def _load_datamodule(self, input_file: Path) -> DataModule: + def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: raise NotImplementedError def export_prediction(self) -> str: @@ -82,7 +82,7 @@ def _load_module(self) -> pl.LightningModule: checkpoint_path: Path = download_checkpoint(module="typo", model_size=self.model_size) return TypoModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) - def _load_datamodule(self, input_file: Path) -> DataModule: + def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.texts = _split_into_documents(input_file.read_text()) datamodule = DataModule(cfg=self.module.hparams.datamodule) @@ -107,14 +107,14 @@ def _load_module(self) -> pl.LightningModule: return SenterModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) return # type: ignore - def _load_datamodule(self, input_file: Path) -> DataModule: + def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.texts = _split_into_documents(input_file.read_text()) datamodule = DataModule(cfg=self.module.hparams.datamodule) datamodule.setup(stage=TrainerFn.PREDICTING) return datamodule - def apply_module(self, input_file: Path) -> None: + def apply_module(self, input_file: Path, from_seq2seq: bool = False) -> None: if self.model_size != ModelSize.tiny: super().apply_module(input_file) return @@ -142,7 +142,7 @@ def _load_module(self): checkpoint_path: Path = download_checkpoint(module="seq2seq", model_size=self.model_size) return Seq2SeqModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) - def _load_datamodule(self, input_file: Path) -> DataModule: + def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.senter_file = input_file datamodule = DataModule(cfg=self.module.hparams.datamodule) @@ -159,7 +159,7 @@ def _load_module(self) -> pl.LightningModule: checkpoint_path: Path = download_checkpoint(module="char", model_size=self.model_size) return CharModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) - def _load_datamodule(self, input_file: Path) -> DataModule: + def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.senter_file = input_file datamodule = DataModule(cfg=self.module.hparams.datamodule) @@ -183,9 +183,10 @@ def _load_module(self) -> pl.LightningModule: checkpoint_path: Path = download_checkpoint(module="word", model_size=self.model_size) return WordModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) - def _load_datamodule(self, input_file: Path) -> DataModule: + def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.juman_file = input_file + self.module.hparams.datamodule.predict.from_seq2seq = from_seq2seq datamodule = DataModule(cfg=self.module.hparams.datamodule) datamodule.setup(stage=TrainerFn.PREDICTING) return datamodule @@ -223,7 +224,9 @@ def run(self, input_documents: List[str], tasks: List[str], interactive: bool = processor = self.processors[task] if interactive is False: processor.load() - processor.apply_module(input_file) + + from_seq2seq: bool = task == "word" and "seq2seq" in tasks + processor.apply_module(input_file, from_seq2seq) input_file = processor.destination if interactive is False: processor.delete_module_and_trainer() diff --git a/src/kwja/datamodule/datasets/word_inference.py b/src/kwja/datamodule/datasets/word_inference.py index c0de8be4..fb8aba1a 100644 --- a/src/kwja/datamodule/datasets/word_inference.py +++ b/src/kwja/datamodule/datasets/word_inference.py @@ -35,6 +35,7 @@ def __init__( special_tokens: ListConfig, juman_file: Optional[Path] = None, knp_file: Optional[Path] = None, + from_seq2seq: bool = False, ) -> None: super(WordInferenceDataset, self).__init__(tokenizer, max_seq_length) if juman_file is not None: @@ -56,8 +57,7 @@ def __init__( super(BaseDataset, self).__init__(documents, tokenizer, max_seq_length, document_split_stride) # ---------- seq2seq ---------- - self.from_seq2seq: bool = juman_file is not None and juman_file.suffix == ".seq2seq" - + self.from_seq2seq: bool = from_seq2seq # ---------- cohesion analysis ---------- self.cohesion_tasks = [CohesionTask(ct) for ct in cohesion_tasks] self.exophora_referents = [ExophoraReferent(er) for er in exophora_referents] From ab7e61e870c805640e9a779d49147ec108efa869 Mon Sep 17 00:00:00 2001 From: Hirokazu Kiyomaru Date: Sat, 3 Jun 2023 12:32:08 +0900 Subject: [PATCH 3/9] update test_cli.py --- tests/cli/sample.txt | 5 ----- tests/cli/test_cli.py | 21 +++++++++++++++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) delete mode 100644 tests/cli/sample.txt diff --git a/tests/cli/sample.txt b/tests/cli/sample.txt deleted file mode 100644 index 7d945445..00000000 --- a/tests/cli/sample.txt +++ /dev/null @@ -1,5 +0,0 @@ -KWJAは日本語の統合解析ツールです。汎用言語モデルを利用し、様々な言語解析を統一的な方法で解いています。 -EOD -計算機による言語理解を実現するためには,計算機に常識・世界知識を与える必要があります. -10年前にはこれは非常に難しい問題でしたが,近年の計算機パワー,計算機ネットワークの飛躍的進展によって計算機が超大規模テキストを取り扱えるようになり,そこから常識を自動獲得することが少しずつ可能になってきました. -EOD diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index febc892c..5357d0f1 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -1,3 +1,5 @@ +import tempfile +import textwrap from typing import List, Set, Tuple from typer.testing import CliRunner @@ -17,11 +19,26 @@ def test_device(): def test_text_input(): - _ = runner.invoke(app, args=["--model-size", "tiny", "--text", "おはよう"]) + ret = runner.invoke(app, args=["--model-size", "tiny", "--text", "おはよう"]) + assert ret.exception is None def test_file_input(): - _ = runner.invoke(app, args=["--model-size", "tiny", "--filename", "./sample.txt"]) + with tempfile.NamedTemporaryFile("wt") as f: + f.write( + textwrap.dedent( + """\ + KWJAは日本語の統合解析ツールです。汎用言語モデルを利用し、様々な言語解析を統一的な方法で解いています。 + EOD + 計算機による言語理解を実現するためには,計算機に常識・世界知識を与える必要があります. + 10年前にはこれは非常に難しい問題でしたが,近年の計算機パワー,計算機ネットワークの飛躍的進展によって計算機が超大規模テキストを取り扱えるようになり,そこから常識を自動獲得することが少しずつ可能になってきました. + EOD + """ + ) + ) + f.seek(0) + ret = runner.invoke(app, args=["--model-size", "tiny", "--filename", f.name]) + assert ret.exception is None def test_task_input(): From ef0ae4b70fe9ded01f676c8b5963abe6996c887b Mon Sep 17 00:00:00 2001 From: Hirokazu Kiyomaru Date: Sat, 3 Jun 2023 12:40:59 +0900 Subject: [PATCH 4/9] add test to ensure that CLI output can be parsed successfully --- tests/cli/test_cli.py | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index 5357d0f1..63efe748 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -1,12 +1,15 @@ +import io import tempfile import textwrap from typing import List, Set, Tuple +from rhoknp import Document +from rhoknp.utils.reader import chunk_by_document from typer.testing import CliRunner from kwja.cli.cli import app -runner = CliRunner() +runner = CliRunner(mix_stderr=False) def test_version(): @@ -41,6 +44,34 @@ def test_file_input(): assert ret.exception is None +def test_sanity(): + with tempfile.NamedTemporaryFile("wt") as f: + f.write( + textwrap.dedent( + """\ + KWJAは日本語の統合解析ツールです。汎用言語モデルを利用し、様々な言語解析を統一的な方法で解いています。 + EOD + 計算機による言語理解を実現するためには、計算機に常識・世界知識を与える必要があります。 + 10年前にはこれは非常に難しい問題でしたが、近年の計算機パワー、計算機ネットワークの飛躍的進展によって + 計算機が超大規模テキストを取り扱えるようになり、そこから常識を自動獲得することが少しずつ可能になってきました。 + EOD + """ + ) + ) + f.seek(0) + ret = runner.invoke(app, args=["--model-size", "tiny", "--filename", f.name]) + documents: list[Document] = [] + for knp_text in chunk_by_document(io.StringIO(ret.stdout)): + documents.append(Document.from_knp(knp_text)) + assert len(documents) == 2 + assert documents[0].text == "KWJAは日本語の統合解析ツールです。汎用言語モデルを利用し、様々な言語解析を統一的な方法で解いています。" + assert documents[1].text == ( + "計算機による言語理解を実現するためには、計算機に常識・世界知識を与える必要があります。10年前にはこれは非常に難しい問題でしたが、" + + "近年の計算機パワー、計算機ネットワークの飛躍的進展によって計算機が超大規模テキストを取り扱えるようになり、そこから常識を" + + "自動獲得することが少しずつ可能になってきました。" + ) + + def test_task_input(): tasks: List[str] = [ "", From e855e8206fbcb866daa6c0509f7f726efafbec85 Mon Sep 17 00:00:00 2001 From: Hirokazu Kiyomaru Date: Sat, 3 Jun 2023 12:51:38 +0900 Subject: [PATCH 5/9] update changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0232aa80..9abe1f09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed +- Fix a bug in the interactive mode. +- Fix a bug in the seq2seq model's output. ## [v2.1.0] - 2023-06-02 ### Added From eece5832b936be916282b825d16f77979a82a0b5 Mon Sep 17 00:00:00 2001 From: nobu-g Date: Sat, 3 Jun 2023 19:30:33 +0900 Subject: [PATCH 6/9] refactor --- src/kwja/callbacks/word_module_writer.py | 17 +++-- src/kwja/cli/cli.py | 70 +++++++++++-------- src/kwja/datamodule/datasets/word.py | 3 - .../datamodule/datasets/word_inference.py | 3 - 4 files changed, 52 insertions(+), 41 deletions(-) diff --git a/src/kwja/callbacks/word_module_writer.py b/src/kwja/callbacks/word_module_writer.py index f3b434de..3786ab5b 100644 --- a/src/kwja/callbacks/word_module_writer.py +++ b/src/kwja/callbacks/word_module_writer.py @@ -42,7 +42,12 @@ class WordModuleWriter(BasePredictionWriter): - def __init__(self, ambig_surf_specs: List[Dict[str, str]], destination: Optional[Union[str, Path]] = None) -> None: + def __init__( + self, + ambig_surf_specs: List[Dict[str, str]], + preserve_reading_lemma_canon: bool = False, + destination: Optional[Union[str, Path]] = None, + ) -> None: super().__init__(write_interval="batch") if destination is None: self.destination: Union[Path, TextIO] = sys.stdout @@ -60,6 +65,8 @@ def __init__(self, ambig_surf_specs: List[Dict[str, str]], destination: Optional self.jumandic = JumanDic(RESOURCE_PATH / "jumandic") self.jinf = Jinf() + self.preserve_reading_lemma_canon: bool = preserve_reading_lemma_canon + self.prev_doc_id: Optional[str] = None self.doc_id_sid2predicted_sentence: Dict[str, Dict[str, Sentence]] = defaultdict(dict) @@ -110,7 +117,7 @@ def write_on_batch_end( assert example.doc_id is not None, "doc_id isn't set" document = dataset.doc_id2document.pop(example.doc_id) num_morphemes = len(document.morphemes) - if dataset.from_seq2seq is True: + if self.preserve_reading_lemma_canon is True: word_reading_predictions = [m.reading for m in document.morphemes] canons = [m.canon for m in document.morphemes] else: @@ -131,7 +138,7 @@ def write_on_batch_end( word_reading_predictions, morpheme_attribute_predictions, canons, - dataset.from_seq2seq, + self.preserve_reading_lemma_canon, ) predicted_document = chunk_morphemes(document, morphemes, word_feature_probabilities) predicted_document.doc_id = document.doc_id @@ -180,7 +187,7 @@ def _build_morphemes( reading_predictions: List[str], morpheme_attribute_predictions: Tuple[List[int], List[int], List[int], List[int]], canons: List[Optional[str]], - from_seq2seq: bool, + preserve_lemma: bool, ) -> List[Morpheme]: assert len(surfs) == len(norms) == len(reading_predictions) morphemes = [] @@ -197,7 +204,7 @@ def _build_morphemes( conjform_id = CONJTYPE_TAG_CONJFORM_TAG2CONJFORM_ID[conjtype][conjform] homograph_ops: List[Dict[str, Any]] = [] - if from_seq2seq: + if preserve_lemma is True: lemma = norm else: lemma = self._get_lemma(norm, pos, subpos, conjtype, conjform, homograph_ops) diff --git a/src/kwja/cli/cli.py b/src/kwja/cli/cli.py index 378c72e7..639c4c6f 100644 --- a/src/kwja/cli/cli.py +++ b/src/kwja/cli/cli.py @@ -41,7 +41,7 @@ def __init__(self, config: CLIConfig, batch_size: int) -> None: self.module: Optional[pl.LightningModule] = None self.trainer: Optional[pl.Trainer] = None - def load(self): + def load(self, **writer_kwargs): self.module = self._load_module() if self.config.torch_compile is True: self.module = torch.compile(self.module) # type: ignore @@ -51,7 +51,9 @@ def load(self): self.trainer = pl.Trainer( logger=False, callbacks=[ - hydra.utils.instantiate(self.module.hparams.callbacks.prediction_writer, destination=self.destination), + hydra.utils.instantiate( + self.module.hparams.callbacks.prediction_writer, destination=self.destination, **writer_kwargs + ), hydra.utils.instantiate(self.module.hparams.callbacks.progress_bar), ], accelerator=self.device_name, @@ -64,12 +66,12 @@ def _load_module(self) -> pl.LightningModule: def delete_module_and_trainer(self) -> None: del self.module, self.trainer - def apply_module(self, input_file: Path, from_seq2seq: bool = False) -> None: - datamodule = self._load_datamodule(input_file, from_seq2seq) + def apply_module(self, input_file: Path) -> None: + datamodule = self._load_datamodule(input_file) assert self.trainer is not None self.trainer.predict(model=self.module, dataloaders=[datamodule.predict_dataloader()], return_predictions=False) - def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: + def _load_datamodule(self, input_file: Path) -> DataModule: raise NotImplementedError def export_prediction(self) -> str: @@ -82,7 +84,7 @@ def _load_module(self) -> pl.LightningModule: checkpoint_path: Path = download_checkpoint(module="typo", model_size=self.model_size) return TypoModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) - def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: + def _load_datamodule(self, input_file: Path) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.texts = _split_into_documents(input_file.read_text()) datamodule = DataModule(cfg=self.module.hparams.datamodule) @@ -107,14 +109,14 @@ def _load_module(self) -> pl.LightningModule: return SenterModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) return # type: ignore - def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: + def _load_datamodule(self, input_file: Path) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.texts = _split_into_documents(input_file.read_text()) datamodule = DataModule(cfg=self.module.hparams.datamodule) datamodule.setup(stage=TrainerFn.PREDICTING) return datamodule - def apply_module(self, input_file: Path, from_seq2seq: bool = False) -> None: + def apply_module(self, input_file: Path) -> None: if self.model_size != ModelSize.tiny: super().apply_module(input_file) return @@ -142,7 +144,7 @@ def _load_module(self): checkpoint_path: Path = download_checkpoint(module="seq2seq", model_size=self.model_size) return Seq2SeqModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) - def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: + def _load_datamodule(self, input_file: Path) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.senter_file = input_file datamodule = DataModule(cfg=self.module.hparams.datamodule) @@ -159,7 +161,7 @@ def _load_module(self) -> pl.LightningModule: checkpoint_path: Path = download_checkpoint(module="char", model_size=self.model_size) return CharModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) - def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: + def _load_datamodule(self, input_file: Path) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.senter_file = input_file datamodule = DataModule(cfg=self.module.hparams.datamodule) @@ -178,15 +180,21 @@ def export_prediction(self) -> str: class WordModuleProcessor(BaseModuleProcessor): + def __init__(self, config: CLIConfig, batch_size: int, from_seq2seq: bool) -> None: + super().__init__(config, batch_size) + self.from_seq2seq = from_seq2seq + + def load(self): + super().load(preserve_reading_lemma_canon=self.from_seq2seq) + def _load_module(self) -> pl.LightningModule: typer.echo("Loading word module", err=True) checkpoint_path: Path = download_checkpoint(module="word", model_size=self.model_size) return WordModule.fast_load_from_checkpoint(checkpoint_path, map_location=self.device) - def _load_datamodule(self, input_file: Path, from_seq2seq: bool = False) -> DataModule: + def _load_datamodule(self, input_file: Path) -> DataModule: assert self.module is not None self.module.hparams.datamodule.predict.juman_file = input_file - self.module.hparams.datamodule.predict.from_seq2seq = from_seq2seq datamodule = DataModule(cfg=self.module.hparams.datamodule) datamodule.setup(stage=TrainerFn.PREDICTING) return datamodule @@ -196,41 +204,43 @@ def export_prediction(self) -> str: class CLIProcessor: - def __init__(self, config: CLIConfig) -> None: + def __init__(self, config: CLIConfig, tasks: List[str]) -> None: self.raw_destination = Path(NamedTemporaryFile(suffix=".txt", delete=False).name) - self.processors: Dict[str, BaseModuleProcessor] = { + self._task2processors: Dict[str, BaseModuleProcessor] = { "typo": TypoModuleProcessor(config, config.typo_batch_size), "senter": SenterModuleProcessor(config, config.senter_batch_size), "seq2seq": Seq2SeqModuleProcessor(config, config.seq2seq_batch_size), "char": CharModuleProcessor(config, config.char_batch_size), - "word": WordModuleProcessor(config, config.word_batch_size), + "word": WordModuleProcessor( + config, + config.word_batch_size, + from_seq2seq="seq2seq" in tasks, + ), } + self.processors: List[BaseModuleProcessor] = [self._task2processors[task] for task in tasks] - def load_modules(self, tasks: List[str]) -> None: - for task in tasks: - self.processors[task].load() + def load_all_modules(self) -> None: + for processor in self.processors: + processor.load() def refresh(self) -> None: self.raw_destination.unlink(missing_ok=True) - for processor in self.processors.values(): + for processor in self._task2processors.values(): processor.destination.unlink(missing_ok=True) - def run(self, input_documents: List[str], tasks: List[str], interactive: bool = False) -> None: + def run(self, input_documents: List[str], interactive: bool = False) -> None: self.raw_destination.write_text( "".join(_normalize_text(input_document) + "\nEOD\n" for input_document in input_documents) ) input_file = self.raw_destination - for task in tasks: - processor = self.processors[task] + for processor in self.processors: if interactive is False: processor.load() - - from_seq2seq: bool = task == "word" and "seq2seq" in tasks - processor.apply_module(input_file, from_seq2seq) + processor.apply_module(input_file) input_file = processor.destination if interactive is False: processor.delete_module_and_trainer() - print(self.processors[tasks[-1]].export_prediction(), end="") + print(self.processors[-1].export_prediction(), end="") def _normalize_text(text: str) -> str: @@ -354,24 +364,24 @@ def main( if word_batch_size is not None: config.word_batch_size = word_batch_size - processor = CLIProcessor(config) + processor = CLIProcessor(config, specified_tasks) # Batch mode if input_text is not None: if input_text.strip() != "": - processor.run(_split_into_documents(input_text), specified_tasks) + processor.run(_split_into_documents(input_text)) processor.refresh() raise typer.Exit() # Interactive mode - processor.load_modules(specified_tasks) + processor.load_all_modules() typer.echo('Please end your input with a new line and type "EOD"', err=True) input_text = "" while True: input_ = input() if input_ == "EOD": processor.refresh() - processor.run([input_text], specified_tasks, interactive=True) + processor.run([input_text], interactive=True) print("EOD") # To indicate the end of the output. input_text = "" else: diff --git a/src/kwja/datamodule/datasets/word.py b/src/kwja/datamodule/datasets/word.py index 10894ab8..f2e9a02f 100644 --- a/src/kwja/datamodule/datasets/word.py +++ b/src/kwja/datamodule/datasets/word.py @@ -84,9 +84,6 @@ def __init__( # some tags are not annotated in editorial articles self.skip_cohesion_ne_discourse = self.path.parts[-2] == "kyoto_ed" - # ---------- seq2seq ---------- - self.from_seq2seq: bool = False - # ---------- reading prediction ---------- reading_resource_path = RESOURCE_PATH / "reading_prediction" self.reading2reading_id = get_reading2reading_id(reading_resource_path / "vocab.txt") diff --git a/src/kwja/datamodule/datasets/word_inference.py b/src/kwja/datamodule/datasets/word_inference.py index fb8aba1a..837a662e 100644 --- a/src/kwja/datamodule/datasets/word_inference.py +++ b/src/kwja/datamodule/datasets/word_inference.py @@ -35,7 +35,6 @@ def __init__( special_tokens: ListConfig, juman_file: Optional[Path] = None, knp_file: Optional[Path] = None, - from_seq2seq: bool = False, ) -> None: super(WordInferenceDataset, self).__init__(tokenizer, max_seq_length) if juman_file is not None: @@ -56,8 +55,6 @@ def __init__( self.tokenizer_input_format = "text" super(BaseDataset, self).__init__(documents, tokenizer, max_seq_length, document_split_stride) - # ---------- seq2seq ---------- - self.from_seq2seq: bool = from_seq2seq # ---------- cohesion analysis ---------- self.cohesion_tasks = [CohesionTask(ct) for ct in cohesion_tasks] self.exophora_referents = [ExophoraReferent(er) for er in exophora_referents] From 02b7733ac15ab64939648b18b537174f978bebc9 Mon Sep 17 00:00:00 2001 From: nobu-g Date: Sat, 3 Jun 2023 19:32:50 +0900 Subject: [PATCH 7/9] update CHANGELOG.md --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9abe1f09..a61986fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] + +## [v2.1.1] - 2023-06-03 ### Fixed - Fix a bug in the interactive mode. - Fix a bug in the seq2seq model's output. @@ -162,7 +164,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed - Remove an unnecessary dependency, `fugashi`. -[Unreleased]: https://github.com/ku-nlp/kwja/compare/v2.1.0...HEAD +[Unreleased]: https://github.com/ku-nlp/kwja/compare/v2.1.1...HEAD +[2.1.1]: https://github.com/ku-nlp/kwja/compare/v2.1.0...v2.1.1 [2.1.0]: https://github.com/ku-nlp/kwja/compare/v2.0.0...v2.1.0 [2.0.0]: https://github.com/ku-nlp/kwja/compare/v1.4.2...v2.0.0 [1.4.2]: https://github.com/ku-nlp/kwja/compare/v1.4.1...v1.4.2 From 407a7d8a985288e32eafed7cb04bf9963e6c5307 Mon Sep 17 00:00:00 2001 From: nobu-g Date: Sat, 3 Jun 2023 19:35:16 +0900 Subject: [PATCH 8/9] update deps --- poetry.lock | 339 ++++++++++++++++++++++++++-------------------------- 1 file changed, 170 insertions(+), 169 deletions(-) diff --git a/poetry.lock b/poetry.lock index c352449a..13d0b1e3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -666,13 +666,13 @@ files = [ [[package]] name = "huggingface-hub" -version = "0.14.1" +version = "0.15.1" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.7.0" files = [ - {file = "huggingface_hub-0.14.1-py3-none-any.whl", hash = "sha256:9fc619170d800ff3793ad37c9757c255c8783051e1b5b00501205eb43ccc4f27"}, - {file = "huggingface_hub-0.14.1.tar.gz", hash = "sha256:9ab899af8e10922eac65e290d60ab956882ab0bf643e3d990b1394b6b47b7fbc"}, + {file = "huggingface_hub-0.15.1-py3-none-any.whl", hash = "sha256:05b0fb0abbf1f625dfee864648ac3049fe225ac4371c7bafaca0c2d3a2f83445"}, + {file = "huggingface_hub-0.15.1.tar.gz", hash = "sha256:a61b7d1a7769fe10119e730277c72ab99d95c48d86a3d6da3e9f3d0f632a4081"}, ] [package.dependencies] @@ -685,13 +685,13 @@ tqdm = ">=4.42.1" typing-extensions = ">=3.7.4.3" [package.extras] -all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "black (>=23.1,<24.0)", "gradio", "jedi", "mypy (==0.982)", "pytest", "pytest-cov", "pytest-env", "pytest-xdist", "ruff (>=0.0.241)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3"] +all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "black (>=23.1,<24.0)", "gradio", "jedi", "mypy (==0.982)", "numpy", "pytest", "pytest-cov", "pytest-env", "pytest-vcr", "pytest-xdist", "ruff (>=0.0.241)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "urllib3 (<2.0)"] cli = ["InquirerPy (==0.3.4)"] -dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "black (>=23.1,<24.0)", "gradio", "jedi", "mypy (==0.982)", "pytest", "pytest-cov", "pytest-env", "pytest-xdist", "ruff (>=0.0.241)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3"] +dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "black (>=23.1,<24.0)", "gradio", "jedi", "mypy (==0.982)", "numpy", "pytest", "pytest-cov", "pytest-env", "pytest-vcr", "pytest-xdist", "ruff (>=0.0.241)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "urllib3 (<2.0)"] fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] quality = ["black (>=23.1,<24.0)", "mypy (==0.982)", "ruff (>=0.0.241)"] tensorflow = ["graphviz", "pydot", "tensorflow"] -testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "gradio", "jedi", "pytest", "pytest-cov", "pytest-env", "pytest-xdist", "soundfile"] +testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "gradio", "jedi", "numpy", "pytest", "pytest-cov", "pytest-env", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] torch = ["torch"] typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3"] @@ -809,13 +809,13 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa [[package]] name = "ipython" -version = "8.13.2" +version = "8.14.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.9" files = [ - {file = "ipython-8.13.2-py3-none-any.whl", hash = "sha256:ffca270240fbd21b06b2974e14a86494d6d29290184e788275f55e0b55914926"}, - {file = "ipython-8.13.2.tar.gz", hash = "sha256:7dff3fad32b97f6488e02f87b970f309d082f758d7b7fc252e3b19ee0e432dbb"}, + {file = "ipython-8.14.0-py3-none-any.whl", hash = "sha256:248aca623f5c99a6635bc3857677b7320b9b8039f99f070ee0d20a5ca5a8e6bf"}, + {file = "ipython-8.14.0.tar.gz", hash = "sha256:1d197b907b6ba441b692c48cf2a3a2de280dc0ac91a3405b39349a50272ca0a1"}, ] [package.dependencies] @@ -1054,12 +1054,12 @@ typing = ["mypy (>=1.0.0)"] [[package]] name = "lit" -version = "16.0.5" +version = "16.0.5.post0" description = "A Software Testing Tool" optional = false python-versions = "*" files = [ - {file = "lit-16.0.5.tar.gz", hash = "sha256:40b0224271f7832991874a6285e13da343963110f0d7c9c6e1e53f3ace901dc0"}, + {file = "lit-16.0.5.post0.tar.gz", hash = "sha256:71745d9e58dad3717735d27e2a9cca0e9ca6861d067da73c307e02fd38c98479"}, ] [[package]] @@ -1088,61 +1088,61 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.2" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, - {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, ] [[package]] @@ -1947,103 +1947,103 @@ files = [ [[package]] name = "rapidfuzz" -version = "3.0.0" +version = "3.1.0" description = "rapid fuzzy string matching" optional = false python-versions = ">=3.7" files = [ - {file = "rapidfuzz-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3ab635a544243e1924508bfc3f294c28bdced6d74388ac25041d3dabcaefab75"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cf8b1b29028dc1bc6a5654f22425ee6d3967bbd44bc3a117be0f43b03300f928"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2bbf9aad86b70283362dc2db3cacb7dcde0ffe6027f54feb0ccb23cf87b6aa11"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a9b7d22e46ada4e6a1f1404c267f3f023b44594929913d855f14bc5fb11b53d"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c81891e570e50d0afe43f722f426b0bd602d3c5315f0f290514511d9520b1e6"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:abc2f05c1f30b9533cb9b85d73c28d93aa99c7ae2992df04c1704fcaf248b59c"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:339b94c536ab9c1b1bac245fb6814df3ba104603d2c1a97f8fb41922357bd772"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8883267df996b42494f40d533ef3a3fea247531d137773a649fb851747ae12c8"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:59c6c9d3ca7d84c5878a74d142816350a3bdfb51e4d10ac104afd396168481f6"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5759bb0fd13ee030626e8bbb5b644092a043817fb192335ff4c481402b1edd0e"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:1fe6ea9300f347fd3352c755aa04d71a2786afa008d1af1a35830e6a44e7fd5f"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:481c0389c3b26cd2aa498b6924ca6e9a1d1dd5b15ad5f009d273292949e47e24"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:658be4cabcc229f52a902f5e87205e1b9c29c66e463a267c8d8f237acde56002"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-win32.whl", hash = "sha256:7f8d89b16b4752deeb66dd321548c4cfa59819982d43d2ae7ab5d6e0f15bee94"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:2132d7724c03dd322035cf1b0c23ca9e7e449ec2b7225040a2ca2fa3f1a3bbfa"}, - {file = "rapidfuzz-3.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:0bf1953a4c32ce6e2f3ed1897d0a8dbbbf19456ef0a8e37bae26e007d9fb5096"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:526df35d07083480e751f9679fd1f3e8a0819e8a13586e3860db5b65549a408a"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88c9e93508128168708aae3ef98eeb422a88204d81ac4492fcea1e1162a6af74"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:562caa39652c72156574fcf60ce7adf29964a031a57ae977c180947e00425b4a"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a149c944f3c349f6279a8cc4cbfa3e80cc2baaec9d983359698aa792faa44653"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c40a626050e37c2f74e2ba00538578d3c4a6baa171d08ed5091b6a03512ac4a"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ee35eddeddb5f5750d2a9cc55894926969fa0bac80bbe57211ae6fd0d34b39f"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94fe53da481d8580e6410f3e7e4ba4e9c5786cad1f289fbb6c9c9585c6d78e1"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4032713943c32fff97d863e6618162923e3b3c31917d437126d9fcf7e33c83d2"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dc1a39d1cc8e679c7240b2d1ed8366cf740ab8429cc9b582ebd94a5c6ededbe5"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f213bb5d4cd0b1fddf209bafe2d2896320a737fbded3a567d454e54875e4d9cc"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c9ca5f4ae767605cefa5156f5fa8561bee61849f9b2ccfb165d7087b4f9af90c"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:938cc766d0ce9eca95549593b6ca7ff86a2917b9e68c1989ad95485aed0f49dd"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87eb7e9fb49265c33bda0417cc74c474a891cae60735fbbd75d79a106483888e"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-win32.whl", hash = "sha256:3f51d35521f86e767d3e640d0ab42908d01c3e05cf54ac1f0b547f3f602800f1"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:4ef3a6aa07b996c789c8d5ab99ed0563d551d32fa9330fd0f52ba28d20fcb662"}, - {file = "rapidfuzz-3.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:7eea0ca53da78040a6b7bb041af8051c52efa7facc6f18dce33e679f2decaf62"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6dfd138dcc0920b71c1d1bc017413b032286a1f33488613dce9e254c454abaf2"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b81d15da16e97c288c645eb642d8a08d0ab98b827efb2682cab282a45893efe"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ff8835a3ba17f3baf3838f2612e3758d7b1ca09eb16c9a382df3bec5bb9bda3"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:82a4ea0742b9e375d4856714ef59241007765edbce34fd2f7d76c552ed93a7d2"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5767b0e8220b6f8afcc1fe77529e5678470f9e94a1cfc9e29f5b0721dc1496c"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8c372dc278d1d5ced7cdc99ad8cc1d3de0b245e769a6b327c462b98873e5d4"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5d8664d6f844ea9018b4866e8a8dbf49c87f703668b1b3265de83aa3c9941272"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:fa098429af4e17fb5bacb0c39f1f8349891356ba7ca540521515b5708fec4a76"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:738ae2d59ab254c4f173b40b00a9c1f092697949284c59e0879e6e3beb337a69"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:1a5eb2d1844f375f34e3c83b1a03094293d894472fdd1a095cf35e4dfa2ecf01"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:24d77723bb20030a91b096326d14b673d2ff1f0c7bbc64ed519992ed8eb5b869"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-win32.whl", hash = "sha256:b85dfb6f0c353c4b37499529f9831620a7bdc61c375e07f8c38b595f93e906e5"}, - {file = "rapidfuzz-3.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:54fb70b667b882f9939bc6f581957fcb47fec2e7ad652259835c80e9e30230c9"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4e1da3dce34d742567da0722b9c8dc2b51554ab5a22fdaf763b60209445a7b37"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c50825de43442c4625a2ca1d948c911d116cf9007ad7f29cd27561c99b16947c"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69270e0cd850984f562b2239d07cde2213e5c3642cd8d550d5ac9a0fcd0882df"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5ddf48f63895f949355a1c4d643e0a531c9317d52901f80d5a6299d967b766"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd2ad4160d8ad9a2abdad1c765fd29e4d9b6b8ce6a707ee48eb2869e7dff0f89"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc39af05cdf89be426d96fce579c812948a324b022fb11dfea1e99e180d4f68b"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d25555297466ab5ded3875913fc0bfa78b89b0a32d79bd65ffbd32ae71f07c2d"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76da6c8972acd58c31efdd09c4c85263ba3b4394d2c2929be4c171a22293bab3"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2b50f2d429d81a65910f5ee9b14e172e300a09b8b2ecb91d3e4efc5d2583915c"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f00a8b3d0b21884ea972d5430797b1a25b9d2c715b3eaf03366903aac5d8398c"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:e058ecfd8edb04b221d1b2d005f17be932075a16f75b100b275de1d3d220da5f"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:35e21f0718fd1c1853f8f433f2f84f618f6d4a6d9d96bb7c42e39797be600b58"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d128f615da9a198cd9b33be658a0c26fabe06a6d28fa4652953853e8d174c2c6"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-win32.whl", hash = "sha256:bc593306faa6c73e50cb31b81efbb580957272b14c5cf6bcf0233adf8a7e118d"}, - {file = "rapidfuzz-3.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:0f7041c550b69d35675e04dc3f0690d0c26499039e942a0b1604c6547951e6fc"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:351df02889ac3da9f3f7b10e6812740927cfab9def453079da94f83697b03f2f"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:35506d04429440333224c3711dfdb4195d34eff733cb48648d0c89a9b99faf14"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d24054843f4cfbb86df608ec1209e6a29b0d2635230577a94e38a9cfa3880d18"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a94fe0a42da816e4a6279ac4c23e4ba6de86a529b61b08d5e8e2633b29c781b"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41e98b3cebfa3e720186eeab37e6c0565895edf848fd958c34ab94c39e743311"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea5e25378591a698ae5076c582a0135db2cb43270fb2866737ab4cb6fcc34474"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6bf090b9b4ec4df5f0899bbc4055b8b173b33169186d4de1dd3d9c609bd330a2"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f241ca0bcbfcbf90bb48bb1c8dbc1fddc205bee5520f898b994adda3d3f150a"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f80986d3c8d55b848d679084231a35273320f658e64f0d86d725bb360e6cd2c4"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:62c760748b1253e08ab5138855e8f8d2c25a7cb5a0bfad74bb66db63c27d8a50"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8b5d78052e840191b9c7556eb3bd4fe52435e58bd979c75298b65262368dd1fa"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:fc764665ba19b923696eae6912a2f0fc52bdd7db6c53be178d1dd70eb72f2f68"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:62aac81ef17bab9f664828b9087d0afe5a94ed48396b0456a2503b68e3d567f2"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-win32.whl", hash = "sha256:aeb855b62bc351884a672b8f87875c552492d9199c78f33cc8650c283fd7504d"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:a0e0d8798b7048c9db4e139bafb21792013fb043df07bfaf0d3dc9e1df2be5e6"}, - {file = "rapidfuzz-3.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:ebf96d236a52058c010f354256e8de4274621a7f8b5a15dffa54d9b6a1c7e6e8"}, - {file = "rapidfuzz-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fbe4b8305cb427b49d70c182a01c91fd85112e0573193a1f9e4fbcec35ea3eff"}, - {file = "rapidfuzz-3.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db57085c9dbd0b1005d6ad905c610920c49d0752f522d2f34477b13cba24e1d1"}, - {file = "rapidfuzz-3.0.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e334225a97824d9f75f5cf8e949e129bc183f0762f4c9b7a127d1809461bdc55"}, - {file = "rapidfuzz-3.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c22a36b611a2d53fada2cb03b276135d08c2703039078ce985d7cc42734fd7"}, - {file = "rapidfuzz-3.0.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:05130d9d33c4770116037de9f131e488825165105588cc7143f77733c5b25a6f"}, - {file = "rapidfuzz-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9c263840bda0f532714ecd66f1f82ed3d3460f45e79e8a907f4df8eaafd93d31"}, - {file = "rapidfuzz-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dbaa605c0f81208efbf166afb23f73b0f3847a1a966bec828f4167f61d0ca4b"}, - {file = "rapidfuzz-3.0.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ba129c3c8202e8bef0d9964b8798913905ad1dc6293e94d7a02d87cdbef2544"}, - {file = "rapidfuzz-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e85b4f4aeb994c841478e98a9e05bcb7ed8ead084d93bd2ca0683dc5e93b1c36"}, - {file = "rapidfuzz-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:284f216f0500cd977830f107da5c3f96e91356dc7993512efc414dbd55679d51"}, - {file = "rapidfuzz-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:494b613a3e730e08df1c7c14e45c303a0f5c8a701162bfc8ac9079585837de43"}, - {file = "rapidfuzz-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a5670d5475777450fbc70ed8de8d4e3f7c69230a8b539f45bda358a6f9699f2"}, - {file = "rapidfuzz-3.0.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14e9924108a26f2f58aa8cb90f1a106398fa43e359fa5a96b0f328c7bb7f76da"}, - {file = "rapidfuzz-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:832d953b5f1462eba5a0830ea7df11b784f090ba5409fc92bccb856d2539b618"}, - {file = "rapidfuzz-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5fdcc1ce830bf46fbc098c8b6eb3201a8299476153bae7a5d5e86576f7228d0a"}, - {file = "rapidfuzz-3.0.0.tar.gz", hash = "sha256:4c1d895d16f62e9ac88d303eb918d90a390bd712055c849e01c558b7ae0fa908"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:156bff36ae590097407d1681872b9fc07a0d35fc8d761f81787873f1a2e6551f"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9242f026d47f2856ee4be13e1d1d49bdfab0eaf06913c463d66430e1c6cbb554"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1bd67ca32f4313884760af528723f2b6225a683632e400fb935acd4965c016c9"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d0724c7df783cb8bcf74714779a7edb9eed400447f9f69fbf14b98a745a6fa9"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7e96099f728300f47772c390662440083d7631517720ed4adc5081fa6ac21a8"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cf01fc028902b18bfb389fa5a8b0dd22b83283cc18844d14731cd69ab45f2e73"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f07f6c8f31b46c4ac32cbaf7583a520aa273e17576ca91e1f3dd1bf90436db4"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71d8f4b6ccaba4d2f13b123280fc5bd4dc17251f7ccad011cfb3b061c5ecf0ee"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:df0fd069bded565b8db571bc603750ad46174f31e542e6bf9091fad5bc3fe72e"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d9c74e1f51a2d293597dbaacec2cb833264eac64b3dabac782d8117acd3fe18b"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:aa8fa7c873a3b2bde4a12c49304d5a067588379e25cc9d987de7d72c98b09508"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ec61acc5ed8e58b32d35c7911647ece0ee7a453716c0363a4de8b3951967a417"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4ae7e677bd458be4c24d218d8c66c0c58188153fe7fc4beaab1556a05a627749"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-win32.whl", hash = "sha256:4a27561f9ade80ff127ea3cefb38ac68b6e568bec4aa88ac0c79dfaccb96f203"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:df692c11f592c795eec91f635eba049ab5fe63b10fc8317a19371940e483e13c"}, + {file = "rapidfuzz-3.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:ae46ecb7872ee64f318d0936cc85de57fea6cf5d182774aa514cad6a6aa18893"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8fb25ddb61a2e3b1cdedde6bcad7c4a09674f89f2d90b24e1b7b296689d1dfed"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e1b66e1c271bb0cad8cd488c5bad22b00045528a7ab5338d6bfba475bc92b7d"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e5053a4ae2c7d5073ee4a9fd0ac342afd1d2452b3fa52173fd9a6a8eda85b15"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec9bf22d0a8da08b7caaec43bb246133408ee65cf7a890530cd65c8d7d465a09"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5df0b52aad127edf037cface4b68532ce10b6487aa2e73510947da551e131c7"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1bf2866b122c6e1a76e577ae0a2bf44b68c66f1ce27da6e24b200711fa2d8356"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7730b86560e428a4a654233414ada5a61975a39be9a2688fabc6fca6b946c8e"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16a1a896e9d6c140b170b2b4579117c6bcd79525913fb9d58b10b75ff131c7fe"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:232eed0e61c826712771e95b241a7e97aac8163b1d925b6fb7d48e6ecb8f57f6"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b27ca51d3df8cf7818a61acc131f29b407703a181a22c89913c798681eff24cd"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c08164b17dd23b0e609daaf2a826e0b0a30affc0b8c12dc0fbb334e75afb677a"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:9e6b69e38d0249f8b04d3cef508b9b3eafeb2901aa42b3d056c4b6e6b5692b25"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ce69229bae58ff293108594494d509301bfecd7798ae87e3d6918feb9c7746d2"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-win32.whl", hash = "sha256:344a213efabda2d5c75a3b8e735a8fd87681df94fb789c9bb399e5d852785b15"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:19413d18de87b89bbfba7289cd9ea3ef1aebf2d5a857c22bc93cd637108afc25"}, + {file = "rapidfuzz-3.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:48640c20c0074a27e8626a94f5b6abac5900dac0fa385ed3b2bbe44ec5be3838"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a7d832ccb9cd1cea92a30a46181c6efd71b08743bbc31f4faf0bccb8694a655"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:091fd97691596953a41a356ffa73d1db7fdf80a48f241b3c359eab48858f09f4"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:55b2cead6c5be3f694f510e6a6fb92c9fed25791e271e01db501c53f1c92bad9"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb1f63cbd7a366d359860a5e18f988fa96bab2b2ae118134f494af313e13a075"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8f486c48567829789d4923033b7acdf4f8940e8a31f6bbfa96cbc918c1b96fd"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20654bac010b87e64a41d9b3c9bdcc99c74a72746e6175aedf6dfce0cc484e6e"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b38b39940a8dce1a04cf3c389918ae141ecf5562f0ad7b1daae0e7505aafc6d0"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7216cd3720727768013fd826db5378210d05af0a4fd047e50080be51d352c958"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:03080921776e52be240bb522486a2de258adee50d58bd490fcc23c0ba8845ceb"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:514c1a0ccdb796f61676b7abbb420b717b77c1826d65fc3a62faa9afd8c87c94"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3046544209b4aaca2171068789e196e98ae91d7896141a43b3627c7bb3e4c04f"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:8b231cb3bba5f22ae07f03adb721204ffa8ffad75484ce3341245cd59037641b"}, + {file = "rapidfuzz-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:254237773a4843d4c7e8307bb2940e93e3d8cf596c999b8ac659caf05007e0a0"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:284bfc02c87d1ed1fc054b9e6f5014a4f7b85f4f3213e5f95021afe36297b9e9"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1e606bee8665a223fbbcf05a071700a9d826ded087d7bd5029cf96b991a25cf5"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d66cd0edf3066099ab14f02b97796d077b041db122d75f7d2efd04a4c2b918ed"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b6813aefa9e918181584c8437bcf3ec4737fbb51c164c5979bbd5cb2adc8c5"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d0a085961b22f0550dc295b0682c4944b181c5d7e7e9b9a14a241e379d394f1"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c0e242a99ce7d5927f1ca4741ae72a4f9e73a06b5e36c99e2263134d313d92d4"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b78aefa18f392f9afc98cc1e6e4f8ca9961f79603565b0dcec8fcd7f9df6396"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:481d80b0613d250d4ff4e152f3bc84eaa0ed72d45c30af28cbc7416206019d87"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cab747e5f9478a2f7048cb4ab77b6ff8360acf8abaa55548d766f4844ecc84a8"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:29f6a4b732789076696e9686ccbff3bb45f3bdc59d78ca4592e57cb8ba27e4d2"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:36db1b8df4e9d9d28292fab4238ee264ff90f13b6a77b4b89eefb5c447deee07"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:29fa6a22f421a081bbd1dd25d0a7ffd246777da8d00e3882a83bb4dfb8ed21e0"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:be308acb7395cb9844d9d6f29535da4264de6b6fe38655808c0441c0b0f0ba83"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-win32.whl", hash = "sha256:a3d6d9a3a83f3d04b1822d6df06ad197b7bccca1e37760531f44206f3509540a"}, + {file = "rapidfuzz-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:623f9e339e53e5dfd2fe7146115238a598ae7356cdd517a3d0b106e049f0cbf3"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:45103921c13cf80e064fceab8645cf24e2394fd09b9c753f3b68f0f392ffa190"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7804f758bc7685837242bae7404470d6b0b1fcb182ac674e1a301336a71cb7b5"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:568ce3eeae6bd027dbd358ba9bbe45dfb6fee53bf69ff8b92b7a837d935bb702"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fcbffe5e73c775cd4657f2b3e30981dd9e6fa6f3e089cd819b4c6782a785ed6"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:264467fc730d13e295a42362e331143b2431baf9bffaa0dbc73773ed7667525a"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7690c1b81ca2b33721a7c11aa2610da5dd8b91312f8d3b4828abea793a7cb3bc"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1aa34f56052be1bde88ef011e31097916dd3c2b32aa3fe9218153b9f2332300"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e6b35079765e3d7427ffa601611a6f163bfe0858a70f3c28073ea285c4c8754"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e918fd975e0ff561635f2d9b2bb09eb9d3f83c9d2b7ed0df4cad30952062a54e"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:671491f57ef4fbe1028382b89cb52aa7dfeb80ddf2be57cf933bab4d37b3fbd7"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:38a86930027c8eb7e71662d0c8e69011166c9d27fa4400e9999d43e021d57891"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:489423ed9d415739665537f1337633e8202e1f3c893f11013ec41c7295809c7c"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f1d736102ea27d02c45e6bb1a859be4e7c3ab88df261c66019433ca46b292d63"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-win32.whl", hash = "sha256:785de98c954d9c61354ab5efdab2a7d16deb9642e168a320e5f293c89cbc11c4"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:a4e505320749ea4c9aeec46718637c823f33fe80469597400059c8ca1fbbbea2"}, + {file = "rapidfuzz-3.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:7b9632a23f7308c5db732a36318583e59dc862bf827338130b63dfe2424b4d6b"}, + {file = "rapidfuzz-3.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d98a80bb3c3834118e4e159c812d77cd1f2384f248d7aaafce2d50eb45603dde"}, + {file = "rapidfuzz-3.1.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fb7294e08a6f6174faa99d7619e030593e0f89e16ec1a5699d5aafeca147872"}, + {file = "rapidfuzz-3.1.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:406f46646626df090b60fd7a5a135c4f70fecb181019b81ad913634a630431b5"}, + {file = "rapidfuzz-3.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d820632b15ee16f066ecbee9081c280b27738fe3f3aeb8e6f3cff6b99b46825b"}, + {file = "rapidfuzz-3.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:06c7ebba86efe27fb0d06ad2209e09a325cbae846cf0dba4d1a713c6a25e3cf1"}, + {file = "rapidfuzz-3.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9c40acaf9d73120d19062bd97e435b30696cae248610095ccd97f16f9a685915"}, + {file = "rapidfuzz-3.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7349691e553b9b5490d1a37e4f450ecc940633be2bc171320a17a75a38097d74"}, + {file = "rapidfuzz-3.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86c6fd31e5c579d65deb4783c4335a457b6fbc0d6f5fa40ed9357b8d1b599262"}, + {file = "rapidfuzz-3.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:736ee37c47d8b48951fbc553d5ef7d71e3d868c818b8d0853a1e23a01701640b"}, + {file = "rapidfuzz-3.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:38e7fc847162a9fcd1c73e2874af456f72e20f8643e55b0637677854a1d618dd"}, + {file = "rapidfuzz-3.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f425aefa94c79e304c896addf97ffc057750840f0821b5a098071a56a4c0e922"}, + {file = "rapidfuzz-3.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:814a9926e943093c315e6a7d78b425d03f76a8ea03f4c706af43bafaba257e2f"}, + {file = "rapidfuzz-3.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52f3c5754738b9695b81e5b3b9185e9975defdb9755617063b827386019d6a5"}, + {file = "rapidfuzz-3.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55e1d086d373ecce7176dcd67863dccca95400b76f2908f714711ae52ca997e5"}, + {file = "rapidfuzz-3.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:53789a4dacb9d2001d71e8a255064222bd7c8b34cfae4120a8777fb8235e5fe1"}, + {file = "rapidfuzz-3.1.0.tar.gz", hash = "sha256:5571e38ef9452cc89203c9f30fabf23b1fc59dcc2063762d0b037ebeb7c40a58"}, ] [package.extras] @@ -2336,18 +2336,18 @@ files = [ [[package]] name = "sentry-sdk" -version = "1.24.0" +version = "1.25.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.24.0.tar.gz", hash = "sha256:0bbcecda9f51936904c1030e7fef0fe693e633888f02a14d1cb68646a50e83b3"}, - {file = "sentry_sdk-1.24.0-py2.py3-none-any.whl", hash = "sha256:56d6d9d194c898d853a7c1dd99bed92ce82334ee1282292c15bcc967ff1a49b5"}, + {file = "sentry-sdk-1.25.0.tar.gz", hash = "sha256:5be3296fc574fa8a4d9b213b4dcf8c8d0246c08f8bd78315c6286f386c37555a"}, + {file = "sentry_sdk-1.25.0-py2.py3-none-any.whl", hash = "sha256:fe85cf5d0b3d0aa3480df689f9f6dc487de783defb0a95043368375dc893645e"}, ] [package.dependencies] certifi = "*" -urllib3 = {version = ">=1.26.11,<2.0.0", markers = "python_version >= \"3.6\""} +urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} [package.extras] aiohttp = ["aiohttp (>=3.5)"] @@ -2874,13 +2874,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.6.2" +version = "4.6.3" description = "Backported and Experimental Type Hints for Python 3.7+" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.6.2-py3-none-any.whl", hash = "sha256:3a8b36f13dd5fdc5d1b16fe317f5668545de77fa0b8e02006381fd49d731ab98"}, - {file = "typing_extensions-4.6.2.tar.gz", hash = "sha256:06006244c70ac8ee83fa8282cb188f697b8db25bc8b4df07be1873c43897060c"}, + {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, + {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, ] [[package]] @@ -2896,19 +2896,20 @@ files = [ [[package]] name = "urllib3" -version = "1.26.16" +version = "2.0.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7" files = [ - {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, - {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, + {file = "urllib3-2.0.2-py3-none-any.whl", hash = "sha256:d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"}, + {file = "urllib3-2.0.2.tar.gz", hash = "sha256:61717a1095d7e155cdb737ac7bb2f4324a858a1e2e6466f6d03ff630ca68d3cc"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wandb" From 667961ec84fb2dc12e790172d7f153c59aa28132 Mon Sep 17 00:00:00 2001 From: nobu-g Date: Sat, 3 Jun 2023 19:35:33 +0900 Subject: [PATCH 9/9] bump version to 2.1.1 --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index e2fa5817..aa27c1ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "kwja" -version = "2.1.0" -description = "A unified language analyzer for Japanese" +version = "2.1.1" +description = "A unified Japanese analyzer based on foundation models" authors = [ "Hirokazu Kiyomaru ", "Nobuhiro Ueda ",