diff --git a/capstone/Dockerfile b/capstone/Dockerfile index f0450e7bb..04118e574 100644 --- a/capstone/Dockerfile +++ b/capstone/Dockerfile @@ -1,8 +1,8 @@ -FROM python:3.7-buster +FROM python:3.11.9-bookworm ENV PYTHONUNBUFFERED 1 # Enable apt-get -t buster-backports -RUN echo 'deb http://deb.debian.org/debian buster-backports main' > /etc/apt/sources.list.d/backports.list +#RUN echo 'deb http://deb.debian.org/debian buster-backports main' > /etc/apt/sources.list.d/backports.list # Get build dependencies and packages required by the app # FIRST LINE: @@ -22,9 +22,9 @@ RUN echo 'deb http://deb.debian.org/debian buster-backports main' > /etc/apt/sou # htmltidy for fastcase ingest RUN apt-get update \ && apt-get install -y redis-server postgresql-client libtiff-tools pdftk \ - && apt-get install -y librocksdb5.17 librocksdb-dev libsnappy-dev zlib1g-dev libbz2-dev libgflags-dev liblz4-dev rocksdb-tools \ + && apt-get install -y librocksdb7.8 librocksdb-dev libsnappy-dev zlib1g-dev libbz2-dev libgflags-dev liblz4-dev rocksdb-tools \ && apt-get install -y libx11-xcb1 libxtst6 libgtk-3-0 libnss3 \ - && echo libhyperscan5 libhyperscan/cpu-ssse3 boolean true | debconf-set-selections && apt-get -t buster-backports install -y libhyperscan-dev \ + && echo libhyperscan5 libhyperscan/cpu-ssse3 boolean true | debconf-set-selections && apt-get install -y libhyperscan-dev \ && apt-get install -y tidy \ && apt-get install -y libdrm2 libgbm-dev \ && apt-get install --no-install-recommends libdbus-glib-1-2 @@ -33,7 +33,7 @@ RUN apt-get update \ RUN mkdir /app WORKDIR /app COPY requirements.txt /app -RUN pip install pip==21.3.1 \ +RUN pip install pip==24.0 \ && pip install -r requirements.txt --src /usr/local/src \ && rm requirements.txt @@ -44,9 +44,8 @@ RUN echo "--modules-folder /node_modules" > /.yarnrc COPY package.json /app COPY yarn.lock /app # pin node version -- see https://github.com/nodesource/distributions/issues/33 -RUN curl -o nodejs.deb https://deb.nodesource.com/node_14.x/pool/main/n/nodejs/nodejs_14.21.3-1nodesource1_amd64.deb \ - && dpkg -i ./nodejs.deb \ - && rm nodejs.deb \ +RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ + && apt-get install -y nodejs=20.12.0-1nodesource1 \ && npm install -g yarn@1.22.5 \ && yarn install --frozen-lockfile \ && rm package.json \ diff --git a/capstone/capapi/api_urls.py b/capstone/capapi/api_urls.py index 3c9a32865..d7a7be26b 100644 --- a/capstone/capapi/api_urls.py +++ b/capstone/capapi/api_urls.py @@ -1,9 +1,7 @@ from django.conf import settings from django.urls import path, re_path, include from django.views.generic import RedirectView, TemplateView -from rest_framework import routers, permissions -from drf_yasg.views import get_schema_view -from drf_yasg import openapi +from rest_framework import routers from capapi.views import api_views @@ -27,32 +25,12 @@ def get(self, request, *args, **kwargs): return super().get(request, *args, **kwargs) router.APIRootView = FilteredAPIRootView - -schema_view = get_schema_view( - openapi.Info( - title="CAP API", - default_version='v1', - description="United States Caselaw", - terms_of_service="https://%s/terms" % settings.PARENT_HOST, - contact=openapi.Contact(url="https://%s/contact" % settings.PARENT_HOST), - ), - urlconf='capapi.api_urls', - validators=['flex', 'ssv'], - public=True, - permission_classes=(permissions.AllowAny,), -) - urlpatterns = [ path('v1/', include(router.urls)), path('unstable/', include(unstable_router.urls)), # convenience pattern: catch all citations, redirect in CaseDocumentViewSet's retrieve re_path(r'^v1/cases/(?P[0-9A-Za-z\s\.]+)/$', api_views.CaseDocumentViewSet.as_view({'get': 'retrieve'}), name='case-get-cite'), - ### Swagger/OpenAPI/ReDoc ### - re_path(r'^swagger(?P\.json|\.yaml)$', schema_view.without_ui(cache_timeout=None), name='schema-json'), - re_path(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=None), name='schema-swagger-ui'), - re_path(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=None), name='schema-redoc'), - path('robots.txt', TemplateView.as_view(template_name='robots_api.txt', content_type='text/plain'), name='robots_api'), path('', RedirectView.as_view(url='/v1/', permanent=False), name='api-root') ] diff --git a/capstone/capapi/tests/test_api.py b/capstone/capapi/tests/test_api.py index ac2ce260c..72d4b2655 100644 --- a/capstone/capapi/tests/test_api.py +++ b/capstone/capapi/tests/test_api.py @@ -1,7 +1,6 @@ from csv import DictReader from io import StringIO -from flaky import flaky from rest_framework.request import Request from rest_framework.test import APIRequestFactory @@ -583,10 +582,8 @@ def test_filter_reporter(client, reporter): # NGRAMS -@flaky(max_runs=10) # ngrammed_cases call to ngram_jurisdictions doesn't reliably work because it uses multiprocessing within pytest environment @pytest.mark.django_db(databases=['capdb']) -def test_ngrams_api(client, request): - ngrammed_cases = request.getfixturevalue('ngrammed_cases') # load fixture inside test so flaky() can catch errors +def test_ngrams_api(client, ngrammed_cases): # check result counts when not filtering by jurisdiction json = client.get(api_reverse('ngrams-list'), {'q': 'one two'}).json() @@ -600,31 +597,6 @@ def test_ngrams_api(client, request): 'one two': { 'jur1': [{'year': '2000', 'count': [1, 6], 'doc_count': [1, 2]}]}} - # check wildcard match - json = client.get(api_reverse('ngrams-list'), {'q': 'three *'}).json() - assert json['results'] == { - 'three four': { - 'total': [{'year': '2000', 'count': [1, 9], 'doc_count': [1, 3]}]}, - "three don't": { - 'total': [{'year': '2000', 'count': [2, 9], 'doc_count': [2, 3]}]}} - - -# API SPECIFICATION ENDPOINTS -@pytest.mark.django_db(databases=['capdb']) -@pytest.mark.parametrize("url, content_type", [ - (api_reverse("schema-swagger-ui"), 'text/html'), - (api_reverse("schema-json", args=['.json']), 'application/json'), - (api_reverse("schema-json", args=['.yaml']), 'application/yaml'), -]) -def test_swagger(client, url, content_type): - response = client.get(url) - check_response(response, content_type=content_type) - - -def test_redoc(client): - response = client.get(api_reverse("schema-redoc")) - check_response(response, content_type="text/html") - # PAGINATION @pytest.mark.django_db(databases=['capdb']) diff --git a/capstone/capapi/views/api_views.py b/capstone/capapi/views/api_views.py index 754341dfd..9777662c8 100644 --- a/capstone/capapi/views/api_views.py +++ b/capstone/capapi/views/api_views.py @@ -1,9 +1,6 @@ -import bisect import urllib import re from datetime import datetime -from collections import defaultdict -from pathlib import Path from django.utils.functional import partition from django_filters.utils import translate_validation @@ -25,7 +22,6 @@ from capapi.resources import api_request from capdb import models from capdb.models import CaseMetadata -from capdb.storages import ngram_kv_store_ro from capweb.helpers import cache_func from scripts.helpers import alphanum_lower from user_data.models import UserHistory @@ -232,10 +228,11 @@ class CaseDocumentViewSet(BaseDocumentViewSet): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.valid_query_fields = [ - *[field.name for backend in self.query_filter_backends - for field in backend().get_schema_fields(self)], - *[backend.search_param for backend in self.query_filter_backends - if hasattr(backend, 'search_param')] + # get_schema_fields() doesn't work in python 3.11, so this would need another approach if we want it: + # *[field.name for backend in self.query_filter_backends + # for field in backend().get_schema_fields(self)], + # *[backend.search_param for backend in self.query_filter_backends + # if hasattr(backend, 'search_param')] ] def is_full_case_request(self): @@ -414,27 +411,6 @@ def __init__(self, *args, **kwargs): self.jurisdiction_id_to_slug = dict(models.Jurisdiction.objects.values_list('pk', 'slug')) self.jurisdiction_id_to_slug[None] = 'total' self.jurisdiction_slug_to_id = {v:k for k,v in self.jurisdiction_id_to_slug.items()} - self.totals_by_jurisdiction_year_length = self.load_totals() - - @staticmethod - def load_totals(): - # populate self.totals_by_jurisdiction_year_length, a mapping of jurisdiction-year-length to counts, like: - # { - # (, , ): (, ), - # } - if not Path(ngram_kv_store_ro.db_path()).exists(): - return {} - totals_by_jurisdiction_year_length = defaultdict(lambda: [0,0]) - for k, v in ngram_kv_store_ro.get_prefix(b'totals', packed=True): - jur, year, n = ngram_kv_store_ro.unpack(k[len(b'totals'):]) - totals_by_jurisdiction_year_length[(jur, year, n)] = v - for total in ( - totals_by_jurisdiction_year_length[(None, year, n)], - totals_by_jurisdiction_year_length[(None, None, n)] - ): - total[0] += v[0] - total[1] += v[1] - return totals_by_jurisdiction_year_length @staticmethod def query_params_are_filters(query_body): @@ -455,27 +431,6 @@ def query_params_are_filters(query_body): return True - - def get_query_data_from_api_query(self, q): - # given an `api(...)` query, return a structured list of filters and aggregations - # validate whether a case ID exists in the corpus - # check if the supplied item is a valid case id - if not q or not (q.startswith('api(') and q.endswith(')')): - return False - - query_body = None - try: - query_body = QueryDict(q[4:-1], mutable=True) - except Exception: - raise ValidationError({'error': 'Query is not in a URL parameter format.'}) - - self.query_params_are_filters(query_body) - - query_body['page_size'] = 1 - query_body['facet'] = 'decision_date' - - return query_body - @staticmethod def create_timeline_entries(bucket_entries, total_dict, jurisdiction): # generate timeline datapoint given an elasticsearch query result @@ -561,117 +516,24 @@ def list(self, request, *args, **kwargs): if not q: return Response({}) - # check if we're querying for a case as opposed to a word - # default to keyword search if value is empty - api_query_body = self.get_query_data_from_api_query(q) - - # prepend word count as first byte. only applicable for n-grams - words = q.lower().split(' ')[:3] # use first 3 words - q_len = len(words) - q_sig = bytes([q_len]) + ' '.join(words).encode('utf8') - - if api_query_body: - try: - results = self.get_citation_data(request, api_query_body, q) - except filters.TooManyJoinedResultsException: - raise ValidationError({'error': 'The set of cases to cite to is too large. Consider \ - narrowing this group to contain less than 20000 cases.'}) - pairs = [] - elif q_sig.endswith(b' *'): - results = {} - # wildcard search - pairs = ngram_kv_store_ro.get_prefix(q_sig[:-1], packed=True) - else: - results = {} - # non-wildcard search - value = ngram_kv_store_ro.get(q_sig, packed=True) - if value: - pairs = [(q_sig, value)] - else: - pairs = [] - - ## format results - if pairs: - # prepare jurisdiction_filter from jurisdiction= query param - jurisdictions = request.GET.getlist('jurisdiction') - if '*' in jurisdictions: - jurisdiction_filter = None - else: - jurisdiction_filter = set(self.jurisdiction_slug_to_id[j] for j in jurisdictions if j in self.jurisdiction_slug_to_id) - if not jurisdiction_filter: - jurisdiction_filter.add(None) - - # prepare year_filter from year= query param - year_filter = set() - for year in request.GET.getlist('year'): - if year.isdigit(): - year_filter.add(int(year)) - - # get top 10 pairs - top_pairs = [] - for gram, data in pairs: - total_jur = data[None] - sort_count = total_jur[None][0] - bisect.insort_right(top_pairs, (sort_count, gram, data)) - top_pairs = top_pairs[-10:] - - # Reformat stored gram data for delivery. - # top_pairs will look like: - # [ - # (, b'', { - # : [ - # , , , - # , , , ... - # ]), - # ] - # this reformats to: - # { - # : [ - # { - # 'year': , - # 'count': [, ], - # 'doc_count': [, ], - # } - # ] - # } - for _, gram, data in reversed(top_pairs): - out = {} - for jur_id, years in data.items(): - - # apply jurisdiction_filter - if jurisdiction_filter and jur_id not in jurisdiction_filter: - continue - - years_out = [] - jur_slug = self.jurisdiction_id_to_slug[jur_id] - if jur_id is None: - years = [i for k, v in years.items() for i in [k]+v] - for i in range(0, len(years), 3): - year, count, doc_count = years[i:i+3] - - # filter out total - if year is None: - continue - - # years will be -1900 for msgpack compression -- add 1900 back in - year += 1900 - - # apply year filter - if year_filter and year not in year_filter: - continue - - totals = self.totals_by_jurisdiction_year_length[(jur_id, year, q_len)] - years_out.append({ - "year": str(year) if year else "total", - "count": [count, totals[0]], - "doc_count": [doc_count, totals[1]] - }) - - years_out.sort(key=lambda y: y["year"]) - out[jur_slug] = years_out - - if out: - results[gram[1:].decode('utf8')] = out + if q.startswith('api(') and q.endswith(')'): + q = q[4:-1] + + try: + api_query_body = QueryDict(q, mutable=True) + except Exception: + raise ValidationError({'error': 'Query is not in a URL parameter format.'}) + + self.query_params_are_filters(api_query_body) + + api_query_body['page_size'] = 1 + api_query_body['facet'] = 'decision_date' + + try: + results = self.get_citation_data(request, api_query_body, q) + except filters.TooManyJoinedResultsException: + raise ValidationError({'error': 'The set of cases to cite to is too large. Consider \ + narrowing this group to contain less than 20000 cases.'}) paginated = { "count": len(results), diff --git a/capstone/capdb/management/commands/run_celery_worker.py b/capstone/capdb/management/commands/run_celery_worker.py index 52df3eaf7..d93cc91d2 100644 --- a/capstone/capdb/management/commands/run_celery_worker.py +++ b/capstone/capdb/management/commands/run_celery_worker.py @@ -6,7 +6,7 @@ # Create a command to autoreload celery beat for elasticsearch indexing def autoreload_celery(*args, **kwargs): - celery_worker_cmd = "celery worker -A config.celery.app -c 1 -B --uid=nobody --gid=nogroup" + celery_worker_cmd = "celery -A config.celery.app -c 1 -B --uid=nobody --gid=nogroup worker" print("Kill lingering celery worker...") subprocess.run(shlex.split(f'pkill -f "{celery_worker_cmd}"')) print("Start celery worker...") diff --git a/capstone/capdb/storages.py b/capstone/capdb/storages.py index 85f80c2c5..8f575d72b 100644 --- a/capstone/capdb/storages.py +++ b/capstone/capdb/storages.py @@ -2,17 +2,13 @@ import gzip import hashlib import shutil -import traceback import types -from contextlib import contextmanager -import msgpack import os import itertools from pathlib import Path import redis -import rocksdb from django.conf import settings from django.core.files import File @@ -20,7 +16,6 @@ from django.utils.deconstruct import deconstructible from django.utils.functional import SimpleLazyObject from pipeline.storage import PipelineMixin -from rocksdb.interfaces import MergeOperator from storages.backends.s3boto3 import S3Boto3Storage from whitenoise.storage import CompressedManifestStaticFilesStorage @@ -404,169 +399,6 @@ def get_storage(storage_name): redis_ingest_client = SimpleLazyObject(lambda: redis.Redis(host=settings.REDIS_HOST, port=settings.REDIS_PORT, db=settings.REDIS_INGEST_DB)) -### K/V stores ### - -class KVDB: - """ Base key-value store wrapper. """ - def __init__(self, path=settings.STORAGES['ngram_storage']['kwargs']['location'], name=None, read_only=False): - self.path = path - self.read_only = read_only - if name: - self.name = name - - @staticmethod - def unpack(v, packed=True): - return msgpack.unpackb(v) if packed and v is not None else v - - @staticmethod - def pack(v, packed=True): - return msgpack.packb(v) if packed and v is not None else v - - def open(self): - raise NotImplementedError - - _db = None - @property - def db(self): - """ Open database connection on first use. """ - if not self._db: - self.open() - return self._db - - -class NgramRocksDB(KVDB): - """ Wrapper for RocksDB. """ - name = 'rocksdb' - batch = None - - ## helpers - - def db_path(self): - return os.path.join(self.path, self.name+".db") - - def open(self): - # initial "production ready" settings via https://python-rocksdb.readthedocs.io/en/latest/tutorial/index.html - opts = rocksdb.Options() - opts.create_if_missing = True - opts.max_open_files = 300000 - opts.write_buffer_size = 64 * 2**20 # 64MB - opts.max_write_buffer_number = 3 - opts.target_file_size_base = 64 * 2**20 # 64MB - opts.merge_operator = self.NgramMergeOperator() - opts.compression = rocksdb.CompressionType.lz4_compression - - # fast ingest stuff - # via https://github.com/facebook/rocksdb/wiki/RocksDB-FAQ -- "Q: What's the fastest way to load data into RocksDB?" - # these settings require manual compaction after ingest - opts.max_background_flushes = 8 - opts.level0_file_num_compaction_trigger = -1 - opts.level0_slowdown_writes_trigger = -1 - opts.level0_stop_writes_trigger = 2 ** 16 # default is 24 -- we want to avoid hitting this until it's done - opts.write_buffer_size = 32 * 2**20 # default is 4 * 2 ** 20 - opts.max_write_buffer_number = 8 # default is 2 - - opts.table_factory = rocksdb.BlockBasedTableFactory( - filter_policy=rocksdb.BloomFilterPolicy(10), - block_cache=rocksdb.LRUCache(2 * 2 ** 30), # 2GB - block_cache_compressed=rocksdb.LRUCache(500 * 2 ** 20)) # 500MB - - self._db = rocksdb.DB(self.db_path(), opts, read_only=self.read_only) - - def db_or_batch(self, batch=None): - return batch or self.batch or self.db - - @contextmanager - def in_transaction(self, *args, **kwargs): - """ - This is not really a RocksDB transaction, which python-rocksdb doesn't seem to support, but a WriteBatch, - which is effectively the same for write-only transactions that fit in RAM. - """ - self.batch = rocksdb.WriteBatch(*args, **kwargs) - try: - yield self.batch - self.db.write(self.batch) - finally: - self.batch = None - - ## writers - - def put(self, k, v, packed=False, batch=None): - self.db_or_batch(batch).put(k, self.pack(v, packed)) - - class NgramMergeOperator(MergeOperator): - def full_merge(self, key, existing_value, ops): - """ - Our mergable keys contain the counts for all jurisdiction-years and totals for an ngram, like this: - existing_value == self.pack({ - : [ - , , , - , , , - ... - ], - None: { - : [, ], - ..., - None: [, ], - } - }) - This function merges in new observations, in the form: - ops == [ - self.pack((, , , )), - ... - ] - """ - try: - # get target for merge - value = KVDB.unpack(existing_value) if existing_value else { - None: { - None: [0, 0], - } - } - for new_value in ops: - # get values to merge - new_value = KVDB.unpack(new_value) - jurisdiction_id, storage_year, instance_count, document_count = new_value - # merge in individual jurisdiction-year value - value.setdefault(jurisdiction_id, []).extend((storage_year, instance_count, document_count)) - # merge in running total for year - totals = value[None] - totals_year = totals.setdefault(storage_year, [0,0]) - totals_year[0] += instance_count - totals_year[1] += document_count - # merge in running total for all years combined - total = totals[None] - total[0] += instance_count - total[1] += document_count - return (True, KVDB.pack(value)) - except Exception: - # rocksdb swallows this stack trace, so print before raising - traceback.print_exc() - raise - - def name(self): - return b'ngram_merge' - - def merge(self, k, v, packed=False, batch=None): - self.db_or_batch(batch).merge(k, self.pack(v, packed)) - - ## readers - - def get(self, k, packed=False): - return self.unpack(self.db.get(k), packed) - - def get_prefix(self, prefix, packed=False): - it = self.db.iteritems() - it.seek(prefix) - for k, v in it: - if not k.startswith(prefix): - return - yield k, self.unpack(v, packed) - -# using SimpleLazyObject lets our tests mock the wrapped object after import -ngram_kv_store = SimpleLazyObject(lambda: NgramRocksDB()) -ngram_kv_store_ro = SimpleLazyObject(lambda: NgramRocksDB(read_only=True)) - - ### static asset storages ### class WhitenoisePipelineStorage(PipelineMixin, CompressedManifestStaticFilesStorage): diff --git a/capstone/config/settings/settings_base.py b/capstone/config/settings/settings_base.py index 4dd149d81..137842c80 100644 --- a/capstone/config/settings/settings_base.py +++ b/capstone/config/settings/settings_base.py @@ -50,7 +50,6 @@ 'db_file_storage', # for CMS images 'simple_history', # model versioning 'bootstrap4', # bootstrap form rendering - 'drf_yasg', # API specification 'django_hosts', # subdomain routing 'django_vite', # vite assets 'elasticsearch_dsl', diff --git a/capstone/fabfile.py b/capstone/fabfile.py index 60e2fd2ac..5592acd3e 100644 --- a/capstone/fabfile.py +++ b/capstone/fabfile.py @@ -795,14 +795,6 @@ def list_missing_captar_volumes(): print("- all volumes finished") -@task -def ngram_jurisdictions(slug=None): - """Generate ngrams for all jurisdictions, or for single jurisdiction if jurisdiction slug is provided.""" - from scripts.ngrams import ngram_jurisdictions - - ngram_jurisdictions(slug) - - @task def url_to_js_string( target_url="http://case.test:8000/maintenance/?no_toolbar", diff --git a/capstone/requirements.in b/capstone/requirements.in index 61205600f..7a3ed101d 100644 --- a/capstone/requirements.in +++ b/capstone/requirements.in @@ -23,14 +23,12 @@ pycurl # let celery talk to SQS queue # xml lxml xmltodict -# pyquery -https://github.com/gawel/pyquery/archive/ca82465e8c049ea5f0c18586a32169338125cffe.zip#egg=pyquery # Until version >= 2.0.0.dev0 is released +pyquery # database psycopg2 # postgres connector redis # redis connector python-redis-lock # cross-process locks -https://github.com/bensteinberg/python-rocksdb/archive/0bf7dbeffa7aafd82835fc25c23f200b3eff48fa.zip#egg=python-rocksdb # key-value store for ngrams; fork pins Cython msgpack # for storing data in KV store # Django stuff @@ -64,7 +62,6 @@ moto flake8 factory-boy # mocking bagit # validate BagIt bag -flaky # retry flaky tests retry # re-run blocks of code until the ES index updates, but fail if they don't end up working pathlib2 # to keep --require-hashes happy; from pytest beautifulsoup4 @@ -76,8 +73,6 @@ libsasscompiler # for compiling scss in pipeline # API djangorestframework django-filter # API filters -drf-yasg # expose API specification -swagger_spec_validator # optional package for schema validation by drf-yasg https://github.com/jcushman/email-normalize/archive/6b5088bd05de247a9a33ad4e5c7911b676d6daf2.zip#egg=email-normalize # Fix issues related to https://github.com/gmr/email-normalize/pull/3 (https://github.com/harvard-lil/capstone/issues/745) pandas # json-to-csv export flatten_json # json-to-csv export @@ -90,6 +85,8 @@ Pillow diff_match_patch_python Markdown PyMuPDF +PyYAML +jsonschema # maintenance page webpage2html # save target page as string @@ -106,6 +103,6 @@ aiohttp>=3,<4 # citation extraction # eyecite -https://github.com/jcushman/eyecite/archive/3a1ff2ac3c910f48ee6f8af3a5947156647c7084.zip#egg=eyecite # until > 2.2.0 +https://github.com/freelawproject/eyecite/archive/a1d7b8f9a41723dd0af82fbddb22dbb0a7ce1be7.zip#egg=eyecite # until eyecite > 2.6.2 hyperscan networkx diff --git a/capstone/requirements.txt b/capstone/requirements.txt index 03273ff25..da198f3c4 100644 --- a/capstone/requirements.txt +++ b/capstone/requirements.txt @@ -1,8 +1,8 @@ # -# This file is autogenerated by pip-compile with python 3.7 +# This file is autogenerated by pip-compile with python 3.11 # To update, run: # -# fab pip-compile +# pip-compile --allow-unsafe --generate-hashes # aiohttp==3.8.6 \ --hash=sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c \ @@ -97,9 +97,9 @@ aiosignal==1.3.1 \ --hash=sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc \ --hash=sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17 # via aiohttp -amqp==2.4.0 \ - --hash=sha256:9f181e4aef6562e6f9f45660578fc1556150ca06e836ecb9e733e6ea10b48464 \ - --hash=sha256:c3d7126bfbc640d076a01f1f4f6e609c0e4348508150c1f61336b0d83c738d2b +amqp==5.2.0 \ + --hash=sha256:827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637 \ + --hash=sha256:a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd # via kombu apipkg==1.5 \ --hash=sha256:37228cda29411948b422fae072f57e31d3396d2ee1c9783775980ee9c9990af6 \ @@ -113,17 +113,13 @@ async-timeout==4.0.2 \ --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c # via aiohttp -asynctest==0.13.0 \ - --hash=sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676 \ - --hash=sha256:c27862842d15d83e6a34eb0b2866c323880eb3a75e4485b079ea11748fd77fac - # via aiohttp -attrs==22.1.0 \ - --hash=sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6 \ - --hash=sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c +attrs==23.2.0 \ + --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ + --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 # via # aiohttp # jsonschema - # pytest + # referencing backcall==0.2.0 \ --hash=sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e \ --hash=sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255 @@ -159,18 +155,19 @@ beautifulsoup4==4.9.3 \ # via # -r requirements.in # django-bootstrap4 -billiard==3.6.0.0 \ - --hash=sha256:756bf323f250db8bf88462cd042c992ba60d8f5e07fc5636c24ba7d6f4261d84 +billiard==4.2.0 \ + --hash=sha256:07aa978b308f334ff8282bd4a746e681b3513db5c9a514cbdd810cbbdc19714d \ + --hash=sha256:9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c # via celery -boto3==1.28.11 \ - --hash=sha256:0fe7a35cf0041145c8eefebd3ae2ddf41baed62d7c963e5042b8ed8c297f648f \ - --hash=sha256:e24460d50001b517c6734dcf1c879feb43aa2062d88d9bdbb8703c986cb05941 +boto3==1.34.78 \ + --hash=sha256:227487f9a40e7963aa108f4fabc81374d65e085891a2a442c190dfd976b86a9e \ + --hash=sha256:47a7899af97960493ed58754c838be658650c8fb231c658866f491965ddfc94f # via # celery # moto -botocore==1.31.11 \ - --hash=sha256:b17ff973bb70b02b227928c2abe4992f1cfc46d13aee0228516c8f32572b88c6 \ - --hash=sha256:d3cbffe554c9a1ba2ac6973734c43c21b8e7985a2ac4a4c31a09811b8029445c +botocore==1.34.78 \ + --hash=sha256:889fcfd1813fad225a5a70940c58cd4bd7a6f5ba6c9769a1d41d0c670272b75d \ + --hash=sha256:bc10738826a4970a6d3a40ac40b9799c02b1b661c0c741a67b915b500562ab3c # via # boto3 # moto @@ -209,9 +206,9 @@ brotli==1.0.9 \ --hash=sha256:defed7ea5f218a9f2336301e6fd379f55c655bea65ba2476346340a0ce6f74a1 \ --hash=sha256:f909bbbc433048b499cb9db9e713b5d8d949e8c109a2a548502fb9aa8630f0b1 # via whitenoise -celery[redis,sqs]==4.3.0 \ - --hash=sha256:4c4532aa683f170f40bd76f928b70bc06ff171a959e06e71bf35f2f9d6031ef9 \ - --hash=sha256:528e56767ae7e43a16cfef24ee1062491f5754368d38fcfffa861cdb9ef219be +celery[redis,sqs]==5.3.6 \ + --hash=sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9 \ + --hash=sha256:9da4ea0118d232ce97dff5ed4974587fb1c0ff5c10042eb15278487cdd27d1af # via -r requirements.in certifi==2023.7.22 \ --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ @@ -261,6 +258,10 @@ cffi==1.14.5 \ # bcrypt # cryptography # pynacl +chardet==5.2.0 \ + --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ + --hash=sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 + # via reportlab charset-normalizer==3.1.0 \ --hash=sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6 \ --hash=sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1 \ @@ -340,25 +341,31 @@ charset-normalizer==3.1.0 \ # via # aiohttp # requests -click==7.1.2 \ - --hash=sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a \ - --hash=sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc +click==8.1.7 \ + --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ + --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de # via + # celery + # click-didyoumean + # click-plugins + # click-repl # nltk # pip-tools -coreapi==2.3.3 \ - --hash=sha256:46145fcc1f7017c076a2ef684969b641d18a2991051fddec9458ad3f78ffc1cb \ - --hash=sha256:bf39d118d6d3e171f10df9ede5666f63ad80bba9a29a8ec17726a66cf52ee6f3 - # via drf-yasg -coreschema==0.0.4 \ - --hash=sha256:5e6ef7bf38c1525d5e55a895934ab4273548629f16aed5c0a6caa74ebf45551f \ - --hash=sha256:9503506007d482ab0867ba14724b93c18a33b22b6d19fb419ef2d239dd4a1607 - # via - # coreapi - # drf-yasg -courts-db==0.9.13 \ - --hash=sha256:8c2a46300b3b2b744975f289c5a633c6b455da00832361299474fba5381022fe \ - --hash=sha256:a952e1918adae239a3e56f0798f96dba0844c9d57e1b018507f289c6a44c7281 +click-didyoumean==0.3.1 \ + --hash=sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463 \ + --hash=sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c + # via celery +click-plugins==1.1.1 \ + --hash=sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b \ + --hash=sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8 + # via celery +click-repl==0.3.0 \ + --hash=sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9 \ + --hash=sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812 + # via celery +courts-db==0.10.22 \ + --hash=sha256:65f5bf1fe3e82b368572403097061f2b7b82ee86f11a0bebdff0176bef4e0288 \ + --hash=sha256:f2152826e584e3885baa1fe8e6c98aeb4172462032ce9c9cbcf8abb2d153a42a # via eyecite coverage==4.5.2 \ --hash=sha256:09e47c529ff77bf042ecfe858fb55c3e3eb97aac2c87f0349ab5a7efd6b3939f \ @@ -420,9 +427,9 @@ cryptography==41.0.7 \ # via # moto # paramiko -cssselect==1.0.3 \ - --hash=sha256:066d8bc5229af09617e24b3ca4d52f1f9092d9e061931f4184cd572885c23204 \ - --hash=sha256:3b5103e8789da9e936a68d993b70df732d06b8bb9a337a05ed4eb52c17ef7206 +cssselect==1.2.0 \ + --hash=sha256:666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc \ + --hash=sha256:da1885f0c10b60c03ed5eccbb6b68d6eff248d91976fcde348f395d54c9fd35e # via # mincss # pyquery @@ -431,7 +438,6 @@ decorator==4.4.1 \ --hash=sha256:5d19b92a3c8f7f101c8dd86afd86b0f061a8ce4540ab8cd401fa2542756bce6d # via # ipython - # networkx # retry dictdiffer==0.8.1 \ --hash=sha256:1adec0d67cdf6166bda96ae2934ddb5e54433998ceab63c984574d187cc563d2 \ @@ -439,9 +445,7 @@ dictdiffer==0.8.1 \ # via -r requirements.in diff-match-patch-python==1.0.2 \ --hash=sha256:5a833417344def272ad7dee7c5d455cf3aaf4fb0ffb58029d73e29512dd3ed48 - # via - # -r requirements.in - # eyecite + # via -r requirements.in django==3.2.24 \ --hash=sha256:5dd5b787c3ba39637610fe700f54bf158e33560ea0dba600c19921e7ff926ec5 \ --hash=sha256:aaee9fb0fb4ebd4311520887ad2e33313d368846607f82a9a0ed461cd4c35b18 @@ -452,11 +456,11 @@ django==3.2.24 \ # django-extensions # django-filter # django-model-utils + # django-nine # django-redis # django-storages # django-vite # djangorestframework - # drf-yasg django-bootstrap4==3.0.0 \ --hash=sha256:76a52fb22a8d3dbb2f7609b21908ce863e941a4462be079bf1d12025e551af37 \ --hash=sha256:bffc96f65386fbd49cae1474393e01d4b414c12fcab0fff50545e6142e7ba19b @@ -474,9 +478,9 @@ django-elasticsearch-dsl==7.2.0 \ # via # -r requirements.in # django-elasticsearch-dsl-drf -django-elasticsearch-dsl-drf==0.20.8 \ - --hash=sha256:90bf300fb96ebac5cb0b3fa21601e37f1b1231a57aac4b5a001a11c52db59d74 \ - --hash=sha256:9effbd541bb25becb39454b694de20d0f5a2c9e5bf7b629fcd8f9c9505b9320a +django-elasticsearch-dsl-drf==0.22.5 \ + --hash=sha256:b444f168535ff99244cc995ec354a31abcbf3fc03bd7b11ec1a3f43c7208f63a \ + --hash=sha256:fc0b3960e16f6c06de4f2ca4daf1134376fce4d496c1ddc218c23daddf6bcaa0 # via -r requirements.in django-extensions==3.1.2 \ --hash=sha256:081828e985485662f62a22340c1506e37989d14b927652079a5b7cd84a82368b \ @@ -494,9 +498,9 @@ django-model-utils==4.0.0 \ --hash=sha256:9cf882e5b604421b62dbe57ad2b18464dc9c8f963fc3f9831badccae66c1139c \ --hash=sha256:adf09e5be15122a7f4e372cb5a6dd512bbf8d78a23a90770ad0983ee9d909061 # via -r requirements.in -django-nine==0.2.3 \ - --hash=sha256:394c043668f820f50d1f7b27009b4957f9f480a7ecf74f55a6699b80ac6e1f69 \ - --hash=sha256:f09fa5870ea2b0d86c03249c9c574c9b14c7e81b05dd860e9ef9c656740892cc +django-nine==0.2.7 \ + --hash=sha256:304e0f83cea5a35359375fc919d00f9917b655c1d388244cbfc7363f59489177 \ + --hash=sha256:4d93208ca5bb4a63bf65cf098a82ee469127b04ebde698d72fe12d258b73c291 # via django-elasticsearch-dsl-drf django-pipeline==2.0.6 \ --hash=sha256:3ec726e2bf9f61f213f41ee4513f4191a02ab2f5df86c9e3751a9a607c814031 \ @@ -524,15 +528,10 @@ djangorestframework==3.12.2 \ # via # -r requirements.in # django-elasticsearch-dsl-drf - # drf-yasg dnspython==1.16.0 \ --hash=sha256:36c5e8e38d4369a08b6780b7f27d790a292b2b08eea01607865bf0936c558e01 \ --hash=sha256:f69c21288a962f4da86e56c4905b49d11aba7938d3d740e80d9e366ee4f1632d # via email-normalize -drf-yasg==1.20.0 \ - --hash=sha256:8b72e5b1875931a8d11af407be3a9a5ba8776541492947a0df5bafda6b7f8267 \ - --hash=sha256:d50f197c7f02545d0b736df88c6d5cf874f8fea2507ad85ad7de6ae5bf2d9e5a - # via -r requirements.in elasticsearch==7.8.1 \ --hash=sha256:2ffbd746fc7d2db08e5ede29c822483705f29c4bf43b0875c238637d5d843d44 \ --hash=sha256:92b534931865a186906873f75ae0b91808ff5036b0f2b9269eb5f6dc09644b55 @@ -554,8 +553,8 @@ execnet==1.5.0 \ --hash=sha256:a7a84d5fa07a089186a329528f127c9d73b9de57f1a1131b82bb5320ee651f6a \ --hash=sha256:fc155a6b553c66c838d1a22dba1dc9f5f505c43285a878c6f74a79c024750b83 # via pytest-xdist -eyecite @ https://github.com/jcushman/eyecite/archive/3a1ff2ac3c910f48ee6f8af3a5947156647c7084.zip \ - --hash=sha256:ff9f9f8130fbf1250f0e7b28936b1d6aa050cd4b82080bd45bcc427765b89797 +eyecite @ https://github.com/freelawproject/eyecite/archive/a1d7b8f9a41723dd0af82fbddb22dbb0a7ce1be7.zip \ + --hash=sha256:5d45ee65d5855c21dab2b48e721bd2b20de67f9cdd9b486c70fd81a77e2dd1df # via -r requirements.in fabric3==1.14.post1 \ --hash=sha256:647e485ec83f30b587862f92374d6affc217f3d79819d1d7f512e42e7ae51e81 \ @@ -569,14 +568,93 @@ faker==13.15.1 \ --hash=sha256:172e45220b7a46743f4fb58cf380adb306d5c3ab1c0b0d97062508474cec5ff8 \ --hash=sha256:7c3f8ee807d3916415568169a172bf0893ea9cc3371ab55e4e5f5170d2185bea # via factory-boy +fast-diff-match-patch==2.0.1 \ + --hash=sha256:0085fa353dced8efe20af2e563019553b02602ec1497ba413b950542d092f3c5 \ + --hash=sha256:09ac7356ff1dde7cbc2af81d1a41cbcd85a063e25f645969447b65044f93a970 \ + --hash=sha256:0c2a4334db814cb4b0a2864982750d19335127b0f0e198a491c24ac160d5fb3e \ + --hash=sha256:0e39bb9ca0b7632a15e85cb6b0c4c575010e6fb6e43e5714ee53c7cef1aa4135 \ + --hash=sha256:18867a2ab54aa2f5c1a7d7ebb8110b9ee268cb27ffc6c8321f87870cee2ea0f9 \ + --hash=sha256:1e0fa29dab1511a39ec6ce1a59e56504135a6e28c9eb73885945d44284b94c14 \ + --hash=sha256:20523755c2858f58a738c6a43b6a9eef1ff49f7677550370f34faa8c95eb68c8 \ + --hash=sha256:2413a41c3a5ffa1361d521ab6275f771ff29df4d7c5746677fa6d696db4b7b13 \ + --hash=sha256:27de6dc97e7d6dc207585d778ace58e7cc364b8383e5412164224d52ad4099b5 \ + --hash=sha256:2c32e3e1ea58e52c7af62354d72d90cf2e610f4201cab54a70dd6d8452dd3fac \ + --hash=sha256:3229be87d5721862fd1efbb5954d989783e730ae9b9171d247bf72f01d49b431 \ + --hash=sha256:332ea21346302e929f375cc699e058dfad95d9de1ec59cbdcf9b465225665d2e \ + --hash=sha256:3423c373c168fcbc56fa488960248ce086dd686402817aa5d4d967537fff1203 \ + --hash=sha256:343a3d8367440274ca62d4edb9a8bf8e41295c76b2cd9cb9255c79b71d9ef236 \ + --hash=sha256:3535814b3ebfeec3e134028f7ba4e4cb2cb34cb3e6e207c3b0fb3a2df5f7c978 \ + --hash=sha256:37800788c6893eead20c73da78c8a29724a5c50d4ee0632b64df2300da416fc3 \ + --hash=sha256:378251cc37cd21d14802669a3453f026ed3aa07c07a8aa2daabeefd14a0e0a36 \ + --hash=sha256:3aaeb207fe586979ecb194ecc2c81ba979d351cd0bdaba8489ce4be0f55206dc \ + --hash=sha256:47d30a9db041dfee960a9c8a35fa99685b1f29530f52f69fef1e3cc02867f0b9 \ + --hash=sha256:4d759ec2d79c638407f32c29dc348fcef6e6a1659927056527b0939a1ab31ca5 \ + --hash=sha256:4ecbef199cf21addd7051158dee31fea05b2069148c1457ee1c2f5114e1a8bd8 \ + --hash=sha256:513eace4a5cc231c540927fb17a881066285f09d76912253d7727f4afc165599 \ + --hash=sha256:51d3e0bbf84e4988781d0fbb6befd57daad8003ed8f142891c29cbcd6cab1f61 \ + --hash=sha256:58ada748637821445df3cfcb21df412136fb69b8e677ea364aa9ca7a8facb048 \ + --hash=sha256:58b273cecb941bef392bda622a534de03e6ea8d3186d4d07745375cce9db0833 \ + --hash=sha256:5ae86bf24b6e285cc5cfbf21892788c6112e2e9917d7349931e9c59994501fbd \ + --hash=sha256:5dce421f9be8506917cc12212a5c384439287a81aa0d71edff9486047e115128 \ + --hash=sha256:6f2202d1e9d225918ea3803f66ca9c99d080c8ba5094c438680eb2c8dfd2e48c \ + --hash=sha256:71ebef80e092a86ea8a0a59d107413d1d9ed764d3fee2f4887524bd533c73fad \ + --hash=sha256:7640e8c62085520eb668b37c17576cfd0e276af842af217856848304473016cc \ + --hash=sha256:79588e5e66ae5bf8b130b4eff66ee857360b42bb9c03173f5b8dc18d861a61a2 \ + --hash=sha256:7a2e1ce344438b14400a91b65c79c39345b0ce70a0a8797e88b14485577b5fc0 \ + --hash=sha256:7e7902f7cff5c256471f35c22df437c8102d03134547a3763212e2aed597fb0e \ + --hash=sha256:84f1ceaf0bf9030425cedbe9ebd5901b9ad347965110686c5ea4a79cf89710be \ + --hash=sha256:877f622d89f12d9849d072e133858d2c06b213f7a54d9256197dbe99c976588f \ + --hash=sha256:8ecff01b3d10d6bed965a1591e37597df118ab0bcc98a3f59a724a0d9bd63fb1 \ + --hash=sha256:92ce730c681b73ee3b19b3bc525336c9397ff6d0f7cea58e83d14fa796324e5b \ + --hash=sha256:98745b55fbb5a4ee507614808c71c5628394f090ad771bc683060aa575e614d9 \ + --hash=sha256:9ac9660bf35b03167de419b67e7168e6426a9ba92382208c4482c256c49057d4 \ + --hash=sha256:a126bdd8a412bab59d47eff410e10a6936b4cd1532490e49e9a08ea877fd3d2d \ + --hash=sha256:a1b6b393cb2d11f49bd5ae14d11c8b727ae3839597f3743c5c7a390e7dfc705c \ + --hash=sha256:a1e11bda495567ed21d1fdf93c357a2a1970f0d37e817ee1a6049d5155653a87 \ + --hash=sha256:a315dc71dcd9b52c4f27ca3eb50b7e217f0bb2400a63a51978254d1ebddc4e21 \ + --hash=sha256:a646ada036564751df926796afefefdb34e06a68452db066a84ce7dddc1d0b60 \ + --hash=sha256:a682a72b93e07902b9af3bc591fe365da4024888cceb308f04cdec59eeb3602d \ + --hash=sha256:a6e9b5ea1ff9186daef23b7f73a29b1903905ae43e1dfe645988c624b0bf7972 \ + --hash=sha256:a92ba0d543524234a17ea2da4892a9752273cfdfed528e581f0f76cbd78cf991 \ + --hash=sha256:a9f7ceb962598a3f6ba47da79a08c7e360dd5e3860646d363bf7d3bec2a42f60 \ + --hash=sha256:ac94521cabbe88254e417f766814d864ae9e6c31eae307d89e0028e8eefe233b \ + --hash=sha256:b07808e98f0bfcd557281126135b24729a30ee10ccc2db4d3358fb2f18ac1879 \ + --hash=sha256:b150df1bc5e93afb07510e8f613909fcbb92e16fcfe39b9069660f6f18c84a2e \ + --hash=sha256:b4d4e6aa5c6a4af0b6c66be593021579f4693c94b848084b89e6783180361db6 \ + --hash=sha256:b8252832fa9dc91011b1d5a77f0a22de234c3474e60a1d512183730fd3357606 \ + --hash=sha256:bc4b1ed6c5690f1f24abca60391d3e18ebf60ad953519dd7b078d7c9a7f3f226 \ + --hash=sha256:bfa6d9a1f0ee5b01beb0d067c724a8163351b74babe4815c830e5e195913d1f9 \ + --hash=sha256:c1154830dbcb83d1c9ed24f43b1e8226cafc7ce46b6e0971e866bdf513ecc216 \ + --hash=sha256:c151850d03994286017139ca29645951ddebde220dc50d1d18f5faf58593a2ec \ + --hash=sha256:c2a467cfdda6ea316c4ac7d49a3a4e70c8cf151a08d8c42f8d3ceffcff3e7757 \ + --hash=sha256:c4cb3aa60664bcafd070915cc0f148c63da3a20babeca29bdf24e6aee80ff481 \ + --hash=sha256:c6723cfba7bd9fb712e179acbc9c6cb526076612c0325ad4f1066f3bd176064a \ + --hash=sha256:cc7285d9a1fbf8990361ce37728202fd6ebee6ddc6cfe6fb15a19905e562f304 \ + --hash=sha256:cd2e838c50f9d23c8a9a3761a2d02f822d7370f826ca01c563b454d1f344a864 \ + --hash=sha256:cea207fce22ff18fe068190a0763fa837e32a03886af8c19d980a68d719cd663 \ + --hash=sha256:d30e7fb0de87e02db88cda54f6c57a9f7d789e4d0922cfed41f61a1d4415408b \ + --hash=sha256:d318864bb1dde9a21b9834ca985ba82834d7526552b8995c644112d804ca4a5d \ + --hash=sha256:d55be2481839f894d45519b56abb6fbe5ec5d7968c009f51c1683ec0820f5d54 \ + --hash=sha256:daa821a8dcbc1026f7f8cc177ca599bcfbaaddccdf90bc1ad1e44255b1c239e1 \ + --hash=sha256:dd5b3b99bb7c14ce8ea5ab184afb2cc6796dac71439b2cfc6fb6227a6846aef3 \ + --hash=sha256:e325d6f583b852449a5cab153fc63d1e128dac36e07fabd5c16c3cba8ff65955 \ + --hash=sha256:e5205e4f3b820f65138947e0d42959b6910fd959c8e5e8f4fc72472f6fec9d8b \ + --hash=sha256:e852ef9d9eb7665d798c708c6e3282f77263bd88e4a502aba69a37a39be2698a \ + --hash=sha256:ec27f797b1ecee79c3d76c9a081a6c20fd89068b41ba3b84a6ebe48317c5c46c \ + --hash=sha256:ec335bbd9780d2182c351b5c486e5c80d8975ea91772eaf02014dfe9e9907a5d \ + --hash=sha256:efb1b95044a6ad1d3f76657c791a3965aa23bd671f1b283126b8b5f14613123a \ + --hash=sha256:f623e8e72d0a89d0d9680c11a197bdd434def7d3800076f7f432134f04a72dbb \ + --hash=sha256:f67e46215aef3fb875a60d9e9f463d078dc46428461b13b14ea66a6c874bb5e5 \ + --hash=sha256:f80d066a8188e7c74eda5626e5a7ac91a65aee6719022feaa78020a6de287e29 \ + --hash=sha256:f8b5595277f99b4908ae9bab33548bfe7497a99a1f5dc5c277a4f36051dcf993 \ + --hash=sha256:fa1212d0200169e93392805957ca6ae351bfc51282c5119fb231f968c7e12fbc \ + --hash=sha256:fd358ac5ff727ced2038635c6beb53070c69f6ebb5489eb2e78b05c01213d6f0 \ + --hash=sha256:ff3e2dd7a812caf12de9fd7b1c4dfa8e9726d77510cc86521e44d3de56bd25f0 + # via eyecite flake8==3.8.3 \ --hash=sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c \ --hash=sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208 # via -r requirements.in -flaky==3.6.0 \ - --hash=sha256:36fa125bceebfe869739b62e203db4653488dff09615e5a4f3d7607d48363c6a \ - --hash=sha256:c24e321b3b4b4a2d323b646acff6738e7601849832f4280864d69f00a6a9869d - # via -r requirements.in flatten-json==0.1.7 \ --hash=sha256:06341ba64baf2fd9b960b4cacf3d3bab38e1e09a855d9902e79cfd2fe66fa29c \ --hash=sha256:cdb1a0802f0268f892294f51014097912ba5a6fea99996573a7e3f0cc43cfd26 @@ -725,12 +803,34 @@ greenlet==2.0.2 \ --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 # via playwright -hyperscan==0.2.0 \ - --hash=sha256:10cb8939d7db85d522ed319031ff5ab86fd0133126b986290f01aa83dbfb9ff7 \ - --hash=sha256:47ef10b4297f9976d257b7f260ae4ae8834e87e1abb7f46cf0707ba496fb6e49 \ - --hash=sha256:78e97de71896b9fda4368c185e6609e53bb240c85302909ac46e738f14621f40 \ - --hash=sha256:794eecc13fa9bcf061004340582aab342471fb22b710f92020e3ea508776ff53 \ - --hash=sha256:fd0d0fe64484443b9e5ee1e8b156a30f2ba91494b1343fae5c943130ff847607 +hyperscan==0.7.7 \ + --hash=sha256:0291895909ca3e2e3698455a7851672370811f82a94e3b079a3bb301d44434d9 \ + --hash=sha256:12aeafdfa83e0f85118fdc934fd91e6303258651e50b77e52b71d9a126e02882 \ + --hash=sha256:1352abee64e06438872eb68662497bb429fded920fa65a0981fcc61a239eeda8 \ + --hash=sha256:16516ee496268a402084728c90a1993ed596fca96a88eba68dfb96b60a19aed0 \ + --hash=sha256:1b550b2eec76b4ebf1d360cbc49bd1c51d6c7361bb50de4036b17e99514be2f7 \ + --hash=sha256:1bd7b21fe439c5222f4ab89a293e8166646c84fa01ee0438fd4a149c1cd68f02 \ + --hash=sha256:2968cfae5179cb2eff73b2b759c0247f49dde8560e743f93cb6af0e4599c6e40 \ + --hash=sha256:2a6770f3185f6e3c712068b1b7205fab0b2637948516e3e16b238d3ff967bcfc \ + --hash=sha256:6329abeefc9f699a9271d556a6640c2862ae4c08c580fdfd51d75b2bb74de977 \ + --hash=sha256:7c8529697898836fb697be73ead7ca2cc5125f5773c957334c50fa5cc755551c \ + --hash=sha256:8229df5e2952ca9a3b1ec6609ce7f205ba44f7b44912f27a3f159ae33ce13184 \ + --hash=sha256:835bb7aa2952c37dc9e8c663a4f8d239fa963f31a3b9ec0410c3270eea6e7202 \ + --hash=sha256:85e146488b041f7598395ee21d4fc31eeb1496750304bf126a3e2bfa0af0c88c \ + --hash=sha256:ab23107f2aeec95389b89847353fefd9e7516846ebaae74c1c33bfadde2e7070 \ + --hash=sha256:ac9a286a2e9672ce23194a81c61b3036bc7853c2a282e3befd43a85c0269425b \ + --hash=sha256:ae17d655dac10a4e04278fdcda1183f693d63a4961f90edfb1677c6aab11fc10 \ + --hash=sha256:b73c6cac9eceade6ad4e25b2223862d2411ef7a2571e2abc7bd3995c205126e8 \ + --hash=sha256:ba32b4e36384b5b43426a37e44b50f1e72e07e0b3edb270c27e666456db86ce7 \ + --hash=sha256:bfacc6202a3537ebc988c4f50c43892b472d04ec51df545364c993c3a645398d \ + --hash=sha256:c11ec835e3af7f0b947fc2f5f724afaf4e783d93b4f95f472182c252fe9408cd \ + --hash=sha256:c31b7a92ec16df2fb4e374b7375e8602f642e70af1e6e666cd8c350438bd0da8 \ + --hash=sha256:c7c317a38bdc7dab6a43e3b92ef703e3649bf9cf85df7eb6bfbf0b3a52bd783c \ + --hash=sha256:d6f5d373df48b9f52a6824c0ef9abc1e5c422e1a94b4cb60687c8512dd3928cf \ + --hash=sha256:de629281422f8712a9092f7ccfa1e171b6dd2e0ee8409cfb13f01b20bbd65d33 \ + --hash=sha256:ec193cf30465cd14ea3896fd9d8a7031a4a25fc980bf45ca1d5fd95cccd96755 \ + --hash=sha256:f7559b4bf144e10b9f279326ec456ad2dfa92013d8923f57777491d89860c0f9 \ + --hash=sha256:f94255ef55adbb3e1bc1bb6c8b42efe307ec2eb9ca8e22953008f89ca9520d72 # via -r requirements.in idna==2.8 \ --hash=sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407 \ @@ -741,18 +841,6 @@ idna==2.8 \ img2pdf==0.3.3 \ --hash=sha256:9d77c17ee65a736abe92ef8cba9cca009c064ea4ed74492c01aea596e41856cf # via -r requirements.in -importlib-metadata==1.6.0 \ - --hash=sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f \ - --hash=sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e - # via - # django-bootstrap4 - # flake8 - # pep517 - # pluggy - # pytest -inflection==0.3.1 \ - --hash=sha256:18ea7fb7a7d152853386523def08736aa8c32636b047ade55f7578c4edeb16ca - # via drf-yasg iniconfig==1.0.1 \ --hash=sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437 \ --hash=sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69 @@ -765,9 +853,6 @@ ipython-genutils==0.2.0 \ --hash=sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8 \ --hash=sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8 # via traitlets -itypes==1.1.0 \ - --hash=sha256:c6e77bb9fd68a4bfeb9d958fea421802282451a25bac4913ec94db82a899c073 - # via coreapi jedi==0.17.2 \ --hash=sha256:86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20 \ --hash=sha256:98cc583fa0f2f8304968199b01b6b4b94f469a1f4a74c1560506ca2a211378b5 @@ -775,9 +860,7 @@ jedi==0.17.2 \ jinja2==2.11.3 \ --hash=sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419 \ --hash=sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6 - # via - # coreschema - # moto + # via moto jmespath==0.9.3 \ --hash=sha256:6a81d4c9aa62caf061cb517b4d9ad1dd300374cd4706997aff9cd6aedd61fc64 \ --hash=sha256:f11b4461f425740a1d908e9a3f7365c3d2e569f6ca68a2ff8bc5bcd9676edd63 @@ -788,31 +871,25 @@ joblib==1.2.0 \ --hash=sha256:091138ed78f800342968c523bdde947e7a305b8594b910a0fea2ab83c3c6d385 \ --hash=sha256:e1cee4a79e4af22881164f218d4311f60074197fb707e082e803b61f6d137018 # via nltk -jsonschema==3.0.2 \ - --hash=sha256:5f9c0a719ca2ce14c5de2fd350a64fd2d13e8539db29836a86adc990bb1a068f \ - --hash=sha256:8d4a2b7b6c2237e0199c8ea1a6d3e05bf118e289ae2b9d7ba444182a2959560d - # via swagger-spec-validator -kombu==4.5.0 \ - --hash=sha256:389ba09e03b15b55b1a7371a441c894fd8121d174f5583bbbca032b9ea8c9edd \ - --hash=sha256:7b92303af381ef02fad6899fd5f5a9a96031d781356cd8e505fa54ae5ddee181 +jsonschema==4.21.1 \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 + # via -r requirements.in +jsonschema-specifications==2023.12.1 \ + --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ + --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c + # via jsonschema +kombu==5.3.6 \ + --hash=sha256:49f1e62b12369045de2662f62cc584e7df83481a513db83b01f87b5b9785e378 \ + --hash=sha256:f3da5b570a147a5da8280180aa80b03807283d63ea5081fcdb510d18242431d9 # via celery -libsass==0.17.0 \ - --hash=sha256:0da943e00e028211cb4bb91496a20becab9fe82407bb75266ec4212af04acb45 \ - --hash=sha256:107591ba2c0d173bb1705bef0e9fd04a5b6f482f3584f4ea51b28ab8b137fbb2 \ - --hash=sha256:1aeadc155594af23879e27792667dc06e7f248c2c599c40ff2a7335193abdf05 \ - --hash=sha256:411833c623288138744865d882f5226f6db52afce1e19f42722c416df9d308dc \ - --hash=sha256:4bf7a80a956da9de9715436b85343a179da4ff399a6e9a1694e70bff93d43099 \ - --hash=sha256:53be1c6cea9458fc0b59fafff5307d63cbde4d6f8a4413fb52ae467566273357 \ - --hash=sha256:55b77204cfa363142ab02c49ee871321a396b8e51f6361ebc226c3953c780541 \ - --hash=sha256:66e3062ff508c81928e35c66702f0cc4f70fb12eb76ba23eeb0ff87a6340cc13 \ - --hash=sha256:747e1cb3624b25ce9104315cf98b080246c5112d008cba6536a7dd2edb16fcc2 \ - --hash=sha256:75605a97f4b2f47fafc5a372f09efec210c7f33908c6de726362f85489fd53aa \ - --hash=sha256:7c7a531b8cd786c35170e97338be2e73a74806f95539366a8ee837df94b8a8cf \ - --hash=sha256:953ebe810f09d81b84ccafdca0fb6171d1b58c8f0147cb650184a41e124e296f \ - --hash=sha256:a19041e78d5bb7c5d72e010e893c29119693628b6ee06025503ab2584cf24edd \ - --hash=sha256:b3e4abf50ad3a6bec25acd0c67495301cab6137aa79b8640364276f7f3712586 \ - --hash=sha256:bf6b7ad08f287695338f050c80f79d258a405e5c349cdaeb9be5d5376c09e37a \ - --hash=sha256:fcbc861a001ffd68c4df00164b41c6152d5451185d06c654ac240d811be9f7e2 +libsass==0.23.0 \ + --hash=sha256:31e86d92a5c7a551df844b72d83fc2b5e50abc6fbbb31e296f7bebd6489ed1b4 \ + --hash=sha256:34cae047cbbfc4ffa832a61cbb110f3c95f5471c6170c842d3fed161e40814dc \ + --hash=sha256:4a218406d605f325d234e4678bd57126a66a88841cb95bee2caeafdc6f138306 \ + --hash=sha256:6f209955ede26684e76912caf329f4ccb57e4a043fd77fe0e7348dd9574f1880 \ + --hash=sha256:a2ec85d819f353cbe807432d7275d653710d12b08ec7ef61c124a580a8352f3c \ + --hash=sha256:ea97d1b45cdc2fc3590cb9d7b60f1d8915d3ce17a98c1f2d4dd47ee0d9c68ce6 # via libsasscompiler libsasscompiler==0.1.8 \ --hash=sha256:1a376b4ffa8ecd002022127946536ecd2d7428d23f612b4dd7d30961e53db4c6 \ @@ -950,9 +1027,9 @@ mincss==0.11.6 \ --hash=sha256:8da263ff5454bc4c8065f92ed01cc5be9cf9cc99cbc652db6a10bad84eb63e23 \ --hash=sha256:cb6633962381646b7f53a0191318d90fec4c667efea2909cf6749d95c7aae1ec # via -r requirements.in -mirakuru==1.1.0 \ - --hash=sha256:4d6eede7ac4bf7e9742163f0c9f9e234eeb5838fb9f4646774433316dee93113 \ - --hash=sha256:7c535bf2aba41d8ad0f45731a7412cf0b18670c30a43d02e5246fd62f425c221 +mirakuru==2.5.2 \ + --hash=sha256:41ca583d355eb7a6cfdc21c1aea549979d685c27b57239b88725434f115a7132 \ + --hash=sha256:90c2d90a8cf14349b2f33e6db30a16acd855499811e0312e56cf80ceacf2d3e5 # via pytest-redis mock==4.0.3 \ --hash=sha256:122fcb64ee37cfad5b3f48d7a7d51875d7031aaf3d8be7c42e2bee25044eee62 \ @@ -1035,46 +1112,51 @@ netaddr==0.7.19 \ --hash=sha256:38aeec7cdd035081d3a4c306394b19d677623bf76fa0913f6695127c7753aefd \ --hash=sha256:56b3558bd71f3f6999e4c52e349f38660e54a7a8a9943335f73dfc96883e08ca # via -r requirements.in -networkx==2.4 \ - --hash=sha256:cdfbf698749a5014bf2ed9db4a07a5295df1d3a53bf80bf3cbd61edf9df05fa1 \ - --hash=sha256:f8f4ff0b6f96e4f9b16af6b84622597b5334bf9cae8cf9b2e42e7985d5c95c64 +networkx==3.2.1 \ + --hash=sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6 \ + --hash=sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2 # via -r requirements.in nltk==3.7 \ --hash=sha256:ba3de02490308b248f9b94c8bc1ac0683e9aa2ec49ee78536d8667afb5e3eec8 \ --hash=sha256:d6507d6460cec76d70afea4242a226a7542f85c669177b9c7f562b7cf1b05502 # via -r requirements.in -numpy==1.21.6 \ - --hash=sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac \ - --hash=sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3 \ - --hash=sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6 \ - --hash=sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1 \ - --hash=sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a \ - --hash=sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b \ - --hash=sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470 \ - --hash=sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1 \ - --hash=sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab \ - --hash=sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46 \ - --hash=sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673 \ - --hash=sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7 \ - --hash=sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db \ - --hash=sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e \ - --hash=sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786 \ - --hash=sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552 \ - --hash=sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25 \ - --hash=sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6 \ - --hash=sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2 \ - --hash=sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a \ - --hash=sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf \ - --hash=sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f \ - --hash=sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c \ - --hash=sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4 \ - --hash=sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b \ - --hash=sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0 \ - --hash=sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3 \ - --hash=sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656 \ - --hash=sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0 \ - --hash=sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb \ - --hash=sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e +numpy==1.26.4 \ + --hash=sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b \ + --hash=sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 \ + --hash=sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20 \ + --hash=sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0 \ + --hash=sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010 \ + --hash=sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a \ + --hash=sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea \ + --hash=sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c \ + --hash=sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71 \ + --hash=sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110 \ + --hash=sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be \ + --hash=sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a \ + --hash=sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a \ + --hash=sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5 \ + --hash=sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed \ + --hash=sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd \ + --hash=sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c \ + --hash=sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e \ + --hash=sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0 \ + --hash=sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c \ + --hash=sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a \ + --hash=sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b \ + --hash=sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0 \ + --hash=sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6 \ + --hash=sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2 \ + --hash=sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a \ + --hash=sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30 \ + --hash=sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218 \ + --hash=sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5 \ + --hash=sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07 \ + --hash=sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2 \ + --hash=sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4 \ + --hash=sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764 \ + --hash=sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef \ + --hash=sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3 \ + --hash=sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f # via # -r requirements.in # pandas @@ -1082,28 +1164,38 @@ packaging==20.4 \ --hash=sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8 \ --hash=sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181 # via - # drf-yasg + # django-nine # pytest -pandas==1.1.3 \ - --hash=sha256:206d7c3e5356dcadf082e64dc25c24bc8541718045826074f96346e9d6d05a20 \ - --hash=sha256:24f61f40febe47edac271eda45d683e42838b7db2bd0f82574d9800259d2b182 \ - --hash=sha256:3a038cd5da602b955d335aa80cbaa0e5774f68501ff47b9c21509906981478da \ - --hash=sha256:427be9938b2f79ab298de84f87693914cda238a27cf10580da96caf3dff64115 \ - --hash=sha256:54f5f564058b0280d588c3758abde82e280702c440db5faf0c686b80336096f9 \ - --hash=sha256:5a8a84b75ca3a29bb4263b35d5ed9fcaae2b062f014feed8c5daa897339c7d85 \ - --hash=sha256:84a4ffe668df357e31f98c829536e3a7142c3036c82f996e639f644c5d32eda1 \ - --hash=sha256:882012763668af54b48f1412bab95c5cc0a7ccce5a2a8221cfc3839a6e3394ef \ - --hash=sha256:920d30fdff65a079f071db635d282b4f583c2b26f2b58d5dca218aac7c59974d \ - --hash=sha256:a605054fbca71ed1d08bb2aef6f73c84a579bbac956bfe8f9718d5e84cb41248 \ - --hash=sha256:b11b496c317dbe007898de699fd59eaf687d0fe8c1b7dad109db6010155d28ae \ - --hash=sha256:babbeda2f83b0686c9ad38d93b10516e68cdcd5771007eb80a763e98aaf44613 \ - --hash=sha256:c22e40f1b4d162ca18eb6b2c572e63eef220dbc9cc3de0241cefb77972621bb7 \ - --hash=sha256:ca31ac8578d48da354cf66a473d4d5ff99277ca71d321dc7ea4e6fad3c6bb0fd \ - --hash=sha256:ca71a5aa9eeb3ef5b31feca7d9b6369d6b3d0b2e9c85d7a89abe3ecb013f1e86 \ - --hash=sha256:d6b1f9d506dc23da2915bcae5c5968990049c9cec44108bd9855d2c7c89d91dc \ - --hash=sha256:d89dbc58aec1544722a8d5046f880b597c497ef8a82c5fe695b4b2effafac5ec \ - --hash=sha256:df43ea0e9fd9f9672b0de9cac26d01255ad50481994bf3cb4687c21eec2d7bbc \ - --hash=sha256:fd6f05b6101d0e76f3e5c26a47be5be7be96ed84ef3981dc1852e76898e73594 +pandas==2.2.0 \ + --hash=sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1 \ + --hash=sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e \ + --hash=sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f \ + --hash=sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2 \ + --hash=sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18 \ + --hash=sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae \ + --hash=sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd \ + --hash=sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab \ + --hash=sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430 \ + --hash=sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a \ + --hash=sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106 \ + --hash=sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5 \ + --hash=sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670 \ + --hash=sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88 \ + --hash=sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b \ + --hash=sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d \ + --hash=sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71 \ + --hash=sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5 \ + --hash=sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e \ + --hash=sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc \ + --hash=sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30 \ + --hash=sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7 \ + --hash=sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3 \ + --hash=sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a \ + --hash=sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440 \ + --hash=sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a \ + --hash=sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042 \ + --hash=sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1 \ + --hash=sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9 # via -r requirements.in paramiko==2.12.0 \ --hash=sha256:376885c05c5d6aa6e1f4608aac2a6b5b0548b1add40274477324605903d9cd49 \ @@ -1208,18 +1300,20 @@ playwright==1.35.0 \ --hash=sha256:a29cd048b3eddaf116b154328bcb8e3f3a637753cbb926ae3ef5a5e694ed2d64 \ --hash=sha256:bc1d0686bdb6d7c2ce75087a1d6c7820e3de65be893f8a5ec64455613e884b39 # via pytest-playwright -pluggy==0.13.1 \ - --hash=sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0 \ - --hash=sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d +pluggy==1.4.0 \ + --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ + --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be # via pytest -port-for==0.4 \ - --hash=sha256:247b4db1901aa3d9906258308e40dfbadf65275b27ca77faa0b9a876b7284970 \ - --hash=sha256:47b5cb48f8e036497cd73b96de305cecb4070e9ecbc908724afcbd2224edccde +port-for==0.7.2 \ + --hash=sha256:074f29335130578aa42fef3726985e57d01c15189e509633a8a1b0b7f9226349 \ + --hash=sha256:16b279ab4f210bad33515c45bd9af0c6e048ab24c3b6bbd9cfc7e451782617df # via pytest-redis -prompt-toolkit==3.0.8 \ - --hash=sha256:25c95d2ac813909f813c93fde734b6e44406d1477a9faef7c915ff37d39c0a8c \ - --hash=sha256:7debb9a521e0b1ee7d2fe96ee4bd60ef03c6492784de0547337ca4433e46aa63 - # via ipython +prompt-toolkit==3.0.43 \ + --hash=sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d \ + --hash=sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6 + # via + # click-repl + # ipython psutil==5.7.0 \ --hash=sha256:1413f4158eb50e110777c4f15d7c759521703bd6beb58926f1d562da40180058 \ --hash=sha256:298af2f14b635c3c7118fd9183843f4e73e681bb6f01e12284d4d70d48a60953 \ @@ -1233,31 +1327,29 @@ psutil==5.7.0 \ --hash=sha256:e2d0c5b07c6fe5a87fa27b7855017edb0d52ee73b71e6ee368fae268605cc3f5 \ --hash=sha256:f344ca230dd8e8d5eee16827596f1c22ec0876127c28e800d7ae20ed44c4b310 # via mirakuru -psycopg2==2.8.5 \ - --hash=sha256:132efc7ee46a763e68a815f4d26223d9c679953cd190f1f218187cb60decf535 \ - --hash=sha256:2327bf42c1744a434ed8ed0bbaa9168cac7ee5a22a9001f6fc85c33b8a4a14b7 \ - --hash=sha256:27c633f2d5db0fc27b51f1b08f410715b59fa3802987aec91aeb8f562724e95c \ - --hash=sha256:2c0afb40cfb4d53487ee2ebe128649028c9a78d2476d14a67781e45dc287f080 \ - --hash=sha256:2df2bf1b87305bd95eb3ac666ee1f00a9c83d10927b8144e8e39644218f4cf81 \ - --hash=sha256:440a3ea2c955e89321a138eb7582aa1d22fe286c7d65e26a2c5411af0a88ae72 \ - --hash=sha256:6a471d4d2a6f14c97a882e8d3124869bc623f3df6177eefe02994ea41fd45b52 \ - --hash=sha256:6b306dae53ec7f4f67a10942cf8ac85de930ea90e9903e2df4001f69b7833f7e \ - --hash=sha256:a0984ff49e176062fcdc8a5a2a670c9bb1704a2f69548bce8f8a7bad41c661bf \ - --hash=sha256:ac5b23d0199c012ad91ed1bbb971b7666da651c6371529b1be8cbe2a7bf3c3a9 \ - --hash=sha256:acf56d564e443e3dea152efe972b1434058244298a94348fc518d6dd6a9fb0bb \ - --hash=sha256:d3b29d717d39d3580efd760a9a46a7418408acebbb784717c90d708c9ed5f055 \ - --hash=sha256:f7d46240f7a1ae1dd95aab38bd74f7428d46531f69219954266d669da60c0818 +psycopg2==2.9.9 \ + --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ + --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ + --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ + --hash=sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa \ + --hash=sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a \ + --hash=sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693 \ + --hash=sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372 \ + --hash=sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e \ + --hash=sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59 \ + --hash=sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156 \ + --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ + --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ + --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c # via -r requirements.in ptyprocess==0.6.0 \ --hash=sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0 \ --hash=sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f # via pexpect -py==1.10.0 \ - --hash=sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3 \ - --hash=sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a - # via - # pytest - # retry +py==1.11.0 \ + --hash=sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 \ + --hash=sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378 + # via retry pyahocorasick==1.4.2 \ --hash=sha256:88f79307c74ae6a84f8d88c2522a082f1d21c425762aba7f7e4d14dd431d2fb7 # via eyecite @@ -1268,16 +1360,43 @@ pycodestyle==2.6.0 \ pycparser==2.19 \ --hash=sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3 # via cffi -pycurl==7.43.0.5 \ - --hash=sha256:1957c867e2a341f5526c107c7bbc5014d6e75fdc2a14294fcb8a47663fbd2e15 \ - --hash=sha256:50aee0469511a9708a1f1a50d510b5ec2013fc6f5e720c32bbcb3b9c7b0f45b1 \ - --hash=sha256:667db26516e50ce4a853745906f3b149c24756d85061b9d966eb7ec43a8c48a4 \ - --hash=sha256:7cc13d3421cbd31921d77e22d1f57c0e1a8d0fb461938a587689a93162ccef2f \ - --hash=sha256:a0c62dbc66b9b947832307d6cf7bdb5e4da906ce7b3efe6f74292e8f3dc5abe3 \ - --hash=sha256:a6966e8d9ccda31c6d077c4f8673aaa88141cc73d50e110e93e627b816d17fd1 \ - --hash=sha256:beadfa7f052626864d70eb33cec8f2aeece12dfb483c2424cc07b057f83b7d35 \ - --hash=sha256:c5c379c8cc777dda397f86f0d0049480250ae84a82a9d99d668f461d368fb39c \ - --hash=sha256:ec7dd291545842295b7b56c12c90ffad2976cc7070c98d7b1517b7b6cd5994b3 +pycurl==7.45.3 \ + --hash=sha256:0c41a172d5e8a5cdd8328cc8134f47b2a57960ac677f7cda8520eaa9fbe7d990 \ + --hash=sha256:0f0e1251a608ffd75fc502f4014442e554c67d3d7a1b0a839c35efb6ad2f8bf8 \ + --hash=sha256:13006b62c157bb4483c58e1abdced6df723c9399255a4f5f6bb7f8e425106679 \ + --hash=sha256:1610cc45b5bc8b39bc18b981d0473e59ef41226ee467eaa8fbfc7276603ef5af \ + --hash=sha256:1e0d32d6ed3a7ba13dbbd3a6fb50ca76c40c70e6bc6fe347f90677478d3422c7 \ + --hash=sha256:205983e87d6aa0b6e93ec7320060de44efaa905ecc5d13f70cbe38c65684c5c4 \ + --hash=sha256:27f4c5c20c86a9a823677316724306fb1ce3b25ec568efd52026dc6c563e5b29 \ + --hash=sha256:2c8a2ce568193f9f84763717d8961cec0db4ec1aa08c6bcf4d90da5eb72bec86 \ + --hash=sha256:2facab1c35600088cb82b5b093bd700bfbd1e3191deab24f7d1803d9dc5b76fc \ + --hash=sha256:3648ed9a57a6b704673faeab3dc64d1469cc69f2bc1ed8227ffa0f84e147c500 \ + --hash=sha256:3d07c5daef2d0d85949e32ec254ee44232bb57febb0634194379dd14d1ff4f87 \ + --hash=sha256:43c5e61a58783ddf78ef84949f6bb6e52e092a13ec67678e9a9e21071ecf5b80 \ + --hash=sha256:483f3aa5d1bc8cff5657ad96f68e1d89281f971a7b6aa93408a31e3199981ea9 \ + --hash=sha256:51a40a56c58e63dac6145829f9e9bd66e5867a9f0741bcb9ffefab619851d44f \ + --hash=sha256:5ebc6a0ac60c371a9efaf7d55dec5820f76fdafb43a3be1e390011339dc329ae \ + --hash=sha256:7cfca02d70579853041063e53ca713d31161b8831b98d4f68c3554dc0448beec \ + --hash=sha256:80ac7c17e69ca6b76ccccb4255f7c29a2a36e5b69eb10c2adba82135d43afe8c \ + --hash=sha256:8451e8475051f16eb4776380384699cb8ddd10ea8410bcbfaee5a6fc4c046de6 \ + --hash=sha256:86f66d334deaaab20a576fb785587566081407adc703318203fe26e43277ef12 \ + --hash=sha256:8c2471af9079ad798e1645ec0b0d3d4223db687379d17dd36a70637449f81d6b \ + --hash=sha256:921c9db0c3128481954f625b3b1bc10c730100aa944d54643528f716676439ee \ + --hash=sha256:936afd9c5ff7fe7457065e878a279811787778f472f9a4e8c5df79e7728358e2 \ + --hash=sha256:9f7afe5ef0e4750ac4515baebc251ee94aaefe5de6e2e8a24668473128d69904 \ + --hash=sha256:a0f920582b8713ca87d5a288a7532607bc4454275d733fc880650d602dbe3c67 \ + --hash=sha256:b129e9ee07f80b4af957607917af46ab517b0c4e746692f6d9e50e973edba8d8 \ + --hash=sha256:beaaa4450e23d41dd0c2f2f47a4f8a171210271543550c2c556090c7eeea88f5 \ + --hash=sha256:bf613844a1647fe3d2bba1f5c9c96a62a85280123a57a8a0c8d2f37d518bc10a \ + --hash=sha256:c0915ea139f66a289edc4f9de10cb45078af1bb950491c5612969864236a2e7e \ + --hash=sha256:c2c246bc29e8762ff4c8a833ac5b4da4c797d16ab138286e8aec9b0c0a0da2d4 \ + --hash=sha256:c7c13e4268550cde14a6f4743cc8bd8c035d4cd36514d58eff70276d68954b6f \ + --hash=sha256:c854885398410fa6e88fc29f7a420a3c13b88bae9b4e10a804437b582e24f58b \ + --hash=sha256:dbf816a6d0cb71e7fd06609246bbea4eaf100649d9decf49e4eb329594f70be7 \ + --hash=sha256:dd33fd9de8907a6275c70113124aeb7eea672c1324f5d5423f203738b341697d \ + --hash=sha256:e08a06802c8c8a9d04cf3319f9230ec09062c55d2550bd48f8ada1df1431adcf \ + --hash=sha256:fa7751b614d9aa82d7a0f49ca90924c29c6cedf85a2f8687fb6a772dbfe48711 \ + --hash=sha256:fbd4a6b8654b779089c5a44af1c65c1419c2cd60718780df6d8f354eb35d6d55 # via # -r requirements.in # celery @@ -1293,30 +1412,47 @@ pygments==2.15.1 \ --hash=sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c \ --hash=sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1 # via ipython -pymupdf==1.16.11 \ - --hash=sha256:0563cbcd9c1f276a146d66b457b11b1b48513f2cb5b0904f1ab30776e3c22489 \ - --hash=sha256:13ea99724984be2dec41b21b2d1dc11cc126e7e1acef13b4aeb75c4ab1781d7a \ - --hash=sha256:2adb6ee93f30cf06ba519bcf0059f1b19d184bd13bfc5b4aee915ebc566dffef \ - --hash=sha256:32e11391b8ef2367816ae1b33f61d711a5915098f19f7c892567eee9a25f6cbe \ - --hash=sha256:46ccfcccb067ad4bcad27af9f4f4ec39a5af820a7bf954f48c9e477db6a28840 \ - --hash=sha256:490cf9f40a9532c38eb6f727b77c3f33334bc556eb157805713d529fd58f474f \ - --hash=sha256:64b0ae6bde76d77eb9cf4e5de9be5db0c36744791a8289d7db77210d8e461844 \ - --hash=sha256:6fa8b873036d0bee7e63ff30e4e9e829ac9264cf0ace014a05039e36a8caf549 \ - --hash=sha256:708452d4ca020e7da54ff1c0427b76d0f061973c8310e1c3cc6056bc42ad8e66 \ - --hash=sha256:7f0f3685427305da3cbfcd9fbdcf09dd8d433b6ff13ead89ee910d368ac1a4fb \ - --hash=sha256:90033fce59651684114dfdfaf6b7765b741b2519f9b50e6676bb847730c29dce \ - --hash=sha256:9318d2072dd9897e8b5263e720e7c4b9c8defc266dde935dacee6c711fe3ecac \ - --hash=sha256:98cd2a57b9ea2324d32e2c41b0bf3381a19e7438e9e2a147fb41c8b8e889c9c0 \ - --hash=sha256:9ae58526ff3282fc83e2e89ca2c2768bf0e70b8877cc5c6f37f739776edbc678 \ - --hash=sha256:a74ab16c43dd671d2b660a0a5749104b8676f3d12f48687bbd8bb7bd7118d500 \ - --hash=sha256:aac15051eaca45727e402a9ecd1405cb333439fbbd19f1b4e0b844b6a9e52768 \ - --hash=sha256:b9d0019f03c4d376a78c2d4ef711986d4b76938077585d3d16446627b3b9bec5 \ - --hash=sha256:c02c8fb65d778dda9c4f4b33c6f0c2899da2dea173050ce19145aa9d5252f687 \ - --hash=sha256:cfbe05a4565c27c4a20cd9108d9d0af967b910a4d17756258da116a1a6848966 \ - --hash=sha256:dc33fc827794dfe7dcb6c91cf1f0fead560004182ef0e3a70288ae13bfef9b3e \ - --hash=sha256:e2f3c5d85079a52d3c2baed745be9c2cfcdebfd45d45e99ffa6cb31168c5e912 \ - --hash=sha256:ea6ff73ec99db65d3eff9637d78d9597b396f26907d49233b3796c7fbde32fd7 +pymupdf==1.24.1 \ + --hash=sha256:02a6586979df2ad958b524ba42955beaa67fd21661616a0ed04ac07db009474c \ + --hash=sha256:0edda1024ada67603e5888f31656048d3fd53167c8b0d56f435b986eb507df8f \ + --hash=sha256:12078c0bee337de969dbd6d89ef446312794d74db365cb9ac14902b863b35414 \ + --hash=sha256:38728bb6aab9e3879aa8ac4d337be8fe838d33973f43e3b7805b86265c24f349 \ + --hash=sha256:38e6101dab2ff86c4e2444fcec8a04377ae1d6db1bef0f7a1ddab3ac6abe4d41 \ + --hash=sha256:468a8bb2b95828e0f6739fbfe509700cc0dac600f756d8cb6316316e1eba9689 \ + --hash=sha256:6427aee313e24447f57edbfc7a28aa6bbca007fe0ad77603f54a371c6c510eeb \ + --hash=sha256:6832f1d9332810760b587ad375eb84d64ec8d8f29395995b463cb5f30533a413 \ + --hash=sha256:6952d47f0f05cf9338470dda078e4533ddb876368b199ebfa2f9e6076311898b \ + --hash=sha256:6d412da9f9a73f66973eea4284776f292135906700a06c39122e862a1e3ccf58 \ + --hash=sha256:73d07e127936948a29a7dbd4c831e9eb45a60b495d72e604d454fd040fd08c5f \ + --hash=sha256:73f86eefd7f3878f112fa10791aa2e63934cf59a4c024dd54cd6fe94443c352c \ + --hash=sha256:7df966954ff0edbcd5d743c5f6fb68b3203e67534747e8753691b8ffedeaa518 \ + --hash=sha256:825c62367b01e61b4bce0cc96d45b0ec336475422cfa36de6f441b4d3389a26e \ + --hash=sha256:8489df092473d590fb14903433bd99a07dc3d2924f5a5c8ead615795f2d65a65 \ + --hash=sha256:8a81106a8bc229823736487d2492fd3af724a94521a1cd9b67849dd04b9c31ed \ + --hash=sha256:8eb292d16671166acdaa280e98cac4368298f32556f2de2ee690782a635df8ee \ + --hash=sha256:95a54611abb7322f5b10b44cbf19b605ed172df2c4c7995ad78854bc8423dd9c \ + --hash=sha256:9a3b21c8fc274ff42855ca2da65961e2319b05b75ef9e2caf25c04f9083ec79c \ + --hash=sha256:b8a5247d0cec87765481c38d2b8602f0264bf7ca6b5dc3013caf64ce46ad4d5e \ + --hash=sha256:c54ff927257b432ffd39dc6a0a46bd1120e85d192100efca021f27d4b881cfd6 \ + --hash=sha256:caf6ceb1dbebe9f70bf7dd683cc91b896604a7c62873e5b50089f9e85e85c517 \ + --hash=sha256:d1078ea265635e962693d7298bd39be64af7d1dd2c6dc663a8562e75f547f948 \ + --hash=sha256:d2b4f8956d0ca7564604491db8b29cd7872a2b4d65f1d7e16a1bccfecf84bb56 \ + --hash=sha256:dbc5d67dfd07123293993eb93bee35d329fce0bc8134b9cd5514ef75c68ffee8 \ + --hash=sha256:de5b6c4db4a2a9f28937e79135f732827c424f7444c12767cc1081c8006f0430 \ + --hash=sha256:e3f7a101a14d742c93b660b7586ab4c1491caea9062a5de9c308578a7a4f8b69 \ + --hash=sha256:e47504391908e2d721c743aed36196310a5e15355a85459c1c4ddcf8f2002fbe \ + --hash=sha256:ee9cfac470aeb6b5b7deb4f6472b7796c3132856849c635c8e56c7a371e40238 \ + --hash=sha256:f775bb56391629e81b5f870fc3dec0a0fb44cb34a92b4696b9207b31234711df \ + --hash=sha256:f7b7f2011fa522a57fb3d6a7a58bcdcf01ee59bdad536ef9eb5c3fdf1e04e6c3 # via -r requirements.in +pymupdfb==1.24.1 \ + --hash=sha256:01c8b7f0ce9166310eb28c7aebcb8d5fe12a4bc082f9b00d580095eebeaf0af5 \ + --hash=sha256:0fbcc0d2a9ce79fa38eb4e8bb5c959b582f7a49938874e9f61d1a6f5eeb1e4b8 \ + --hash=sha256:17444ea7d6897c27759880ad76af537d19779f901de82ae9548598a70f614558 \ + --hash=sha256:37179e363bf69ce9be637937c5469957b96968341dabe3ce8f4b690a82e9ad92 \ + --hash=sha256:490f7fff4dbe362bc895cefdfc5030d712311d024d357a1388d64816eb215d34 \ + --hash=sha256:ae67736058882cdd9459810a4aae9ac2b2e89ac2e916cb5fefb0f651c9739e9e + # via pymupdf pynacl==1.3.0 \ --hash=sha256:05c26f93964373fc0abe332676cb6735f0ecad27711035b9472751faa8521255 \ --hash=sha256:0c6100edd16fefd1557da078c7a31e7b7d7a52ce39fdca2bec29d4f7b6e7600c \ @@ -1348,15 +1484,13 @@ pypdf2==1.27.11 \ --hash=sha256:7162b07462542e92674d493195c1473632c1921a2986caba059c1c92a2bda8df \ --hash=sha256:c882229e0eb49ecf57288f9774eea06aacb49d1f79aa95c306c65eb08d6e47a6 # via -r requirements.in -pyquery @ https://github.com/gawel/pyquery/archive/ca82465e8c049ea5f0c18586a32169338125cffe.zip \ - --hash=sha256:8ac1b26883cf93019bc927bea2172eb1702a35c392dea24a31289763534a1173 +pyquery==2.0.0 \ + --hash=sha256:8dfc9b4b7c5f877d619bbae74b1898d5743f6ca248cfd5d72b504dd614da312f \ + --hash=sha256:963e8d4e90262ff6d8dec072ea97285dc374a2f69cad7776f4082abcf6a1d8ae # via -r requirements.in -pyrsistent==0.15.4 \ - --hash=sha256:34b47fa169d6006b32e99d4b3c4031f155e6e68ebcc107d6454852e8e0ee6533 - # via jsonschema -pytest==7.1.2 \ - --hash=sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c \ - --hash=sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45 +pytest==8.1.1 \ + --hash=sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7 \ + --hash=sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044 # via # -r requirements.in # pytest-base-url @@ -1366,9 +1500,9 @@ pytest==7.1.2 \ # pytest-playwright # pytest-redis # pytest-xdist -pytest-base-url==2.0.0 \ - --hash=sha256:e1e88a4fd221941572ccdcf3bf6c051392d2f8b6cef3e0bc7da95abec4b5346e \ - --hash=sha256:ed36fd632c32af9f1c08f2c2835dcf42ca8fcd097d6ed44a09f253d365ad8297 +pytest-base-url==2.1.0 \ + --hash=sha256:02748589a54f9e63fcbe62301d6b0496da0d10231b753e950c63e03aee745d45 \ + --hash=sha256:3ad15611778764d451927b2a53240c1a7a591b521ea44cebfe45849d2d2812e6 # via pytest-playwright pytest-cov==2.9.0 \ --hash=sha256:b6a814b8ed6247bd81ff47f038511b57fe1ce7f4cc25b9106f1a4b106f1d9322 \ @@ -1382,22 +1516,24 @@ pytest-forked==1.0.1 \ --hash=sha256:260d03fbd38d5ce41a657759e8d19bc7c8cfa6d0dcfa36c0bc9742d33bc30742 \ --hash=sha256:8d05c2e6f33cd4422571b2b1bb309720c398b0549cff499e3e4cde661875ab54 # via pytest-xdist -pytest-playwright==0.3.3 \ - --hash=sha256:83a896b1b28bfaa081ca9ea27229a06a114e106e2e62fb3d5f06544748fbc1fe \ - --hash=sha256:9bf79c633c97dd1405308b8d3600e6c8c2a200a733e2f36c5a150ba4701936f8 +pytest-playwright==0.4.4 \ + --hash=sha256:5488db4cc49028491c5130af0a2bb6b1d0b222a202217f6d14491d4c9aa67ff9 \ + --hash=sha256:df306f3a60a8631a3cfde1b95a2ed5a89203a3408dfa1154de049ca7de87c90b # via -r requirements.in -pytest-redis==2.0.0 \ - --hash=sha256:725041832a679d0fe190b7d789505b26a3ae8edcc5dc6ab1aafb1bdce8265c5f +pytest-redis==3.0.2 \ + --hash=sha256:e2fd39658f396b6ae22976b80f94c61ebda5bc2bb8fe7eabcc7a7f994f7659f8 \ + --hash=sha256:e54660e95fb1ec0feb7426523e37710ac7850380c60f9ee693c4045a6fc28ac5 # via -r requirements.in pytest-xdist==1.32.0 \ --hash=sha256:1d4166dcac69adb38eeaedb88c8fada8588348258a3492ab49ba9161f2971129 \ --hash=sha256:ba5ec9fde3410bd9a116ff7e4f26c92e02fa3d27975ef3ad03f330b3d4b54e91 # via -r requirements.in -python-dateutil==2.8.1 \ - --hash=sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c \ - --hash=sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a +python-dateutil==2.9.0.post0 \ + --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ + --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 # via # botocore + # celery # elasticsearch-dsl # faker # moto @@ -1406,61 +1542,85 @@ python-redis-lock==3.3.1 \ --hash=sha256:5316d473ce6ce86a774b9f9c110d84c3a9bd1a2abfda5d99e9c0c8a872a8e6d6 \ --hash=sha256:f0649c49341fa943f19b8fbe93c3457df8a0a85006c88134465a16401fd1e553 # via -r requirements.in -python-rocksdb @ https://github.com/bensteinberg/python-rocksdb/archive/0bf7dbeffa7aafd82835fc25c23f200b3eff48fa.zip \ - --hash=sha256:d1092af45a1d1efa3804835a2362fcf778c743b0d33063508b4666ea7eaa8069 - # via -r requirements.in python-slugify==6.1.2 \ --hash=sha256:272d106cb31ab99b3496ba085e3fea0e9e76dcde967b5e9992500d1f785ce4e1 \ --hash=sha256:7b2c274c308b62f4269a9ba701aa69a797e9bca41aeee5b3a9e79e36b6656927 # via pytest-playwright -pytz==2018.9 \ - --hash=sha256:32b0891edff07e28efe91284ed9c31e123d84bea3fd98e1f72be2508f43ef8d9 \ - --hash=sha256:d5f05e487007e29e03409f9398d074e158d920d36eb82eaf66fb1136b0c5374c +pytz==2024.1 \ + --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ + --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 # via - # celery # django # moto # pandas -pyyaml==5.4.1 \ - --hash=sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf \ - --hash=sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696 \ - --hash=sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393 \ - --hash=sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77 \ - --hash=sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922 \ - --hash=sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5 \ - --hash=sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8 \ - --hash=sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10 \ - --hash=sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc \ - --hash=sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018 \ - --hash=sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e \ - --hash=sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253 \ - --hash=sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347 \ - --hash=sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183 \ - --hash=sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541 \ - --hash=sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb \ - --hash=sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185 \ - --hash=sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc \ - --hash=sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db \ - --hash=sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa \ - --hash=sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46 \ - --hash=sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122 \ - --hash=sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b \ - --hash=sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63 \ - --hash=sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df \ - --hash=sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc \ - --hash=sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247 \ - --hash=sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6 \ - --hash=sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0 - # via swagger-spec-validator -redis==3.2.1 \ - --hash=sha256:6946b5dca72e86103edc8033019cc3814c031232d339d5f4533b02ea85685175 \ - --hash=sha256:8ca418d2ddca1b1a850afa1680a7d2fd1f3322739271de4b704e0d4668449273 +pyyaml==6.0.1 \ + --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ + --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ + --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ + --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \ + --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \ + --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \ + --hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \ + --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \ + --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \ + --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \ + --hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \ + --hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \ + --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \ + --hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \ + --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \ + --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \ + --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \ + --hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \ + --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \ + --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \ + --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \ + --hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \ + --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \ + --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \ + --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \ + --hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \ + --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ + --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ + --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ + --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \ + --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ + --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ + --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ + --hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \ + --hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \ + --hash=sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c \ + --hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \ + --hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \ + --hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \ + --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \ + --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \ + --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \ + --hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \ + --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \ + --hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \ + --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \ + --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \ + --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \ + --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ + --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ + --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f + # via -r requirements.in +redis==5.0.3 \ + --hash=sha256:4973bae7444c0fbed64a06b87446f79361cb7e4ec1538c022d696ed7a5015580 \ + --hash=sha256:5da9b8fe9e1254293756c16c008e8620b3d15fcc6dde6babde9541850e72a32d # via # -r requirements.in # celery # django-redis # pytest-redis # python-redis-lock +referencing==0.34.0 \ + --hash=sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844 \ + --hash=sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4 + # via + # jsonschema + # jsonschema-specifications regex==2021.10.21 \ --hash=sha256:0f82de529d7595011a40573cc0f27422e59cafa94943b64a4d17d966d75f2c01 \ --hash=sha256:130a002fa386c976615a2f6d6dff0fcc25da24858994a36b14d2e3129dce7de2 \ @@ -1501,52 +1661,19 @@ regex==2021.10.21 \ # via # eyecite # nltk -reporters-db==3.2.1 \ - --hash=sha256:5b095da3489a17d71a7328d22df3b1f0b8f176a2bc7b20b7a5254a7a809f10a7 \ - --hash=sha256:cc8f0d0a6333190ff7f93d2d3a0c7cd47349eca842aed693a79c7562645b312f +reporters-db==3.2.41 \ + --hash=sha256:718ba185b32d323830243c54474174dca2f2ab0325af36d8f372c0df2601dfdd \ + --hash=sha256:c25182e4d14fabde3df6ed61488b35e75924b4d3be17478add370eda8b44bd21 # via eyecite -reportlab==3.6.3 \ - --hash=sha256:0c2f479df4eb447ea0757bf60b1ac0d7ddb9980335f4f94975ee6d95bda5b8f8 \ - --hash=sha256:1055380b2dc73d5143a62451f81b2a739f605dae0e107a764efc0618293837c1 \ - --hash=sha256:169d7017687c60ddf7690cb349e24ae10d51480d93babc6f81d851aea8a01a25 \ - --hash=sha256:27ce3e8869c3f22d9d7a8092858649601e76b86e2f3032df39566343b908d929 \ - --hash=sha256:2efdb2999e1b19a16d5535aa70b5ec5f3ad003e1d366da566f23231ff81400aa \ - --hash=sha256:2fa30756c2d5d5e11321114636b0cbeffdf59ffdbcf705b902057ad3801d0d37 \ - --hash=sha256:3b85b7172b9b4ab0ae74fe0e99d9186ff04104d9158c980391f4e0a54b67f3a8 \ - --hash=sha256:3d5d9997b91ec7f2d1a2b9928ab20503cf70e8c056b445d0bc7ae29946c13623 \ - --hash=sha256:50e62429a3487722b4d7621453efc4cbeed80f3b608cad98ef8f06d191a8d0a9 \ - --hash=sha256:5785aab3b57fe4794147da8908d411c3abf900ac2bc5b0c39782205a1d8c5b51 \ - --hash=sha256:5d1280c9df17a5d36213b88d66f45a9475005ab39d79b6e9e98893a02a5a033d \ - --hash=sha256:68de7f3d3511ea45b9af6e9e4a6b6d89a86d1fe59f41583fb55e6c810ebf23d9 \ - --hash=sha256:720335d2462ed8ad5ad6ea5da509a9289fab7a78b0cdcdfd56fef5398435119d \ - --hash=sha256:7cb6a4ea5cfc08669c0ba66e900cf5c598c33fdb0e3e4ebadf892ff703d594f6 \ - --hash=sha256:7e51f0195e602c207edcf3a768a6005a10b3db786539b74eb99afe6c9fd5656a \ - --hash=sha256:ae3959094b48bdae729e838d84156d31691f0bd17c640b8b10ff0fdbbc11c031 \ - --hash=sha256:af350308e8b8720ca6db7763b56e96b37976576c1f8b0069764074dc41a19254 \ - --hash=sha256:b75a4f634e8ba89cc22ff58b9bdfd01a239b2e2fc85d086d1a2d70d08167c443 \ - --hash=sha256:bb8c380bceb3623f39a96b6bc8cf8db75857fea3f67900391763b5caee23ffa3 \ - --hash=sha256:be4f05230eb17b9c9c61a180ab0c89c30112da2823c77807a2a5ddba19365865 \ - --hash=sha256:c166a6c168232948e9b100dcab1b88a4b21efe0aa14c5c18bafd28fffffb4576 \ - --hash=sha256:c29e7cde992c56687c6f68053dea4aa3beb0d406df28738e95950d88deb38109 \ - --hash=sha256:c4e0abfa0daf0c48a6bffc46c51b2e5f6272a1d57593c51e7bc855272f763130 \ - --hash=sha256:c79f89c277f49dfd2829b9a046b20c12cd46fe69f474e4dca349e731a2397021 \ - --hash=sha256:d35cc6ae73a25b2e75b23e60d3dca0e5153dff97d9e22b28ac82712c79656fd9 \ - --hash=sha256:d57b5374a44aab9f3898c57ed3c2e6ba159878a2a37f36ddd154adf6f4b3a5c0 \ - --hash=sha256:d5b56d9912f148cca4fdc0d6c805a56931bb1a4e59e899db92a3531e78f2a9de \ - --hash=sha256:d7145d010d561c502e51795adb2e4f7534f28f12e32db0b0694081c6173c8b27 \ - --hash=sha256:d851fecf4bb6484d4038a402430f30294911aa116686624d1e79b9e3cdb1ed2c \ - --hash=sha256:d94a20b7f2aad166ffe74a77bff02d82a82c514dba6d3e431fdb14675db5c383 \ - --hash=sha256:dcbf4bcf0917cb50964a9c47198e802791eae2581e7788f43da8f50ed5744d8a \ - --hash=sha256:e8b214321e2e16209a68a4cdbe3391379845cd0da434362cf3c6d2d1053146fe \ - --hash=sha256:f0cc8308678a8136481572463e5ac92a145d2fb487aa22c842347af8a063d50a \ - --hash=sha256:f2c0977a39bea423f6a0b53faaabef3b2f8602b1d3e09c57f6952d60ad363119 +reportlab==4.1.0 \ + --hash=sha256:28a40d5000afbd8ccae15a47f7abe2841768461354bede1a9d42841132997c98 \ + --hash=sha256:3a99faf412691159c068b3ff01c15307ce2fd2cf6b860199434874e002040a84 # via -r requirements.in requests==2.31.0 \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 # via # -r requirements.in - # coreapi # geoip2 # mailchimp3 # moto @@ -1560,33 +1687,150 @@ retry==0.9.2 \ --hash=sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606 \ --hash=sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4 # via -r requirements.in -ruamel.yaml==0.15.87 \ - --hash=sha256:18078354bfcf00d51bcc17984aded80840379aed36036f078479e191b59bc059 \ - --hash=sha256:211e6ef2530f44fc3197c713892678e7fbfbc40a1db6741179d6981514be1674 \ - --hash=sha256:2e8f7cee12a2372cec4480fe81086b1fdab163f4b56e58b5592a105c52973b78 \ - --hash=sha256:48cc8e948a7ec4917bf94adff2cc1255e98f1eef5e1961889886acc4ff3a7194 \ - --hash=sha256:4a0c7f970aa0e30bc541f690fbd14aca19de1cab70787180de5083b902ec40b5 \ - --hash=sha256:5dd0ea7c5c703e8675f3caf2898a50b4dadaa52838f8e104637a452a05e03030 \ - --hash=sha256:612fb4833f1978ceb7fd7a24d86a5ebd103bcc408394f3af621293194658cf1b \ - --hash=sha256:61c421a7a2b8e2886a94fbe29866df6b99451998abaa1584b9fdc9c10c33e40b \ - --hash=sha256:6483416847980aa7090b697d177a8754c4f340683cc84abd38da7b850826687d \ - --hash=sha256:6622f3b0cae7ed6fe5d3d6a6d8d8cb9413a05b408d69a789a57b77a616bb6562 \ - --hash=sha256:80b2acde0d1b9d25e5c041960a9149480c15c6d9f4c24b8ddb381b14e9e70ea4 \ - --hash=sha256:8f9ed94be17f306485df8fd0274a30f130a73f127798657d4dc65b1f89ec7a36 \ - --hash=sha256:9a6b94cc9b6e738036426498ac9fe8ca05afea4249fb9dec1be32ce4823d5756 \ - --hash=sha256:a4b11dfe421a9836c723107a4ccc9cab9674de611ba60b8212e85526ea8bf254 \ - --hash=sha256:a55e55c6ecb5725ba472f9b811940e8d258a32fb36f5793dbc38582d6f377f3f \ - --hash=sha256:a736ab1d8c2d5566254a1a2ee38e7c5460520bcccd4a8f0feb25a4463735e5a7 \ - --hash=sha256:c29d0a3cffa5a25f5259bfeac06ffdc5e7d1fd38a0a26a6664d160192730434f \ - --hash=sha256:c33458217a8c352b59c86065c4f05f3f1ac28b01c3e1a422845c306237446bf3 \ - --hash=sha256:cc9bd3c3fa8a928f7b6e19fe8de13a61deb91f257eccbe0d16114ce8c54cdc81 \ - --hash=sha256:d63b7c828a7358ce5b03a3e2c2a3e5a7058a954f8919334cb09b3d8541d1fff6 \ - --hash=sha256:fbd301680a3563e84d667042dac1c5d50ef402ecf1f4b1763507a6877b8181ad \ - --hash=sha256:fc67e79e2f5083be6fd1000c4646e13a891585772a503f56f51f845b547fe621 - # via drf-yasg -s3transfer==0.6.1 \ - --hash=sha256:3c0da2d074bf35d6870ef157158641178a4204a6e689e82546083e31e0311346 \ - --hash=sha256:640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9 +rocksdict==0.3.23 \ + --hash=sha256:0db204a0950beb632d5c3771bafacdff678f158c045fe0326bfe64e0ae2b49e3 \ + --hash=sha256:0e09692a9ef85854d12d5b7aab0cdebbce681afc572548bc57259b1f34db9497 \ + --hash=sha256:15fb4f4ff9c65b28f24f5cf4b846c9e1113dc17d2ebb1da8cebfaea812e8bc74 \ + --hash=sha256:1a6610565d9ca005dde9bfe8d596a116902d90b6a95c00e94465df15637d066b \ + --hash=sha256:2a0ca48a11379fd925d387fcfdf1ac269b3cfa854579f1fba2d02a5263931c5c \ + --hash=sha256:2f64a510e6a8747296ee6c7b108f474f2c6aece4438dba19f545611d4f566973 \ + --hash=sha256:338f2772d286fe7c442a562e91f3443ccb9de5728a1d6de8818ae6345630a17a \ + --hash=sha256:38dd896afbd623b6d3a8d6fd31bb287ab4df3c7c3dbcb27b61d2541431f17ee2 \ + --hash=sha256:3cc24a1b7375fc6de75bd2bab89890a9d47ad45097a90914fce5f5a7995ed36b \ + --hash=sha256:3d2456d7e6e38e902dacc0d11685247ba9c2bfe3b7d9d43a7788d46eaf24b491 \ + --hash=sha256:3f2c73a698cb430e5987a9055b982225c33b7d49ef6eb117bdf4415978e50f0c \ + --hash=sha256:4045b2781d76425ead6c63168e982690082070293466d709202ef46839eedf48 \ + --hash=sha256:476f6f75335b361ca11cd6830651c2b3609407c14a4caedeba2a8ab904864be0 \ + --hash=sha256:507d71f036559256218b7ceb1ad20e07c2eeac3d1121c407b583a090d347c809 \ + --hash=sha256:6213a126c995a5777882a542226841f79dea746ba457fa6ee060d4158385e698 \ + --hash=sha256:62427f4ab972d928b9c9356134c0556f0f8c6e6a8a0052c2df453030646f18d5 \ + --hash=sha256:62dce9b1ff48f3d8048a939f87689f5d863dd877153ee2b3f2b2e52ae8e3450c \ + --hash=sha256:71c1246bb75518b3cb2c9d83a7d305a6bfeca8b02b9dd3c826022fa8286e8436 \ + --hash=sha256:765ecf9b330f3614a02a6e98cf2e0f868ca2debcc05ad8d5900ab3da45dcb2c1 \ + --hash=sha256:80ac76c9bb23edd36ffce4834ef0b30be6f07bd1529d05104f7637426c9166f8 \ + --hash=sha256:9ab84b22b3212370dcbb6bb89f50a3a502cf0c8faa1b230360e5ed184671bbf7 \ + --hash=sha256:a1726d718159400839b9c3e747e6b0362346680d69c22c7a9bb29f6105a47972 \ + --hash=sha256:b7f59bbfe6bb552e3d003c05e4cdefa6c37bfcf61b19e21d280ff75177119b0e \ + --hash=sha256:baaef3eaa95f85af511f96b1814f4881726fd8570b9512659f0dd60f05c2e2a6 \ + --hash=sha256:cc671b41d5336e14fe7df66dac6faa5ff010676ebf0cf450770c3092ee128674 \ + --hash=sha256:d31261a9607a5daebb68d23f95f47e8eede794b6bf7632d812e85d8f2f722f2b \ + --hash=sha256:dfc42feac0a0534872ae56f97fa885aefc971db28ad853be74451adddac643fb \ + --hash=sha256:e6940f8441a62f4a18a3f33bf6e456ff516a85c5993509bc9a77842dab175d9d \ + --hash=sha256:ec60d041e55c5e329130852ca01bb67ceedabc88c7d151457c8ab1147d435b23 \ + --hash=sha256:ed01dac8d48842dec925ecc0ca158ff88227273dff269292c14fb78fc6ea56ff \ + --hash=sha256:f2c36a26a9fea06682ee75f08b4b19a8cc1d308770b7f2ebc168bf6716468ad2 \ + --hash=sha256:f541c5c9734fc896eec1c9e33c8604de4f487d4d35a37680afcb80c9495344d1 \ + --hash=sha256:f86820d9d74954340eb45008dd21a50705a8df8093672979495c5226ce73b9c2 \ + --hash=sha256:fa2a80e14c002bf6b64f0532241e4067cd2635249019a3ee89b906723a93a28a \ + --hash=sha256:fa671aec33e32549a2a6f9e5c32c53134c5f49c7ab2bc6c1e0e637c4a81b4957 \ + --hash=sha256:fa7f63c340fd32540673f430882bd9ff184cd1670592620436bcfb717e56e681 + # via -r requirements.in +rpds-py==0.18.0 \ + --hash=sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f \ + --hash=sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c \ + --hash=sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76 \ + --hash=sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e \ + --hash=sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157 \ + --hash=sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f \ + --hash=sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5 \ + --hash=sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05 \ + --hash=sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24 \ + --hash=sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1 \ + --hash=sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8 \ + --hash=sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b \ + --hash=sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb \ + --hash=sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07 \ + --hash=sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1 \ + --hash=sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6 \ + --hash=sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e \ + --hash=sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e \ + --hash=sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1 \ + --hash=sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab \ + --hash=sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4 \ + --hash=sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17 \ + --hash=sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594 \ + --hash=sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d \ + --hash=sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d \ + --hash=sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3 \ + --hash=sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c \ + --hash=sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66 \ + --hash=sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f \ + --hash=sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80 \ + --hash=sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33 \ + --hash=sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f \ + --hash=sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c \ + --hash=sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022 \ + --hash=sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e \ + --hash=sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f \ + --hash=sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da \ + --hash=sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1 \ + --hash=sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688 \ + --hash=sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795 \ + --hash=sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c \ + --hash=sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98 \ + --hash=sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1 \ + --hash=sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20 \ + --hash=sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307 \ + --hash=sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4 \ + --hash=sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18 \ + --hash=sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294 \ + --hash=sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66 \ + --hash=sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467 \ + --hash=sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948 \ + --hash=sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e \ + --hash=sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1 \ + --hash=sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0 \ + --hash=sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7 \ + --hash=sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd \ + --hash=sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641 \ + --hash=sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d \ + --hash=sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9 \ + --hash=sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1 \ + --hash=sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da \ + --hash=sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3 \ + --hash=sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa \ + --hash=sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7 \ + --hash=sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40 \ + --hash=sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496 \ + --hash=sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124 \ + --hash=sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836 \ + --hash=sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434 \ + --hash=sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984 \ + --hash=sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f \ + --hash=sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6 \ + --hash=sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e \ + --hash=sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461 \ + --hash=sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c \ + --hash=sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432 \ + --hash=sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73 \ + --hash=sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58 \ + --hash=sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88 \ + --hash=sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337 \ + --hash=sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7 \ + --hash=sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863 \ + --hash=sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475 \ + --hash=sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3 \ + --hash=sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51 \ + --hash=sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf \ + --hash=sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024 \ + --hash=sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40 \ + --hash=sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9 \ + --hash=sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec \ + --hash=sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb \ + --hash=sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7 \ + --hash=sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861 \ + --hash=sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880 \ + --hash=sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f \ + --hash=sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd \ + --hash=sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca \ + --hash=sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58 \ + --hash=sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e + # via + # jsonschema + # referencing +s3transfer==0.10.1 \ + --hash=sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19 \ + --hash=sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d # via boto3 shortuuid==1.0.1 \ --hash=sha256:3c11d2007b915c43bee3e10625f068d8a349e04f0d81f08f5fa08507427ebf1f \ @@ -1597,25 +1841,20 @@ six==1.15.0 \ --hash=sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced # via # bcrypt - # courts-db # django-elasticsearch-dsl # django-elasticsearch-dsl-drf # elasticsearch-dsl # fabric3 - # jsonschema - # libsass # more-itertools # moto # packaging # paramiko # pathlib2 # pynacl - # pyrsistent # pytest-xdist # python-dateutil # reporters-db # responses - # swagger-spec-validator soupsieve==1.7.3 \ --hash=sha256:466910df7561796a60748826781ebe9a888f7a1668a636ae86783f44d10aae73 \ --hash=sha256:87db12ae79194f0ff9808d2b1641c4f031ae39ffa3cab6b907ea7c1e5e5ed445 @@ -1624,10 +1863,6 @@ sqlparse==0.4.4 \ --hash=sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3 \ --hash=sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c # via django -swagger-spec-validator==2.4.3 \ - --hash=sha256:57e29feb3aa921a9fb98bd70af148746b27c77d3207266f5571cebcce211e685 \ - --hash=sha256:62ef22eca3f429d93fddda5d793d2a1a9057d3732e7a14606e641805326ae4a6 - # via -r requirements.in text-unidecode==1.3 \ --hash=sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8 \ --hash=sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93 @@ -1636,10 +1871,6 @@ toml==0.10.1 \ --hash=sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f \ --hash=sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88 # via pep517 -tomli==2.0.1 \ - --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ - --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f - # via pytest tqdm==4.29.1 \ --hash=sha256:b856be5cb6cfaee3b2733655c7c5bbc7751291bb5d1a4f54f020af4727570b3e \ --hash=sha256:c9b9b5eeba13994a4c266aae7eef7aeeb0ba2973e431027e942b4faea139ef49 @@ -1655,35 +1886,29 @@ traitlets==5.0.5 \ typing-extensions==4.3.0 \ --hash=sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02 \ --hash=sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6 + # via pyee +tzdata==2024.1 \ + --hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \ + --hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 # via - # aiohttp - # asgiref - # async-timeout - # faker - # playwright - # pyee - # yarl -uritemplate==3.0.0 \ - --hash=sha256:01c69f4fe8ed503b2951bef85d996a9d22434d2431584b5b107b2981ff416fbd \ - --hash=sha256:1b9c467a940ce9fb9f50df819e8ddd14696f89b9a8cc87ac77952ba416e0a8fd \ - --hash=sha256:c02643cebe23fc8adb5e6becffe201185bf06c40bda5c0b4028a93f1527d011d - # via - # coreapi - # drf-yasg + # celery + # pandas urllib3==1.26.18 \ --hash=sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07 \ --hash=sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0 # via # botocore + # celery # elasticsearch # geoip2 # requests -vine==1.3.0 \ - --hash=sha256:133ee6d7a9016f177ddeaf191c1f58421a1dcc6ee9a42c58b34bed40e1d2cd87 \ - --hash=sha256:ea4947cc56d1fd6f2095c8d543ee25dad966f78692528e68b4fada11ba3f98af +vine==5.1.0 \ + --hash=sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc \ + --hash=sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0 # via # amqp # celery + # kombu wcwidth==0.2.5 \ --hash=sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784 \ --hash=sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83 @@ -1703,8 +1928,77 @@ whitenoise[brotli]==5.2.0 \ --hash=sha256:05ce0be39ad85740a78750c86a93485c40f08ad8c62a6006de0233765996e5c7 \ --hash=sha256:05d00198c777028d72d8b0bbd234db605ef6d60e9410125124002518a48e515d # via -r requirements.in -wrapt==1.11.1 \ - --hash=sha256:4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533 +wrapt==1.16.0 \ + --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ + --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ + --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ + --hash=sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e \ + --hash=sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca \ + --hash=sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0 \ + --hash=sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb \ + --hash=sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487 \ + --hash=sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40 \ + --hash=sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c \ + --hash=sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060 \ + --hash=sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202 \ + --hash=sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41 \ + --hash=sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9 \ + --hash=sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b \ + --hash=sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664 \ + --hash=sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d \ + --hash=sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362 \ + --hash=sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00 \ + --hash=sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc \ + --hash=sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1 \ + --hash=sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267 \ + --hash=sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956 \ + --hash=sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966 \ + --hash=sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1 \ + --hash=sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228 \ + --hash=sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72 \ + --hash=sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d \ + --hash=sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292 \ + --hash=sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0 \ + --hash=sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0 \ + --hash=sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36 \ + --hash=sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c \ + --hash=sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5 \ + --hash=sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f \ + --hash=sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73 \ + --hash=sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b \ + --hash=sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2 \ + --hash=sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593 \ + --hash=sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39 \ + --hash=sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389 \ + --hash=sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf \ + --hash=sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf \ + --hash=sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89 \ + --hash=sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c \ + --hash=sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c \ + --hash=sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f \ + --hash=sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440 \ + --hash=sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465 \ + --hash=sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136 \ + --hash=sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b \ + --hash=sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8 \ + --hash=sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3 \ + --hash=sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8 \ + --hash=sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6 \ + --hash=sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e \ + --hash=sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f \ + --hash=sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c \ + --hash=sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e \ + --hash=sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8 \ + --hash=sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2 \ + --hash=sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020 \ + --hash=sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35 \ + --hash=sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d \ + --hash=sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3 \ + --hash=sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537 \ + --hash=sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809 \ + --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ + --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ + --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 # via -r requirements.in xmltodict==0.11.0 \ --hash=sha256:8f8d7d40aa28d83f4109a7e8aa86e67a4df202d9538be40c0cb1d70da527b0df \ @@ -1712,51 +2006,98 @@ xmltodict==0.11.0 \ # via # -r requirements.in # moto -yarl==1.6.3 \ - --hash=sha256:00d7ad91b6583602eb9c1d085a2cf281ada267e9a197e8b7cae487dadbfa293e \ - --hash=sha256:0355a701b3998dcd832d0dc47cc5dedf3874f966ac7f870e0f3a6788d802d434 \ - --hash=sha256:15263c3b0b47968c1d90daa89f21fcc889bb4b1aac5555580d74565de6836366 \ - --hash=sha256:2ce4c621d21326a4a5500c25031e102af589edb50c09b321049e388b3934eec3 \ - --hash=sha256:31ede6e8c4329fb81c86706ba8f6bf661a924b53ba191b27aa5fcee5714d18ec \ - --hash=sha256:324ba3d3c6fee56e2e0b0d09bf5c73824b9f08234339d2b788af65e60040c959 \ - --hash=sha256:329412812ecfc94a57cd37c9d547579510a9e83c516bc069470db5f75684629e \ - --hash=sha256:4736eaee5626db8d9cda9eb5282028cc834e2aeb194e0d8b50217d707e98bb5c \ - --hash=sha256:4953fb0b4fdb7e08b2f3b3be80a00d28c5c8a2056bb066169de00e6501b986b6 \ - --hash=sha256:4c5bcfc3ed226bf6419f7a33982fb4b8ec2e45785a0561eb99274ebbf09fdd6a \ - --hash=sha256:547f7665ad50fa8563150ed079f8e805e63dd85def6674c97efd78eed6c224a6 \ - --hash=sha256:5b883e458058f8d6099e4420f0cc2567989032b5f34b271c0827de9f1079a424 \ - --hash=sha256:63f90b20ca654b3ecc7a8d62c03ffa46999595f0167d6450fa8383bab252987e \ - --hash=sha256:68dc568889b1c13f1e4745c96b931cc94fdd0defe92a72c2b8ce01091b22e35f \ - --hash=sha256:69ee97c71fee1f63d04c945f56d5d726483c4762845400a6795a3b75d56b6c50 \ - --hash=sha256:6d6283d8e0631b617edf0fd726353cb76630b83a089a40933043894e7f6721e2 \ - --hash=sha256:72a660bdd24497e3e84f5519e57a9ee9220b6f3ac4d45056961bf22838ce20cc \ - --hash=sha256:73494d5b71099ae8cb8754f1df131c11d433b387efab7b51849e7e1e851f07a4 \ - --hash=sha256:7356644cbed76119d0b6bd32ffba704d30d747e0c217109d7979a7bc36c4d970 \ - --hash=sha256:8a9066529240171b68893d60dca86a763eae2139dd42f42106b03cf4b426bf10 \ - --hash=sha256:8aa3decd5e0e852dc68335abf5478a518b41bf2ab2f330fe44916399efedfae0 \ - --hash=sha256:97b5bdc450d63c3ba30a127d018b866ea94e65655efaf889ebeabc20f7d12406 \ - --hash=sha256:9ede61b0854e267fd565e7527e2f2eb3ef8858b301319be0604177690e1a3896 \ - --hash=sha256:b2e9a456c121e26d13c29251f8267541bd75e6a1ccf9e859179701c36a078643 \ - --hash=sha256:b5dfc9a40c198334f4f3f55880ecf910adebdcb2a0b9a9c23c9345faa9185721 \ - --hash=sha256:bafb450deef6861815ed579c7a6113a879a6ef58aed4c3a4be54400ae8871478 \ - --hash=sha256:c49ff66d479d38ab863c50f7bb27dee97c6627c5fe60697de15529da9c3de724 \ - --hash=sha256:ce3beb46a72d9f2190f9e1027886bfc513702d748047b548b05dab7dfb584d2e \ - --hash=sha256:d26608cf178efb8faa5ff0f2d2e77c208f471c5a3709e577a7b3fd0445703ac8 \ - --hash=sha256:d597767fcd2c3dc49d6eea360c458b65643d1e4dbed91361cf5e36e53c1f8c96 \ - --hash=sha256:d5c32c82990e4ac4d8150fd7652b972216b204de4e83a122546dce571c1bdf25 \ - --hash=sha256:d8d07d102f17b68966e2de0e07bfd6e139c7c02ef06d3a0f8d2f0f055e13bb76 \ - --hash=sha256:e46fba844f4895b36f4c398c5af062a9808d1f26b2999c58909517384d5deda2 \ - --hash=sha256:e6b5460dc5ad42ad2b36cca524491dfcaffbfd9c8df50508bddc354e787b8dc2 \ - --hash=sha256:f040bcc6725c821a4c0665f3aa96a4d0805a7aaf2caf266d256b8ed71b9f041c \ - --hash=sha256:f0b059678fd549c66b89bed03efcabb009075bd131c248ecdf087bdb6faba24a \ - --hash=sha256:fcbb48a93e8699eae920f8d92f7160c03567b421bc17362a9ffbbd706a816f71 +yarl==1.9.4 \ + --hash=sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51 \ + --hash=sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce \ + --hash=sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559 \ + --hash=sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0 \ + --hash=sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81 \ + --hash=sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc \ + --hash=sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4 \ + --hash=sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c \ + --hash=sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130 \ + --hash=sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136 \ + --hash=sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e \ + --hash=sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec \ + --hash=sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7 \ + --hash=sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1 \ + --hash=sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455 \ + --hash=sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099 \ + --hash=sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129 \ + --hash=sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10 \ + --hash=sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142 \ + --hash=sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98 \ + --hash=sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa \ + --hash=sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7 \ + --hash=sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525 \ + --hash=sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c \ + --hash=sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9 \ + --hash=sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c \ + --hash=sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8 \ + --hash=sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b \ + --hash=sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf \ + --hash=sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23 \ + --hash=sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd \ + --hash=sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27 \ + --hash=sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f \ + --hash=sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece \ + --hash=sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434 \ + --hash=sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec \ + --hash=sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff \ + --hash=sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78 \ + --hash=sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d \ + --hash=sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863 \ + --hash=sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53 \ + --hash=sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31 \ + --hash=sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15 \ + --hash=sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5 \ + --hash=sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b \ + --hash=sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57 \ + --hash=sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3 \ + --hash=sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1 \ + --hash=sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f \ + --hash=sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad \ + --hash=sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c \ + --hash=sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7 \ + --hash=sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2 \ + --hash=sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b \ + --hash=sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2 \ + --hash=sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b \ + --hash=sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9 \ + --hash=sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be \ + --hash=sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e \ + --hash=sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984 \ + --hash=sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4 \ + --hash=sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074 \ + --hash=sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2 \ + --hash=sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392 \ + --hash=sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91 \ + --hash=sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541 \ + --hash=sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf \ + --hash=sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572 \ + --hash=sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66 \ + --hash=sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575 \ + --hash=sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14 \ + --hash=sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5 \ + --hash=sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1 \ + --hash=sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e \ + --hash=sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551 \ + --hash=sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17 \ + --hash=sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead \ + --hash=sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0 \ + --hash=sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe \ + --hash=sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234 \ + --hash=sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0 \ + --hash=sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7 \ + --hash=sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34 \ + --hash=sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42 \ + --hash=sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385 \ + --hash=sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78 \ + --hash=sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be \ + --hash=sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958 \ + --hash=sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749 \ + --hash=sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec # via aiohttp -zipp==1.2.0 \ - --hash=sha256:c70410551488251b0fee67b460fb9a536af8d6f9f008ad10ac51f615b6a521b1 \ - --hash=sha256:e0d9e63797e483a30d27e09fffd308c59a700d365ec34e93cc100844168bf921 - # via - # importlib-metadata - # pep517 # The following packages are considered to be unsafe in a requirements file: pip==21.3.1 \ @@ -1768,8 +2109,6 @@ setuptools==65.6.3 \ --hash=sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75 # via # ipython - # jsonschema # markdown # moto # pip-tools - # python-rocksdb diff --git a/capstone/scripts/extract_cites.py b/capstone/scripts/extract_cites.py index 229e6c0bb..cd07adc8c 100644 --- a/capstone/scripts/extract_cites.py +++ b/capstone/scripts/extract_cites.py @@ -8,9 +8,9 @@ from django.conf import settings from django.db.models import Q from django.utils.text import slugify -from eyecite import annotate, resolve_citations -from eyecite.find_citations import get_citations -from eyecite.models import FullCaseCitation, CaseCitation, NonopinionCitation, FullCitation, Resource +from eyecite import annotate_citations, resolve_citations +from eyecite.find import get_citations +from eyecite.models import FullCaseCitation, CaseCitation, UnknownCitation, FullCitation, Resource from eyecite.resolve import resolve_full_citation from eyecite.tokenizers import HyperscanTokenizer, EXTRACTORS from eyecite.utils import is_balanced_html @@ -192,7 +192,7 @@ def resolve_full_cite(eyecite_cite): el_html = annot_el.html() strings_to_protect = re.findall(r']*>.*?|<[^>]+>', el_html, flags=re.S) el_html, char_mapping = encode_strings_as_unicode(el_html, strings_to_protect) - el_html = annotate(el_text, annotations, el_html, annotator=partial(annotator, char_mapping)) + el_html = annotate_citations(el_text, annotations, el_html, annotator=partial(annotator, char_mapping)) el_html = decode_unicode_to_strings(el_html, char_mapping) annot_el.html(el_html) @@ -286,7 +286,7 @@ def extract_citations_normalized(text): return list(dict.fromkeys(cites).keys()) # remove dupes while retaining order -def extract_whole_cite(text, require_classes=(CaseCitation,), ignore_classes=(NonopinionCitation,)): +def extract_whole_cite(text, require_classes=(CaseCitation,), ignore_classes=(UnknownCitation,)): """Return eyecite cite only if entire text is matched as a single cite. Otherwise return None.""" cites = list(extract_citations_from_text(text, require_classes, ignore_classes)) if len(cites) == 1 and cites[0].matched_text() == text: @@ -296,7 +296,7 @@ def extract_whole_cite(text, require_classes=(CaseCitation,), ignore_classes=(No ### INTERNAL CITE EXTRACTION HELPERS ### -def extract_citations_from_text(text, require_classes=(CaseCitation,), ignore_classes=(NonopinionCitation,)): +def extract_citations_from_text(text, require_classes=(CaseCitation,), ignore_classes=(UnknownCitation,)): """Do the actual work of fetching each eyecite cite object.""" cite_extractor = get_cite_extractor() for cite in cite_extractor(text): diff --git a/capstone/scripts/ngrams.py b/capstone/scripts/ngrams.py deleted file mode 100644 index 11d956833..000000000 --- a/capstone/scripts/ngrams.py +++ /dev/null @@ -1,205 +0,0 @@ -import random -from queue import Queue -from threading import Thread -import rocksdb -import traceback -from collections import Counter -from multiprocessing import Process, Manager -from multiprocessing.pool import Pool -from tqdm import tqdm - -from django.conf import settings - -from capdb.models import Jurisdiction, CaseMetadata, CaseBodyCache -from capdb.storages import ngram_kv_store, KVDB, ngram_kv_store_ro -from scripts.helpers import ordered_query_iterator -from scripts.tokenizer import tokenize, ngrams - - -def get_totals_key(jurisdiction_id, year, n): - return b"totals" + KVDB.pack((jurisdiction_id, year, n)) - -def ngram_jurisdictions(slug=None, max_n=3): - """ - Add jurisdiction specified by slug to rocksdb, or all jurisdictions if name not provided. - - This is the primary ngrams entrypoint. It spawns NGRAM_THREAD_COUNT worker processes to - ngram each jurisdiction-year, plus a rocksdb worker process that pulls their work off of - the queue and writes it to the database. - """ - # process pool of workers to ngram each jurisdiction-year and return keys - ngram_workers = Pool(settings.NGRAM_THREAD_COUNT, maxtasksperchild=1) - - # inter-process queue of returned keys - m = Manager() - queue = m.Queue(settings.NGRAM_THREAD_COUNT) - ngram_worker_offsets = m.dict() - ngram_worker_lock = m.Lock() - - # process to write keys to rocksdb - rocksdb_loaded = m.Condition() - rocksdb_worker = Process(target=rocksdb_writer, args=(queue, rocksdb_loaded)) - rocksdb_worker.start() - with rocksdb_loaded: - rocksdb_loaded.wait() - - # queue each jurisdiction-year for processing - jurisdictions = Jurisdiction.objects.all() - if slug: - jurisdictions = jurisdictions.filter(slug=slug) - ngram_worker_results = [] - for jurisdiction in jurisdictions: - - # skip empty jurisdictions - if not jurisdiction.case_metadatas.exists(): - continue - - # get year range - case_query = CaseMetadata.objects.in_scope().filter(jurisdiction__slug=jurisdiction.slug) - first_year = case_query.order_by('decision_date', 'id').first().decision_date.year - last_year = case_query.order_by('-decision_date', '-id').first().decision_date.year - - # ngram each year - for year in range(first_year, last_year + 1): - # ngram_worker(queue, jurisdiction_id, year, max_n) - ngram_worker_results.append((jurisdiction.slug, year, ngram_workers.apply_async(ngram_worker, (ngram_worker_offsets, ngram_worker_lock, queue, jurisdiction.id, jurisdiction.slug, year, max_n)))) - - # wait for all ngram workers to finish - ngram_workers.close() - ngram_workers.join() - - # report failures - for jurisdiction_slug, year, result in ngram_worker_results: - if not result._success: - exc = result._value - print("%s-%s failed:" % (jurisdiction_slug, year)) - traceback.print_exception(etype=type(exc), value=exc, tb=exc.__traceback__) - - # tell rocksdb worker to exit, and wait for it to finish - queue.put('STOP') - rocksdb_worker.join() - -def ngram_worker(ngram_worker_offsets, ngram_worker_lock, queue, jurisdiction_id, jurisdiction_slug, year, max_n): - """ - Worker process to generate all ngrams for the given jurisdiction-year and add them to the queue. - """ - # skip reindexing jurisdiction-year combinations that already have ngrams - if ngram_kv_store_ro.get(get_totals_key(jurisdiction_id, year, 3)): - return - - # tqdm setup -- add an offset based on current process index, plus space for rocksdb worker - desc = "%s-%s" % (jurisdiction_slug, year) - with ngram_worker_lock: - line_offset = next((i for i in range(settings.NGRAM_THREAD_COUNT) if i not in ngram_worker_offsets), None) - if line_offset is None: - line_offset = random.shuffle(ngram_worker_offsets.keys())[0] - ngram_worker_offsets[line_offset] = True - pos = 2 + settings.NGRAM_THREAD_COUNT + line_offset - - # count words for each case - counters = {n: {'total_tokens':0, 'total_documents':0, 'instances': Counter(), 'documents': Counter()} for n in range(1, max_n + 1)} - queryset = CaseBodyCache.objects.filter( - metadata__duplicative=False, metadata__jurisdiction__isnull=False, metadata__court__isnull=False, - metadata__decision_date__year=year, metadata__jurisdiction__slug=jurisdiction_slug - ).only('text').order_by('id') - for case_text in tqdm(ordered_query_iterator(queryset), desc="Ngram %s" % desc, position=pos, mininterval=.5): - tokens = list(tokenize(case_text.text)) - for n in range(1, max_n + 1): - grams = list(' '.join(gram) for gram in ngrams(tokens, n)) - counters[n]['total_tokens'] = counters[n].setdefault('total_tokens', 0) + len(grams) - counters[n]['total_documents'] = counters[n].setdefault('total_documents', 0) + 1 - counters[n]['instances'].update(grams) - counters[n]['documents'].update(set(grams)) - - # enqueue data for rocksdb - storage_year = year - 1900 - for n, counts in counters.items(): - - # skip storing jurisdiction-year combinations that already have ngrams - totals_key = get_totals_key(jurisdiction_id, year, n) - if ngram_kv_store_ro.get(totals_key): - print(" - Length %s already in totals" % n) - continue - - # set up values for use by rocksdb_write_thread() - totals = (totals_key, [counts['total_tokens'], counts['total_documents']]) - merge_value_prefix = (jurisdiction_id, storage_year) - - # prepare list of all ngram observations to be merged into rocksdb, in the form: - # merges = [ - # (b'': (, )), ... - # ] - key_prefix = bytes([int(n)]) - count_pairs = zip(sorted(counts['instances'].items()), sorted(counts['documents'].items())) - merges = [(key_prefix+gram.encode('utf8'), (instance_count, document_count)) for (gram, instance_count), (_, document_count) in count_pairs] - queue.put((totals, merge_value_prefix, merges)) - - del ngram_worker_offsets[line_offset] - -def rocksdb_writer(queue, rocksdb_loaded): - """ - Worker process to pull ngrams off of the queue and add them to a second internal queue for writing to rocksdb. - This spawns NGRAM_THREAD_COUNT threads to do the actual writing. - """ - # make sure the database exists; read-only clients in ngram_worker() will choke if it doesn't - ngram_kv_store.get(b'init') - with rocksdb_loaded: - rocksdb_loaded.notify_all() - - # NOTE: the following is a lower-level way to do something we could just do with multiprocessing.ThreadPool. - # Unfortunately ThreadPool doesn't let us set a max queue size for adding tasks to the queue, which is needed for backpressure. - - # start an internal queue and threads to read from it - internal_queue = Queue(settings.NGRAM_THREAD_COUNT) - threads = [] - for i in range(settings.NGRAM_THREAD_COUNT): - t = Thread(target=rocksdb_write_thread, args=(internal_queue,)) - t.start() - threads.append(t) - - # pull all items off of the inter-process queue and onto the internal queue - for item in tqdm(iter(queue.get, 'STOP'), position=0, desc="Jurisdiction-years written", mininterval=.5): - internal_queue.put(item) - - # block until all tasks are done - internal_queue.join() - - # stop worker threads - for i in range(settings.NGRAM_THREAD_COUNT): - internal_queue.put(None) - for t in threads: - t.join() - -def rocksdb_write_thread(queue): - """ - Worker thread to write ngrams to rocksdb, spawned by rocksdb_writer. - """ - while True: - try: - # fetch items until 'None' is added to queue - item = queue.get() - if item is None: - break - totals, merge_value_prefix, merges = item - - # skip storing jurisdiction-year combinations that already have ngrams - if ngram_kv_store.get(totals[0]): - continue - - # write in a batch so writes succeed or fail as a group - batch = rocksdb.WriteBatch() - - # write each ngram, in the form (b'', pack(, , , )) - # see ngram_kv_store.NgramMergeOperator for how this value is merged into the existing b'' key - for k, v in tqdm(merges, desc="Current write job", mininterval=.5): - ngram_kv_store.merge(k, merge_value_prefix+v, packed=True, batch=batch) - - # write totals value - ngram_kv_store.put(totals[0], totals[1], packed=True, batch=batch) - - # write batch - ngram_kv_store.db.write(batch) - finally: - # let internal_queue.join() know not to wait for this job to complete - queue.task_done() - diff --git a/capstone/scripts/tests/test_ngrams.py b/capstone/scripts/tests/test_ngrams.py deleted file mode 100644 index 52e05c048..000000000 --- a/capstone/scripts/tests/test_ngrams.py +++ /dev/null @@ -1,23 +0,0 @@ -from flaky import flaky - -from capapi.views.api_views import NgramViewSet - - -@flaky(max_runs=10) # ngrammed_cases call to ngram_jurisdictions doesn't reliably work because it uses multiprocessing within pytest environment -def test_ngrams(request): - ngrammed_cases = request.getfixturevalue('ngrammed_cases') # load fixture inside test so flaky() can catch errors - from capdb.storages import ngram_kv_store_ro # import here so pytest won't inspect and un-lazy it during test collection - - # check totals - totals = NgramViewSet.load_totals() - # keys are (jur.id, year, n), values are [gram count, document count] - assert totals[(None, None, 3)] == [6, 3] - assert totals[(None, 2000, 3)] == [6, 3] - assert totals[(ngrammed_cases[1].jurisdiction_id, 2000, 3)] == [4, 2] - - # check trigram values - trigrams = {"one two three", "three don't don't", "two three don't", "two three four"} - stored = {k.decode('utf8')[1:]: v for k, v in ngram_kv_store_ro.get_prefix(b'\3', packed=True)} - assert trigrams == set(stored.keys()) - assert stored["one two three"] == {None: {None: [2, 2], 100: [2, 2]}, ngrammed_cases[0].jurisdiction_id: [100, 1, 1], ngrammed_cases[1].jurisdiction_id: [100, 1, 1]} - diff --git a/capstone/test_data/test_fixtures/fixtures.py b/capstone/test_data/test_fixtures/fixtures.py index 7b7f37805..6c9b3ed53 100644 --- a/capstone/test_data/test_fixtures/fixtures.py +++ b/capstone/test_data/test_fixtures/fixtures.py @@ -222,16 +222,7 @@ def file_storage(tmpdir): @pytest.fixture -def mock_ngram_storage(tmpdir): - with mock.patch('capdb.storages.ngram_kv_store._wrapped', SimpleLazyObject(lambda: capdb.storages.NgramRocksDB(path=str(tmpdir)))), \ - mock.patch('capdb.storages.ngram_kv_store_ro._wrapped', SimpleLazyObject(lambda: capdb.storages.NgramRocksDB(path=str(tmpdir), read_only=True))): - yield None - - -@pytest.fixture -def ngrammed_cases(mock_ngram_storage, case_factory, jurisdiction_factory): - import scripts.ngrams - +def ngrammed_cases(case_factory, jurisdiction_factory): # set up two jurisdictions jur0 = jurisdiction_factory(slug='jur0') jur1 = jurisdiction_factory(slug='jur1') @@ -247,10 +238,6 @@ def ngrammed_cases(mock_ngram_storage, case_factory, jurisdiction_factory): for (jur, text) in case_settings ] - # run ngram code - scripts.ngrams.ngram_jurisdictions() - scripts.ngrams.ngram_kv_store_ro.open() # re-open so we can see the new values - return cases