From 7ae7942cc9a6750e519aadd1babf54fa3f21ff05 Mon Sep 17 00:00:00 2001 From: Sylvain Lesage Date: Mon, 16 May 2022 13:43:35 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20fix=20the=20query=20to=20?= =?UTF-8?q?get=20the=20list=20of=20jobs=20in=20the=20queue=20(#271)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 🐛 fix the query to get the list of jobs in the queue we did a lot of unnecessary lookup. * feat: 🎸 upgrade dependencies --- libs/libqueue/Makefile | 8 +- libs/libqueue/src/libqueue/queue.py | 35 ++++---- libs/libqueue/tests/docker-compose.yml | 10 +++ libs/libqueue/tests/test_queue.py | 19 ++++ services/api/poetry.lock | 51 +++++------ services/worker/poetry.lock | 116 ++++++++++++------------- 6 files changed, 139 insertions(+), 100 deletions(-) create mode 100644 libs/libqueue/tests/docker-compose.yml diff --git a/libs/libqueue/Makefile b/libs/libqueue/Makefile index c5c600bca2..128370518b 100644 --- a/libs/libqueue/Makefile +++ b/libs/libqueue/Makefile @@ -2,8 +2,12 @@ include ../../tools/Common.mk .PHONY: test test: - MONGO_QUEUE_DATABASE="datasets_server_queue_test" poetry run python -m pytest -x tests + docker-compose -f tests/docker-compose.yml up -d --remove-orphans + MONGO_URL="mongodb://localhost:27020" MONGO_QUEUE_DATABASE="datasets_server_queue_test" poetry run python -m pytest -x tests + docker-compose -f tests/docker-compose.yml down .PHONY: coverage coverage: - MONGO_QUEUE_DATABASE="datasets_server_queue_test" poetry run python -m pytest -s --cov --cov-report xml:coverage.xml --cov-report=term tests + docker-compose -f tests/docker-compose.yml up -d --remove-orphans + MONGO_URL="mongodb://localhost:27020" MONGO_QUEUE_DATABASE="datasets_server_queue_test" poetry run python -m pytest -s --cov --cov-report xml:coverage.xml --cov-report=term tests + docker-compose -f tests/docker-compose.yml down diff --git a/libs/libqueue/src/libqueue/queue.py b/libs/libqueue/src/libqueue/queue.py index 1c6a5015b4..60defd29db 100644 --- a/libs/libqueue/src/libqueue/queue.py +++ b/libs/libqueue/src/libqueue/queue.py @@ -205,23 +205,28 @@ def get_finished(jobs: QuerySet[AnyJob]) -> QuerySet[AnyJob]: return jobs(status__nin=[Status.WAITING, Status.STARTED]) +def get_excluded_dataset_names(jobs: QuerySet[AnyJob], max_jobs_per_dataset: Optional[int] = None) -> List[str]: + if max_jobs_per_dataset is None: + return [] + dataset_names = [job.dataset_name for job in jobs(status=Status.STARTED).only("dataset_name")] + return list( + {dataset_name for dataset_name in dataset_names if dataset_names.count(dataset_name) >= max_jobs_per_dataset} + ) + + def start_job(jobs: QuerySet[AnyJob], max_jobs_per_dataset: Optional[int] = None) -> AnyJob: - waiting_jobs = get_waiting(jobs).order_by("+created_at").no_cache() + excluded_dataset_names = get_excluded_dataset_names(jobs, max_jobs_per_dataset) + next_waiting_job = ( + jobs(status=Status.WAITING, dataset_name__nin=excluded_dataset_names) + .order_by("+created_at") + .no_cache() + .first() + ) # ^ no_cache should generate a query on every iteration, which should solve concurrency issues between workers - for job in waiting_jobs: - if job.status is not Status.WAITING: - logger.warning(f"waiting job {job.to_id()} has a not the WAITING status. Ignoring it.") - continue - if job.started_at is not None: - logger.warning(f"waiting job {job.to_id()} has a non empty started_at field. Ignoring it.") - continue - if job.finished_at is not None: - logger.warning(f"waiting job {job.to_id()} has a non empty started_at field. Ignoring it.") - continue - if max_jobs_per_dataset is None or get_num_started_for_dataset(jobs, job.dataset_name) < max_jobs_per_dataset: - job.update(started_at=datetime.utcnow(), status=Status.STARTED) - return job - raise EmptyQueue(f"no job available (within the limit of {max_jobs_per_dataset} started jobs per dataset)") + if next_waiting_job is None: + raise EmptyQueue("no job available (within the limit of {max_jobs_per_dataset} started jobs per dataset)") + next_waiting_job.update(started_at=datetime.utcnow(), status=Status.STARTED) + return next_waiting_job def get_dataset_job(max_jobs_per_dataset: Optional[int] = None) -> Tuple[str, str]: diff --git a/libs/libqueue/tests/docker-compose.yml b/libs/libqueue/tests/docker-compose.yml new file mode 100644 index 0000000000..272840e482 --- /dev/null +++ b/libs/libqueue/tests/docker-compose.yml @@ -0,0 +1,10 @@ +version: "3.9" +services: + mongodb-test-libqueue: + image: mongo + volumes: + - mongo-test-libqueue:/data/db:rw + ports: + - 27020:27017 +volumes: + mongo-test-libqueue: diff --git a/libs/libqueue/tests/test_queue.py b/libs/libqueue/tests/test_queue.py index d55165d691..837076407d 100644 --- a/libs/libqueue/tests/test_queue.py +++ b/libs/libqueue/tests/test_queue.py @@ -8,6 +8,7 @@ connect_to_queue, finish_dataset_job, get_dataset_job, + get_split_job, is_dataset_in_queue, is_split_in_queue, ) @@ -50,6 +51,24 @@ def test_add_job() -> None: finish_dataset_job(job_id, success=True) +def test_max_jobs_per_dataset() -> None: + add_split_job("dataset", "config", "split1") + add_split_job("dataset", "config", "split2") + add_split_job("dataset", "config", "split3") + _, dataset_name, config_name, split_name = get_split_job() + assert dataset_name == "dataset" + assert config_name == "config" + assert split_name == "split1" + with pytest.raises(EmptyQueue): + get_split_job(0) + with pytest.raises(EmptyQueue): + get_split_job(1) + _, dataset_name, config_name, split_name = get_split_job(2) + assert split_name == "split2" + with pytest.raises(EmptyQueue): + get_split_job(2) + + def test_is_dataset_in_queue() -> None: dataset_name = "test_dataset" dataset_name_2 = "test_dataset_2" diff --git a/services/api/poetry.lock b/services/api/poetry.lock index ff7931a614..6133a99b62 100644 --- a/services/api/poetry.lock +++ b/services/api/poetry.lock @@ -1186,7 +1186,7 @@ standard = ["websockets (>=9.1)", "httptools (>=0.2.0,<0.3.0)", "watchgod (>=0.6 [[package]] name = "watchdog" -version = "2.1.7" +version = "2.1.8" description = "Filesystem events monitoring" category = "main" optional = false @@ -2080,28 +2080,29 @@ uvicorn = [ {file = "uvicorn-0.14.0.tar.gz", hash = "sha256:45ad7dfaaa7d55cab4cd1e85e03f27e9d60bc067ddc59db52a2b0aeca8870292"}, ] watchdog = [ - {file = "watchdog-2.1.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:177bae28ca723bc00846466016d34f8c1d6a621383b6caca86745918d55c7383"}, - {file = "watchdog-2.1.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1d1cf7dfd747dec519486a98ef16097e6c480934ef115b16f18adb341df747a4"}, - {file = "watchdog-2.1.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7f14ce6adea2af1bba495acdde0e510aecaeb13b33f7bd2f6324e551b26688ca"}, - {file = "watchdog-2.1.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4d0e98ac2e8dd803a56f4e10438b33a2d40390a72750cff4939b4b274e7906fa"}, - {file = "watchdog-2.1.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:81982c7884aac75017a6ecc72f1a4fedbae04181a8665a34afce9539fc1b3fab"}, - {file = "watchdog-2.1.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0b4a1fe6201c6e5a1926f5767b8664b45f0fcb429b62564a41f490ff1ce1dc7a"}, - {file = "watchdog-2.1.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6e6ae29b72977f2e1ee3d0b760d7ee47896cb53e831cbeede3e64485e5633cc8"}, - {file = "watchdog-2.1.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b9777664848160449e5b4260e0b7bc1ae0f6f4992a8b285db4ec1ef119ffa0e2"}, - {file = "watchdog-2.1.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:19b36d436578eb437e029c6b838e732ed08054956366f6dd11875434a62d2b99"}, - {file = "watchdog-2.1.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b61acffaf5cd5d664af555c0850f9747cc5f2baf71e54bbac164c58398d6ca7b"}, - {file = "watchdog-2.1.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1e877c70245424b06c41ac258023ea4bd0c8e4ff15d7c1368f17cd0ae6e351dd"}, - {file = "watchdog-2.1.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d802d65262a560278cf1a65ef7cae4e2bc7ecfe19e5451349e4c67e23c9dc420"}, - {file = "watchdog-2.1.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b3750ee5399e6e9c69eae8b125092b871ee9e2fcbd657a92747aea28f9056a5c"}, - {file = "watchdog-2.1.7-py3-none-manylinux2014_aarch64.whl", hash = "sha256:ed6d9aad09a2a948572224663ab00f8975fae242aa540509737bb4507133fa2d"}, - {file = "watchdog-2.1.7-py3-none-manylinux2014_armv7l.whl", hash = "sha256:b26e13e8008dcaea6a909e91d39b629a39635d1a8a7239dd35327c74f4388601"}, - {file = "watchdog-2.1.7-py3-none-manylinux2014_i686.whl", hash = "sha256:0908bb50f6f7de54d5d31ec3da1654cb7287c6b87bce371954561e6de379d690"}, - {file = "watchdog-2.1.7-py3-none-manylinux2014_ppc64.whl", hash = "sha256:bdcbf75580bf4b960fb659bbccd00123d83119619195f42d721e002c1621602f"}, - {file = "watchdog-2.1.7-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:81a5861d0158a7e55fe149335fb2bbfa6f48cbcbd149b52dbe2cd9a544034bbd"}, - {file = "watchdog-2.1.7-py3-none-manylinux2014_s390x.whl", hash = "sha256:03b43d583df0f18782a0431b6e9e9965c5b3f7cf8ec36a00b930def67942c385"}, - {file = "watchdog-2.1.7-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ae934e34c11aa8296c18f70bf66ed60e9870fcdb4cc19129a04ca83ab23e7055"}, - {file = "watchdog-2.1.7-py3-none-win32.whl", hash = "sha256:49639865e3db4be032a96695c98ac09eed39bbb43fe876bb217da8f8101689a6"}, - {file = "watchdog-2.1.7-py3-none-win_amd64.whl", hash = "sha256:340b875aecf4b0e6672076a6f05cfce6686935559bb6d34cebedee04126a9566"}, - {file = "watchdog-2.1.7-py3-none-win_ia64.whl", hash = "sha256:351e09b6d9374d5bcb947e6ac47a608ec25b9d70583e9db00b2fcdb97b00b572"}, - {file = "watchdog-2.1.7.tar.gz", hash = "sha256:3fd47815353be9c44eebc94cc28fe26b2b0c5bd889dafc4a5a7cbdf924143480"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:676263bee67b165f16b05abc52acc7a94feac5b5ab2449b491f1a97638a79277"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:aa68d2d9a89d686fae99d28a6edf3b18595e78f5adf4f5c18fbfda549ac0f20c"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5e2e51c53666850c3ecffe9d265fc5d7351db644de17b15e9c685dd3cdcd6f97"}, + {file = "watchdog-2.1.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7721ac736170b191c50806f43357407138c6748e4eb3e69b071397f7f7aaeedd"}, + {file = "watchdog-2.1.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ce7376aed3da5fd777483fe5ebc8475a440c6d18f23998024f832134b2938e7b"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f9ee4c6bf3a1b2ed6be90a2d78f3f4bbd8105b6390c04a86eb48ed67bbfa0b0b"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68dbe75e0fa1ba4d73ab3f8e67b21770fbed0651d32ce515cd38919a26873266"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0c520009b8cce79099237d810aaa19bc920941c268578436b62013b2f0102320"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:efcc8cbc1b43902571b3dce7ef53003f5b97fe4f275fe0489565fc6e2ebe3314"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:746e4c197ec1083581bb1f64d07d1136accf03437badb5ff8fcb862565c193b2"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1ae17b6be788fb8e4d8753d8d599de948f0275a232416e16436363c682c6f850"}, + {file = "watchdog-2.1.8-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ddde157dc1447d8130cb5b8df102fad845916fe4335e3d3c3f44c16565becbb7"}, + {file = "watchdog-2.1.8-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4978db33fc0934c92013ee163a9db158ec216099b69fce5aec790aba704da412"}, + {file = "watchdog-2.1.8-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b962de4d7d92ff78fb2dbc6a0cb292a679dea879a0eb5568911484d56545b153"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1e5d0fdfaa265c29dc12621913a76ae99656cf7587d03950dfeb3595e5a26102"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_armv7l.whl", hash = "sha256:036ed15f7cd656351bf4e17244447be0a09a61aaa92014332d50719fc5973bc0"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_i686.whl", hash = "sha256:2962628a8777650703e8f6f2593065884c602df7bae95759b2df267bd89b2ef5"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64.whl", hash = "sha256:156ec3a94695ea68cfb83454b98754af6e276031ba1ae7ae724dc6bf8973b92a"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:47598fe6713fc1fee86b1ca85c9cbe77e9b72d002d6adeab9c3b608f8a5ead10"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_s390x.whl", hash = "sha256:fed4de6e45a4f16e4046ea00917b4fe1700b97244e5d114f594b4a1b9de6bed8"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:24dedcc3ce75e150f2a1d704661f6879764461a481ba15a57dc80543de46021c"}, + {file = "watchdog-2.1.8-py3-none-win32.whl", hash = "sha256:6ddf67bc9f413791072e3afb466e46cc72c6799ba73dea18439b412e8f2e3257"}, + {file = "watchdog-2.1.8-py3-none-win_amd64.whl", hash = "sha256:88ef3e8640ef0a64b7ad7394b0f23384f58ac19dd759da7eaa9bc04b2898943f"}, + {file = "watchdog-2.1.8-py3-none-win_ia64.whl", hash = "sha256:0fb60c7d31474b21acba54079ce9ff0136411183e9a591369417cddb1d7d00d7"}, + {file = "watchdog-2.1.8.tar.gz", hash = "sha256:6d03149126864abd32715d4e9267d2754cede25a69052901399356ad3bc5ecff"}, ] diff --git a/services/worker/poetry.lock b/services/worker/poetry.lock index f0e5881c57..dfee5b75db 100644 --- a/services/worker/poetry.lock +++ b/services/worker/poetry.lock @@ -282,7 +282,7 @@ beautifulsoup4 = "*" [[package]] name = "cachetools" -version = "5.0.0" +version = "5.1.0" description = "Extensible memoizing collections and decorators" category = "main" optional = false @@ -436,13 +436,13 @@ xxhash = "*" apache-beam = ["apache-beam (>=2.26.0)"] audio = ["librosa"] benchmarks = ["numpy (==1.18.5)", "tensorflow (==2.3.0)", "torch (==1.6.0)", "transformers (==3.0.2)"] -dev = ["absl-py", "pytest", "pytest-datadir", "pytest-xdist", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "aiobotocore", "boto3", "botocore", "faiss-cpu (>=1.6.4)", "fsspec", "moto[server,s3] (==2.0.4)", "rarfile (>=4.0)", "s3fs (==2021.08.1)", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "torch", "torchaudio", "soundfile", "transformers", "bs4", "conllu", "h5py", "langdetect", "lxml", "lz4", "mwparserfromhell", "nltk", "openpyxl", "py7zr", "tldextract", "zstandard", "bert-score (>=0.3.6)", "rouge-score", "sacrebleu", "scipy", "seqeval", "scikit-learn", "jiwer", "sentencepiece", "mauve-text", "toml (>=0.10.1)", "requests-file (>=1.5.1)", "tldextract (>=3.1.0)", "texttable (>=1.6.3)", "Werkzeug (>=1.0.1)", "six (>=1.15.0,<1.16.0)", "Pillow (>=6.2.1)", "librosa", "black (>=22.0,<23.0)", "flake8 (>=3.8.3)", "isort (>=5.0.0)", "pyyaml (>=5.3.1)", "importlib-resources"] +dev = ["absl-py", "pytest", "pytest-datadir", "pytest-xdist", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "aiobotocore", "boto3", "botocore", "faiss-cpu (>=1.6.4)", "fsspec", "moto[s3,server] (==2.0.4)", "rarfile (>=4.0)", "s3fs (==2021.08.1)", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "torch", "torchaudio", "soundfile", "transformers", "bs4", "conllu", "h5py", "langdetect", "lxml", "lz4", "mwparserfromhell", "nltk", "openpyxl", "py7zr", "tldextract", "zstandard", "bert-score (>=0.3.6)", "rouge-score", "sacrebleu", "scipy", "seqeval", "scikit-learn", "jiwer", "sentencepiece", "mauve-text", "toml (>=0.10.1)", "requests-file (>=1.5.1)", "tldextract (>=3.1.0)", "texttable (>=1.6.3)", "Werkzeug (>=1.0.1)", "six (>=1.15.0,<1.16.0)", "Pillow (>=6.2.1)", "librosa", "black (>=22.0,<23.0)", "flake8 (>=3.8.3)", "isort (>=5.0.0)", "pyyaml (>=5.3.1)", "importlib-resources"] docs = ["s3fs"] quality = ["black (>=22.0,<23.0)", "flake8 (>=3.8.3)", "isort (>=5.0.0)", "pyyaml (>=5.3.1)"] s3 = ["fsspec", "boto3", "botocore", "s3fs"] tensorflow = ["tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)"] tensorflow_gpu = ["tensorflow-gpu (>=2.2.0,!=2.6.0,!=2.6.1)"] -tests = ["absl-py", "pytest", "pytest-datadir", "pytest-xdist", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "aiobotocore", "boto3", "botocore", "faiss-cpu (>=1.6.4)", "fsspec", "moto[server,s3] (==2.0.4)", "rarfile (>=4.0)", "s3fs (==2021.08.1)", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "torch", "torchaudio", "soundfile", "transformers", "bs4", "conllu", "h5py", "langdetect", "lxml", "lz4", "mwparserfromhell", "nltk", "openpyxl", "py7zr", "tldextract", "zstandard", "bert-score (>=0.3.6)", "rouge-score", "sacrebleu", "scipy", "seqeval", "scikit-learn", "jiwer", "sentencepiece", "mauve-text", "toml (>=0.10.1)", "requests-file (>=1.5.1)", "tldextract (>=3.1.0)", "texttable (>=1.6.3)", "Werkzeug (>=1.0.1)", "six (>=1.15.0,<1.16.0)", "Pillow (>=6.2.1)", "librosa", "importlib-resources"] +tests = ["absl-py", "pytest", "pytest-datadir", "pytest-xdist", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "aiobotocore", "boto3", "botocore", "faiss-cpu (>=1.6.4)", "fsspec", "moto[s3,server] (==2.0.4)", "rarfile (>=4.0)", "s3fs (==2021.08.1)", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "torch", "torchaudio", "soundfile", "transformers", "bs4", "conllu", "h5py", "langdetect", "lxml", "lz4", "mwparserfromhell", "nltk", "openpyxl", "py7zr", "tldextract", "zstandard", "bert-score (>=0.3.6)", "rouge-score", "sacrebleu", "scipy", "seqeval", "scikit-learn", "jiwer", "sentencepiece", "mauve-text", "toml (>=0.10.1)", "requests-file (>=1.5.1)", "tldextract (>=3.1.0)", "texttable (>=1.6.3)", "Werkzeug (>=1.0.1)", "six (>=1.15.0,<1.16.0)", "Pillow (>=6.2.1)", "librosa", "importlib-resources"] torch = ["torch"] vision = ["Pillow (>=6.2.1)"] @@ -1587,7 +1587,7 @@ pyasn1 = ">=0.4.6,<0.5.0" [[package]] name = "pybcj" -version = "0.5.2" +version = "0.5.3" description = "bcj filter library" category = "main" optional = false @@ -2309,7 +2309,7 @@ telegram = ["requests"] [[package]] name = "transformers" -version = "4.19.0" +version = "4.19.1" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" category = "main" optional = false @@ -2826,8 +2826,8 @@ bs4 = [ {file = "bs4-0.0.1.tar.gz", hash = "sha256:36ecea1fd7cc5c0c6e4a1ff075df26d50da647b75376626cc186e2212886dd3a"}, ] cachetools = [ - {file = "cachetools-5.0.0-py3-none-any.whl", hash = "sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4"}, - {file = "cachetools-5.0.0.tar.gz", hash = "sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6"}, + {file = "cachetools-5.1.0-py3-none-any.whl", hash = "sha256:4ebbd38701cdfd3603d1f751d851ed248ab4570929f2d8a7ce69e30c420b141c"}, + {file = "cachetools-5.1.0.tar.gz", hash = "sha256:8b3b8fa53f564762e5b221e9896798951e7f915513abf2ba072ce0f07f3f5a98"}, ] cbor = [ {file = "cbor-1.0.0.tar.gz", hash = "sha256:13225a262ddf5615cbd9fd55a76a0d53069d18b07d2e9f19c39e6acb8609bbb6"}, @@ -3906,55 +3906,55 @@ pyasn1-modules = [ {file = "pyasn1_modules-0.2.8-py3.7.egg", hash = "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd"}, ] pybcj = [ - {file = "pybcj-0.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67861cdb71800039ebc366d016b54476fb128e621a7b11d2cd36e541cd0c2559"}, - {file = "pybcj-0.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61d33a15ad7ed19a874d74132e22bae53cd617229f6e7b95db84e8f2bdf7b182"}, - {file = "pybcj-0.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92240ca2c8d644874574e3aa3a7d450949781859f34418dc2521f4bb57c842bf"}, - {file = "pybcj-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:424a7e4ea42d01023ed33be5e71da17b05f32412c712c02e9a305417963dc834"}, - {file = "pybcj-0.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d188e2227f6a9342a36e257a7bc7c88dc6a00f5bcbd077aa0085d78d0f685c3a"}, - {file = "pybcj-0.5.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7a5bf9fd3e8660c02f28288d911fcec2ef247327607ec40f342b069622a2c54a"}, - {file = "pybcj-0.5.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0fe2d856fa34829a1ae8af6f6acedb3fba1eb3930c65ac30e1a89a1d78d8674a"}, - {file = "pybcj-0.5.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5e135dfd650376c93b545ac77811d052d5a5b9fd8d3f8ee35a4aecbd43f5abc"}, - {file = "pybcj-0.5.2-cp310-cp310-win32.whl", hash = "sha256:fe0e7776224ed4d9788d333ed98c1cb40deb94a9e61bf8813112a344ba98f8e9"}, - {file = "pybcj-0.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:b6536ba970327ade1c3c55f8307e8489ecd0bdba76c5c5e5c438ed7871e64edb"}, - {file = "pybcj-0.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f8fb59f18ef4117b85a04d792df9078cfebd379e50b7f394f34a2d04e46133fd"}, - {file = "pybcj-0.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c8dd7df870229d56fb8414f9a1a56352305e08f5df7368d75371ca384302c19"}, - {file = "pybcj-0.5.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b179196688af94fc0773c8d14581dac3dba9436103ece63ce1de20eb341e345"}, - {file = "pybcj-0.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60700c9d4845be341a3103a72c8218929a591d94133f336a0ecc1280c0bc6234"}, - {file = "pybcj-0.5.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f5df6605465a367147982313e04119e9fc253b7fc1d9273e53f1d9b7b2d4cd51"}, - {file = "pybcj-0.5.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:ac3b84d7f7ebc0c6da27d7849e9a1bd6587ca6d4daf02cd1527ec7d88abbcb5d"}, - {file = "pybcj-0.5.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d13962f2299142588adb3ca1b12f55c242cd7bbb340394df328cc8f6950138e0"}, - {file = "pybcj-0.5.2-cp36-cp36m-win32.whl", hash = "sha256:2adb0e3eee8681def2194049a0ce6329f75c26d6b4a427974b5e5a8b0488cbd5"}, - {file = "pybcj-0.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:5713fcd4e179293298e5f96d8fff64e98809da40695e49e1b701f6a1dcbaa591"}, - {file = "pybcj-0.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:218419aaed1b1d50e15bdb7f0b550a36e9189173f7742038f2154d5941244241"}, - {file = "pybcj-0.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cba878c1f5fe5f0471c09f1a86b078d09e8417ca7ad9de3620834c681b72fa3"}, - {file = "pybcj-0.5.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b8e4de6431adbe9bdca15c25cf91eb54762cb752711eccc4e38697ef934cbdc"}, - {file = "pybcj-0.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7f11060fdd17bdee85353190b409e52c05103fe5c9f8c3fce99c25dfe83e37a7"}, - {file = "pybcj-0.5.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a7b11b54f18be3595fbba0527c4d8c0bb011e88b19e2b58f70c7ca2b0a2bd887"}, - {file = "pybcj-0.5.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:efa84e11e1b8b54e619b723ea315a23d8bdba9bcad7ae9dd4adf17d1297fa9c1"}, - {file = "pybcj-0.5.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2a9c2709c1f92629b9d27fdf34a564c4e21dcada636b2076f954e2f10ff858f"}, - {file = "pybcj-0.5.2-cp37-cp37m-win32.whl", hash = "sha256:e0e106c1d1b62552bf83408bb7c0e12381b34010caa95bff868b49cabfc24fe8"}, - {file = "pybcj-0.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:3ec38a47d0cc121be94c8b216b99a5c4537aa2c56a6a35aba510ef589f0007ee"}, - {file = "pybcj-0.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:910a7f9e3173cd2771b76024dc343c6bce3b8c3098c0eafd21265e7446c59651"}, - {file = "pybcj-0.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5ab403117555993041f647580e2ad07e3df13701b4cd64a106926a83096960df"}, - {file = "pybcj-0.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22caeb5f04b30b6350a57442de68afef825271ce30d8f0b949db810c8c988840"}, - {file = "pybcj-0.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7acde470fe841c8d3368e468f1693cd6085ad48b34bfa7ed4446594b49f1d405"}, - {file = "pybcj-0.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c25f511e2a3cfcd84f34bd99044a1462b569aced46c7a27316a9ab4608dd3ae7"}, - {file = "pybcj-0.5.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b16b897cd385c70756519fbc0f438e97565ef4828a8cbac51e73764c3777fb11"}, - {file = "pybcj-0.5.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dad2c6a679781bdc5ea6f3726a0fa789b7e9e1fe619c3cb17cfd18d9ddfc356d"}, - {file = "pybcj-0.5.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45390756238d42da93ee1acc5d1f340e693f4f2802538f11df46340c81362904"}, - {file = "pybcj-0.5.2-cp38-cp38-win32.whl", hash = "sha256:7b5c1d91928e7b8a14ae333d71c08695f774c0c7bf3c6be419a5f54eaf0b4a15"}, - {file = "pybcj-0.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:b43649973504ed7b97be806b6f5a9c258800cf2258cb8102f9bae7c0cf500efc"}, - {file = "pybcj-0.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3662886d0356aa9d249fe19aa7ef4d94c91769b14f721732bcf8509e751bddb3"}, - {file = "pybcj-0.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c0ff95af452a586cc4284742fc4de320f687c71015a7e528438330e2f223af8"}, - {file = "pybcj-0.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e70f9d92996fc85c71bfa0f047309d61c0f0fa0f325bda2e1a77e1ff88f9525b"}, - {file = "pybcj-0.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d62bf3169931d08bc1fc01e43ce9f2ca9b4e9c992f50798d2dc2524173d0cf"}, - {file = "pybcj-0.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:df3c1ec9172b922daefb883d834b1b04c0f579f421d68b7ed636b631ae245f5c"}, - {file = "pybcj-0.5.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ba2959b880215b9c6d85af564dd9f641bba601b3b0766b0dde2f7a6c80c87dd"}, - {file = "pybcj-0.5.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:975e16621b7212dde733325a5f6e65484952ba73d06d0d1f06d0d615a384461f"}, - {file = "pybcj-0.5.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9e7f11a3cfaae42d55dbf8d7fdb748b06009245800b11b193b3c77159fe1d617"}, - {file = "pybcj-0.5.2-cp39-cp39-win32.whl", hash = "sha256:dbefdbaa9b9fcbbb9f34f2774a053f4d2e432a8e01f69fe144d26d545988d47a"}, - {file = "pybcj-0.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:43ec631b48ff92820efdf4e3a0d84d439847b0aaa48bff1f9cce09ac2b032773"}, - {file = "pybcj-0.5.2.tar.gz", hash = "sha256:050e7bf780b82b0c6ba4368c4a78953a1cf5922cef50e8b251fb8b87f0483ad7"}, + {file = "pybcj-0.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376aba216760730938fb418908f389e46fd85212c238f2dd5c7d1ddd6f9f70b6"}, + {file = "pybcj-0.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d83a73768cdfaf7f92ef4dbb8510ad82b9dbf70f4ddaa2763ca4deb7a7d53fd6"}, + {file = "pybcj-0.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e45f50b9606d00ea2e6ce767765956d2415f93eb52165a399e3c85ae60b224"}, + {file = "pybcj-0.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ef6dfd79092899d28f7309844dbd1de79804567ecd8b6d7d5812c897d32657d"}, + {file = "pybcj-0.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6e1bcfa82fa80198fa70a728e43667f1bf45f4b31e959c01b7f170a4c965d4f0"}, + {file = "pybcj-0.5.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a69aa3a7bfb2d8b535e2721917c9be93a4b2985e3735a4209b21a275bd1af15"}, + {file = "pybcj-0.5.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d22906d17c05a6b215c30d6739e3e9039a08e0e47bf4bdfde9638b2a2a38fa04"}, + {file = "pybcj-0.5.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b0415d851bac0a8a59b07589870d39174f70e1a1211e7b15b1254593eaf04d93"}, + {file = "pybcj-0.5.3-cp310-cp310-win32.whl", hash = "sha256:8888381e88e53ac269b595e1880820381b4e5604181978dd7fe00ccec75fe008"}, + {file = "pybcj-0.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:3f691ac916ba7604895a6b80db2183c00177144ae79cb1919943c9b2433acf53"}, + {file = "pybcj-0.5.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1439ac72de5f3f37692f5a67f25c6aa655e4f912d251563ca21405e9357e17e2"}, + {file = "pybcj-0.5.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d24861d4fc6c3c85c0537ab1181e497b5f1b0790016c8c94fb2cdeb7a9ab9542"}, + {file = "pybcj-0.5.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ae358ace2df9b6c30c49c28f7e94ec912c33b4da9e906dc47a97b9ba6799b94"}, + {file = "pybcj-0.5.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a0955e42434fbeda2fa029d4301c2ccace203e68a7a784191d73d2d5d97f1eb7"}, + {file = "pybcj-0.5.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e284ba2c0a45117fdead695d30d559422812b559a67cd45398af96506e47530d"}, + {file = "pybcj-0.5.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cb92bb70466240739648c4bf8ca088a890902b515081bd9767be5f814cfaf99e"}, + {file = "pybcj-0.5.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7f436db34f3e870f502b718ef4fe2bda2492f9f124bccef3d5551267687f4270"}, + {file = "pybcj-0.5.3-cp36-cp36m-win32.whl", hash = "sha256:fda6fc500de3edda6c07ca740c24bfc4aa956154161bc9665e715819d255c153"}, + {file = "pybcj-0.5.3-cp36-cp36m-win_amd64.whl", hash = "sha256:d0ab15077d9997a6551574ddc4c16e713e9ea24d0bef27278592545339f2ae79"}, + {file = "pybcj-0.5.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3c7e6560e55de09918a57820044071b5f85bb3c64a59d449d2742aa1fbe3c173"}, + {file = "pybcj-0.5.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11290676f0940debe2f05f851c35c72b2fb457a4d578303a4a7b75fe1195cb06"}, + {file = "pybcj-0.5.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e5d4410e81d46de0220fcaec7d47fd5aa2c54de8bb6401783b977dfc69eab3e"}, + {file = "pybcj-0.5.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:825e4c02383eb320fdfc5780bf81c9ca89cc5612afd8253304d62a4141223c71"}, + {file = "pybcj-0.5.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b4816641cd3c1c246649daaea079457a65526d961f8458460d9ebb5b7567f2f3"}, + {file = "pybcj-0.5.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2f0854fb87ea066fbf41a0e212bb6ef906ac8cf2e8991ca1bf8f757d14859944"}, + {file = "pybcj-0.5.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b7be3c42599d00e407377d79ad745fc994dbb6d984aee5db650cb2fd62789355"}, + {file = "pybcj-0.5.3-cp37-cp37m-win32.whl", hash = "sha256:28ba109b889f2ac9db36b4b43b8ac24e3b58ff5e70dec6368d739a78a77dbb67"}, + {file = "pybcj-0.5.3-cp37-cp37m-win_amd64.whl", hash = "sha256:92098fe0e47a5dade7e47423241e7d51a4094d9119c5d868f00e8de535a76b09"}, + {file = "pybcj-0.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2284a3fcbf0aa0c7e05765d8578e61a6ff148a3dc2c786494381f4c9b597d716"}, + {file = "pybcj-0.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f4bb5a50f9f2361ce60e1efa8059a2ea016f544db4cdcbeb7a00e5db4409910e"}, + {file = "pybcj-0.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a45d0043575371312b98f7788b28ad7dd8feeb763b723c7fe1081ec154149b6a"}, + {file = "pybcj-0.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f4b36ca9eab443eb66e8974c482da1fc7f43243a169c6865b64cc37e5389cb"}, + {file = "pybcj-0.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:19a8a1402c01382388442526a61b5bbfca167111d6292146d3beba34862cb597"}, + {file = "pybcj-0.5.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a82490a16a350b416bfae2b3cb284ccccb4b6016f32d2df615523510515813f1"}, + {file = "pybcj-0.5.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:77cacb01c7aada4b0ca6a419663c150825bc97a77c6284bbc515830be324c34e"}, + {file = "pybcj-0.5.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a3b50ae2a58ea7d1743f76e91d8bc6e6198d018d75a99eee7cd5e4b2c0eba269"}, + {file = "pybcj-0.5.3-cp38-cp38-win32.whl", hash = "sha256:47c1335af7de29dfbcd0673880f2e0841bf05e38131129231cb6d7e5777aefe3"}, + {file = "pybcj-0.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:8687345228fcaf4677ea67d0d21e52dfab7a2c34e68f5497187d56e782f4848f"}, + {file = "pybcj-0.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:31463f1b7648c95d5a5533c40a8a674d98cc30a592b3d0232f689c3b1a0fc664"}, + {file = "pybcj-0.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c850ee822a999f1fb52853914bb6556035ef72f3a2b41f0b612fc89502de190"}, + {file = "pybcj-0.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cae03af56037571c632d643cfc7183fc7d4cc9b8e92f6832f408c1b8ae47795"}, + {file = "pybcj-0.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba2bfde2d9c0c8e00b01a657eeeaac5e655ecf8781fc16db5ac6707e8a5e7f6d"}, + {file = "pybcj-0.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f1902785505cb65ac6b4eeb5b0aa5fc8f00aaf48fe53c9162822cc2dacc2f701"}, + {file = "pybcj-0.5.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9c54d4daeb6bc3ecc3de8fc3520beb885a1735a62bc93b6f5feb2545e91716f7"}, + {file = "pybcj-0.5.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0064f27e4df12cde50543ac2836c6fc319aa713739ed73ecd941d6ed059bf1ca"}, + {file = "pybcj-0.5.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9c20954dfe8392278f52adf9e3913af45bac28ef713d4096d797b2516d66d2e0"}, + {file = "pybcj-0.5.3-cp39-cp39-win32.whl", hash = "sha256:3460b9f926ac4cb68ffbd5b10fe18698d9b5a96f0ffe8943997c86b2ef61c0e1"}, + {file = "pybcj-0.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:bfccdc3c6072a95ecac21a0ff61d726bbfd54bd78601442590d9595d62d06cd4"}, + {file = "pybcj-0.5.3.tar.gz", hash = "sha256:14839501653ffea75668ab50ceea1df576d3a83f0587cdeaab56a423c8b1b097"}, ] pycodestyle = [ {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, @@ -4744,8 +4744,8 @@ tqdm = [ {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, ] transformers = [ - {file = "transformers-4.19.0-py3-none-any.whl", hash = "sha256:6bde2ddaa63608791eebd0ffbf475569c2299ff899daf7d5355ee0e777246c44"}, - {file = "transformers-4.19.0.tar.gz", hash = "sha256:2f549895e6c4da52fc4cd37dd48839374158eca2bc8625469ba2789a8d78f0d5"}, + {file = "transformers-4.19.1-py3-none-any.whl", hash = "sha256:16d3dd257d459c2598e2548a9e6875c10b7db5e44494d93b3c0a5c60afad667f"}, + {file = "transformers-4.19.1.tar.gz", hash = "sha256:6fb30ee534a25b6b3fc7064c280b7f44abf8c9bd1fb358860ebe4fd392bf15f5"}, ] trec-car-tools = [] tree-sitter = [