* pytest.yield_fixture is a deprecated alias for pytest.fixture

* Update Django dev dependencies

* Update bleach

* Upgrade existing dependencies within the given constraints of the input files

* Fix jinja after update

* Update pip-tools

* Update django-* libraries

* Upgrade graphene-django

* Upgrade Django to 4.0

* Drop pytz

* ALLOWED_HOSTS must be a list

* Upgrade Django to 4.1

* Add workaround for the Raygun AttributeError

See:
https://github.com/MindscapeHQ/raygun4py/issues/108

* Avoid ValueError when instance doesn't have a primary key value but relationship is used.

See:
7ba6ebe914

* Upgrade Django to 4.2.11

* Drop pytz as a direct requirement
This commit is contained in:
Matjaž Horvat 2024-04-24 21:31:23 +02:00 коммит произвёл GitHub
Родитель bc889c1cad
Коммит 3d51fba96c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
23 изменённых файлов: 901 добавлений и 742 удалений

Просмотреть файл

@ -43,6 +43,10 @@
"description": "Base URL of the site. Has to be https://{app-name}.herokuapp.com.",
"required": true
},
"ALLOWED_HOSTS": {
"description": "A list of strings representing the host/domain names the site can serve. Has to be {app-name}.herokuapp.com.",
"required": true
},
"PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION": {
"value": "python",
"description": "Needed for Google AutoML Translation.",

Просмотреть файл

@ -187,6 +187,10 @@ you create:
Controls the base URL for the site, including the protocol and port.
Defaults to ``http://localhost:8000``, should always be set in production.
``ALLOWED_HOSTS``
A list of strings representing the host/domain names the site can serve.
Defaults to ``.localhost, 127.0.0.1, [::1]``, should always be set in production.
``SSH_CONFIG``
Contents of the ``~/.ssh/config`` file used when Pontoon connects to VCS
servers via SSH. Used for disabling strict key checking and setting the

Просмотреть файл

@ -59,4 +59,4 @@ It offers a query editor with:
- real-time error reporting,
- results folding,
- autogenerated docs on shapes and their fields,
- [introspection](http://docs.graphene-python.org/projects/django/en/latest/debug/) via the `__debug`.
- [introspection](http://docs.graphene-python.org/projects/django/en/latest/debug/) via the `_debug`.

Просмотреть файл

@ -125,7 +125,7 @@ class Locale(DjangoObjectType, Stats):
class Query(graphene.ObjectType):
debug = graphene.Field(DjangoDebug, name="__debug")
debug = graphene.Field(DjangoDebug, name="_debug")
# include_disabled=True will return both active and disabled projects.
# include_system=True will return both system and non-system projects.

Просмотреть файл

@ -12,7 +12,7 @@ class MockResolveInfo:
"""
def __init__(self, query, fragments=None):
self.field_asts = query.selection_set.selections
self.field_nodes = query.selection_set.selections
self.fragments = fragments

Просмотреть файл

@ -1,4 +1,4 @@
from graphql.language.ast import FragmentSpread
from graphql.language.ast import FragmentSpreadNode
def get_fields(info):
@ -35,7 +35,7 @@ def get_fields(info):
def iterate_field_names(prefix, field):
name = field.name.value
if isinstance(field, FragmentSpread):
if isinstance(field, FragmentSpreadNode):
results = []
new_prefix = prefix
sub_selection = info.fragments[name].selection_set.selections
@ -53,7 +53,7 @@ def get_fields(info):
return results
results = []
for field_ast in info.field_asts:
for field_ast in info.field_nodes:
results.extend(iterate_field_names("", field_ast))
return results

Просмотреть файл

@ -6,6 +6,10 @@ from raygun4py.middleware.django import Provider
class RaygunExceptionMiddleware(Provider, MiddlewareMixin):
def __init__(self, get_response):
super().__init__(get_response)
self._async_check()
def process_exception(self, request, exception):
# Ignore non-failure exceptions. We don't need to be notified
# of these.

Просмотреть файл

@ -3527,8 +3527,12 @@ class Translation(DirtyFieldsMixin, models.Model):
"rejected": self.rejected,
"pretranslated": self.pretranslated,
"fuzzy": self.fuzzy,
"errors": [error.message for error in self.errors.all()],
"warnings": [warning.message for warning in self.warnings.all()],
"errors": []
if not self.pk
else [error.message for error in self.errors.all()],
"warnings": []
if not self.pk
else [warning.message for warning in self.warnings.all()],
}
def mark_changed(self):

Просмотреть файл

@ -4,7 +4,7 @@ from pontoon.base.models import Translation
from pontoon.base.tests import po_file
@pytest.yield_fixture
@pytest.fixture
def translator_a(
member,
project_locale_a,
@ -17,7 +17,7 @@ def translator_a(
yield member
@pytest.yield_fixture
@pytest.fixture
def readonly_project_locale(project_locale_a):
project_locale_a.readonly = True
project_locale_a.save()
@ -25,7 +25,7 @@ def readonly_project_locale(project_locale_a):
yield project_locale_a
@pytest.yield_fixture
@pytest.fixture
def po_translation(translation_a):
"""
Some tests require entity with non-empty key.

Просмотреть файл

@ -4,7 +4,6 @@ import io
import os
import re
import pytz
import requests
import tempfile
import time
@ -451,7 +450,7 @@ def parse_time_interval(interval):
def parse_timestamp(timestamp):
return timezone.make_aware(
datetime.strptime(timestamp, "%Y%m%d%H%M"), timezone=pytz.UTC
datetime.strptime(timestamp, "%Y%m%d%H%M"), timezone=timezone.utc
)
start, end = interval.split("-")

Просмотреть файл

@ -6,7 +6,7 @@ from pontoon.checks.utils import bulk_run_checks
from pontoon.test.factories import TranslationFactory, ProjectLocaleFactory
@pytest.yield_fixture
@pytest.fixture
def batch_action(client, admin_client):
"""
Shortcut function to make API-call more readable in tests.
@ -32,7 +32,7 @@ def batch_action(client, admin_client):
return _action
@pytest.yield_fixture
@pytest.fixture
def translation_dtd_unapproved():
translation = TranslationFactory.create(
string="Test Translation",
@ -52,7 +52,7 @@ def translation_dtd_unapproved():
yield translation
@pytest.yield_fixture
@pytest.fixture
def translation_dtd_invalid_unapproved():
# Provide invalid characters in translation to cause checks to fail
translation = TranslationFactory.create(
@ -73,7 +73,7 @@ def translation_dtd_invalid_unapproved():
yield translation
@pytest.yield_fixture
@pytest.fixture
def test_batch_edit_translations_no_user(client):
"""If there are no logged-in users, the view redirects to the login page."""
response = client.post(reverse("pontoon.batch.edit.translations"))

Просмотреть файл

@ -57,7 +57,7 @@ def mock_quality_check_args(
}
@pytest.yield_fixture
@pytest.fixture
def entity_with_comment(entity_a):
"""
A simple entity that contains pre-defined key and comment.
@ -67,7 +67,7 @@ def entity_with_comment(entity_a):
return entity_a
@pytest.yield_fixture
@pytest.fixture
def plural_entity(entity_with_comment):
"""
Entity with plural string.
@ -78,7 +78,7 @@ def plural_entity(entity_with_comment):
return entity_with_comment
@pytest.yield_fixture
@pytest.fixture
def plural_translation(translation_a):
translation_a.plural_form = 1
translation_a.string = "Plural translation for entity_a"

Просмотреть файл

@ -7,13 +7,13 @@ from pontoon.base.models import Resource
from pontoon.checks.libraries import run_checks
@pytest.yield_fixture
@pytest.fixture
def run_tt_checks_mock():
with patch("pontoon.checks.libraries.translate_toolkit.run_checks") as mock:
yield mock
@pytest.yield_fixture()
@pytest.fixture()
def entity_properties_mock():
"""
Mock of entity from a .properties file.
@ -28,7 +28,7 @@ def entity_properties_mock():
yield mock
@pytest.yield_fixture()
@pytest.fixture()
def entity_dtd_mock():
"""
Mock of entity from a .dtd file.
@ -44,7 +44,7 @@ def entity_dtd_mock():
yield mock
@pytest.yield_fixture()
@pytest.fixture()
def entity_properties_plurals_mock():
"""
Mock of entity from a .properties file.
@ -59,7 +59,7 @@ def entity_properties_plurals_mock():
yield mock
@pytest.yield_fixture()
@pytest.fixture()
def entity_invalid_resource_mock():
"""
Mock of entity from a resource with unsupported filetype.
@ -74,7 +74,7 @@ def entity_invalid_resource_mock():
yield mock
@pytest.yield_fixture()
@pytest.fixture()
def entity_ftl_mock():
"""
Mock of entity from a a .ftl file.

Просмотреть файл

@ -13,7 +13,7 @@ from pontoon.checks.models import (
)
@pytest.yield_fixture()
@pytest.fixture()
def translation_properties(translation_a):
resource = translation_a.entity.resource
resource.path = "test.properties"
@ -23,7 +23,7 @@ def translation_properties(translation_a):
yield translation_a
@pytest.yield_fixture
@pytest.fixture
def translation_compare_locales_warning(translation_properties):
# Create new instance
translation = Translation.objects.get(pk=translation_properties.pk)
@ -35,7 +35,7 @@ def translation_compare_locales_warning(translation_properties):
yield translation
@pytest.yield_fixture
@pytest.fixture
def translation_compare_locales_error(translation_properties):
# Create new instance
translation = Translation.objects.get(pk=translation_properties.pk)
@ -51,7 +51,7 @@ def translation_compare_locales_error(translation_properties):
yield translation
@pytest.yield_fixture
@pytest.fixture
def translation_pontoon_error(translation_a):
# Create new instance
translation = Translation.objects.get(pk=translation_a.pk)

Просмотреть файл

@ -3,7 +3,7 @@ import pytest
from pontoon.checks.libraries.translate_toolkit import run_checks
@pytest.yield_fixture()
@pytest.fixture()
def mock_locale():
"""Small mock of Locale object to make faster unit-tests."""
yield "en-US"

Просмотреть файл

@ -323,9 +323,7 @@ TEMPLATES = [
"extensions": [
"jinja2.ext.do",
"jinja2.ext.loopcontrols",
"jinja2.ext.with_",
"jinja2.ext.i18n",
"jinja2.ext.autoescape",
"django_jinja.builtins.extensions.CsrfExtension",
"django_jinja.builtins.extensions.CacheExtension",
"django_jinja.builtins.extensions.TimezoneExtension",
@ -707,27 +705,8 @@ STATICFILES_DIRS = [
os.path.join(TAGADMIN_DIR, "dist"),
]
# Set ALLOWED_HOSTS based on SITE_URL setting.
def _allowed_hosts():
host = _get_site_url_netloc() # Remove protocol and path
result = [host]
# In order to be able to use ALLOWED_HOSTS to validate URLs, we need to
# have a version of the host that contains the port. This only applies
# to local development (usually the host is localhost:8000).
if ":" in host:
host_no_port = host.rsplit(":", 1)[0]
result = [host, host_no_port]
# add values from environment variable. Needed in case of URL/domain redirections
env_vars_str = os.getenv("ALLOWED_HOSTS", "127.0.0.1:8000")
env_vars = [x.strip() for x in env_vars_str.split(",")]
result.extend(env_vars)
return result
ALLOWED_HOSTS = lazy(_allowed_hosts, list)()
allowed_hosts = os.environ.get("ALLOWED_HOSTS")
ALLOWED_HOSTS = allowed_hosts.split(",") if allowed_hosts else []
# Auth
# The first hasher in this list will be used for new passwords.

Просмотреть файл

@ -7,7 +7,7 @@ from pontoon.checks.models import Warning, FailedCheck
from pontoon.test.factories import TranslationFactory
@pytest.yield_fixture
@pytest.fixture
def request_create_translation():
"""
Return a function to call the create_translation view with default parameters.
@ -115,7 +115,7 @@ def test_create_translation_force_suggestions(
assert Translation.objects.last().approved is False
@pytest.yield_fixture
@pytest.fixture
def properties_resource(resource_a):
"""
A resource to trigger Translate Toolkit and compare-locales checks at once.
@ -127,7 +127,7 @@ def properties_resource(resource_a):
yield resource_a
@pytest.yield_fixture
@pytest.fixture
def properties_entity(entity_a, properties_resource):
"""
An entity from properties_resource.

Просмотреть файл

@ -15,23 +15,23 @@
# Dependencies that do not come from pypi (eg. eggs from github) are listed at the end of the list.
# -------------------------------------------------------------------------------------------------
APScheduler==3.9.1.post1
bleach==3.3.0
bleach==6.1.0
celery==5.2.6
compare-locales==9.0.3
dj-database-url==0.3.0
Django==3.2.24
django-ace==1.0.5
dj-database-url==2.1.0
Django==4.2.11
django-ace==1.32.4
django-allauth==0.51.0
django-bmemcached==0.2.3
django-cors-headers==3.5.0
django-csp==3.7
django-dirtyfields==1.3.1
django-guardian==2.3.0
django-bmemcached==0.3.0
django-cors-headers==4.3.1
django-csp==3.8
django-dirtyfields==1.9.2
django-guardian==2.4.0
django-jinja==2.11.0
django-notifications-hq==1.6.0
django-pipeline==2.0.6
django-notifications-hq==1.8.3
django-pipeline==3.0.0
google-cloud-translate==3.8.4
graphene-django==2.13.0
graphene-django==3.2.1
gunicorn==19.9.0
jsonfield==3.1.0
jsonschema==2.6.0
@ -46,7 +46,6 @@ PyJWT==2.4.0
python-dateutil==2.8.1
python-dotenv==0.17.0
python-levenshtein==0.12.2
pytz==2022.1
raygun4py==4.3.0
sacrebleu==2.3.1
sacremoses==0.0.43

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -17,7 +17,7 @@
# requirements/default.txt contains all dependencies required to run the project in the production environment.
-c default.txt
django-debug-toolbar==3.2.1
django-extensions==3.0.9
django-sslserver==0.19
pip-tools==6.13.0
django-debug-toolbar==4.3.0
django-extensions==3.2.3
django-sslserver==0.22
pip-tools==7.4.1

Просмотреть файл

@ -4,85 +4,82 @@
#
# ./docker/compile_requirements.sh
#
asgiref==3.4.1 \
--hash=sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9 \
--hash=sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214
asgiref==3.8.1 \
--hash=sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47 \
--hash=sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590
# via
# -c requirements/default.txt
# django
build==0.8.0 \
--hash=sha256:19b0ed489f92ace6947698c3ca8436cb0556a66e2aa2d34cd70e2a5d27cd0437 \
--hash=sha256:887a6d471c901b1a6e6574ebaeeebb45e5269a79d095fe9a8f88d6614ed2e5f0
build==1.2.1 \
--hash=sha256:526263f4870c26f26c433545579475377b2b7588b6f1eac76a001e873ae3e19d \
--hash=sha256:75e10f767a433d9a86e50d83f418e83efc18ede923ee5ff7df93b6cb0306c5d4
# via pip-tools
click==8.0.3 \
--hash=sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3 \
--hash=sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b
click==8.1.7 \
--hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \
--hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de
# via
# -c requirements/default.txt
# pip-tools
django==3.2.24 \
--hash=sha256:5dd5b787c3ba39637610fe700f54bf158e33560ea0dba600c19921e7ff926ec5 \
--hash=sha256:aaee9fb0fb4ebd4311520887ad2e33313d368846607f82a9a0ed461cd4c35b18
django==4.2.11 \
--hash=sha256:6e6ff3db2d8dd0c986b4eec8554c8e4f919b5c1ff62a5b4390c17aff2ed6e5c4 \
--hash=sha256:ddc24a0a8280a0430baa37aff11f28574720af05888c62b7cfe71d219f4599d3
# via
# -c requirements/default.txt
# django-debug-toolbar
# django-extensions
# django-sslserver
django-debug-toolbar==3.2.1 \
--hash=sha256:a5ff2a54f24bf88286f9872836081078f4baa843dc3735ee88524e89f8821e33 \
--hash=sha256:e759e63e3fe2d3110e0e519639c166816368701eab4a47fed75d7de7018467b9
django-debug-toolbar==4.3.0 \
--hash=sha256:0b0dddee5ea29b9cb678593bc0d7a6d76b21d7799cb68e091a2148341a80f3c4 \
--hash=sha256:e09b7dcb8417b743234dfc57c95a7c1d1d87a88844abd13b4c5387f807b31bf6
# via -r requirements/dev.in
django-extensions==3.0.9 \
--hash=sha256:6809c89ca952f0e08d4e0766bc0101dfaf508d7649aced1180c091d737046ea7 \
--hash=sha256:dc663652ac9460fd06580a973576820430c6d428720e874ae46b041fa63e0efa
django-extensions==3.2.3 \
--hash=sha256:44d27919d04e23b3f40231c4ab7af4e61ce832ef46d610cc650d53e68328410a \
--hash=sha256:9600b7562f79a92cbf1fde6403c04fee314608fefbb595502e34383ae8203401
# via -r requirements/dev.in
django-sslserver==0.19 \
--hash=sha256:1363835229a0585f89c42f3beca836572f3f6babdc1508f13352aed84b0924b3
django-sslserver==0.22 \
--hash=sha256:c598a363d2ccdc2421c08ddb3d8b0973f80e8e47a3a5b74e4a2896f21c2947c5
# via -r requirements/dev.in
packaging==21.3 \
--hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \
--hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522
# via
# -c requirements/default.txt
# build
pep517==0.12.0 \
--hash=sha256:931378d93d11b298cf511dd634cf5ea4cb249a28ef84160b3247ee9afb4e8ab0 \
--hash=sha256:dd884c326898e2c6e11f9e0b64940606a93eb10ea022a2e067959f3a110cf161
packaging==24.0 \
--hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
--hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
# via build
pip-tools==6.13.0 \
--hash=sha256:50943f151d87e752abddec8158622c34ad7f292e193836e90e30d87da60b19d9 \
--hash=sha256:61d46bd2eb8016ed4a924e196e6e5b0a268cd3babd79e593048720db23522bb1
pip-tools==7.4.1 \
--hash=sha256:4c690e5fbae2f21e87843e89c26191f0d9454f362d8acdbd695716493ec8b3a9 \
--hash=sha256:864826f5073864450e24dbeeb85ce3920cdfb09848a3d69ebf537b521f14bcc9
# via -r requirements/dev.in
pyparsing==3.0.6 \
--hash=sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4 \
--hash=sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81
pyproject-hooks==1.0.0 \
--hash=sha256:283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8 \
--hash=sha256:f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5
# via
# -c requirements/default.txt
# packaging
pytz==2022.1 \
--hash=sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7 \
--hash=sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c
# via
# -c requirements/default.txt
# django
sqlparse==0.4.2 \
--hash=sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae \
--hash=sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d
# build
# pip-tools
sqlparse==0.4.4 \
--hash=sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3 \
--hash=sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c
# via
# -c requirements/default.txt
# django
# django-debug-toolbar
tomli==1.2.2 \
--hash=sha256:c6ce0015eb38820eaf32b5db832dbc26deb3dd427bd5f6556cf0acac2c214fee \
--hash=sha256:f04066f68f5554911363063a30b108d2b5a5b1a010aa8b6132af78489fe3aade
tomli==2.0.1 \
--hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
--hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
# via
# build
# pep517
wheel==0.37.1 \
--hash=sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a \
--hash=sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4
# pip-tools
# pyproject-hooks
typing-extensions==4.11.0 \
--hash=sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0 \
--hash=sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a
# via
# -c requirements/default.txt
# asgiref
wheel==0.43.0 \
--hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \
--hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81
# via pip-tools
# WARNING: The following packages were not pinned, but pip requires them to be
# pinned when the requirements file includes hashes. Consider using the --allow-unsafe flag.
# pinned when the requirements file includes hashes and the requirement is not
# satisfied by a package already installed. Consider using the --allow-unsafe flag.
# pip
# setuptools

Просмотреть файл

@ -18,9 +18,9 @@ black==22.12.0 \
--hash=sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2 \
--hash=sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f
# via -r requirements/lint.in
click==8.0.3 \
--hash=sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3 \
--hash=sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b
click==8.1.7 \
--hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \
--hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de
# via black
entrypoints==0.3 \
--hash=sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19 \
@ -34,17 +34,17 @@ mccabe==0.6.1 \
--hash=sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42 \
--hash=sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f
# via flake8
mypy-extensions==0.4.3 \
--hash=sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d \
--hash=sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8
mypy-extensions==1.0.0 \
--hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \
--hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782
# via black
pathspec==0.9.0 \
--hash=sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a \
--hash=sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1
pathspec==0.12.1 \
--hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 \
--hash=sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712
# via black
platformdirs==2.4.0 \
--hash=sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2 \
--hash=sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d
platformdirs==4.2.0 \
--hash=sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068 \
--hash=sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768
# via black
pycodestyle==2.5.0 \
--hash=sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56 \
@ -58,11 +58,11 @@ pyupgrade==2.10.0 \
--hash=sha256:601427033f280d50b5b102fed1013b96f91244777772114aeb7e191762cd6050 \
--hash=sha256:b26a00db6e2d745fe5a949e1fd02c5286c3999edaf804f746c69d559c8f8b365
# via -r requirements/lint.in
tokenize-rt==4.2.1 \
--hash=sha256:08a27fa032a81cf45e8858d0ac706004fcd523e8463415ddf1442be38e204ea8 \
--hash=sha256:0d4f69026fed520f8a1e0103aa36c406ef4661417f20ca643f913e33531b3b94
tokenize-rt==5.2.0 \
--hash=sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054 \
--hash=sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289
# via pyupgrade
tomli==1.2.2 \
--hash=sha256:c6ce0015eb38820eaf32b5db832dbc26deb3dd427bd5f6556cf0acac2c214fee \
--hash=sha256:f04066f68f5554911363063a30b108d2b5a5b1a010aa8b6132af78489fe3aade
tomli==2.0.1 \
--hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
--hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
# via black

Просмотреть файл

@ -4,15 +4,103 @@
#
# ./docker/compile_requirements.sh
#
certifi==2021.10.8 \
--hash=sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872 \
--hash=sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569
certifi==2024.2.2 \
--hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \
--hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1
# via
# -c requirements/default.txt
# requests
charset-normalizer==2.0.7 \
--hash=sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0 \
--hash=sha256:f7af805c321bfa1ce6714c51f254e0d5bb5e5834039bc17db7ebe3a4cec9492b
charset-normalizer==3.3.2 \
--hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \
--hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \
--hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \
--hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \
--hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \
--hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \
--hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \
--hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \
--hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \
--hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \
--hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \
--hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \
--hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \
--hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \
--hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \
--hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \
--hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \
--hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \
--hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \
--hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \
--hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \
--hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \
--hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \
--hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \
--hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \
--hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \
--hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \
--hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \
--hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \
--hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \
--hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \
--hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \
--hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \
--hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \
--hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \
--hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \
--hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \
--hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \
--hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \
--hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \
--hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \
--hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \
--hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \
--hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \
--hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \
--hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \
--hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \
--hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \
--hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \
--hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \
--hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \
--hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \
--hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \
--hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \
--hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \
--hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \
--hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \
--hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \
--hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \
--hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \
--hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \
--hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \
--hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \
--hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \
--hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \
--hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \
--hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \
--hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \
--hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \
--hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \
--hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \
--hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \
--hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \
--hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \
--hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \
--hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \
--hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \
--hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \
--hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \
--hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \
--hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \
--hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \
--hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \
--hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \
--hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \
--hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \
--hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \
--hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \
--hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \
--hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561
# via
# -c requirements/default.txt
# requests
@ -81,36 +169,28 @@ factory-boy==3.2.1 \
--hash=sha256:a98d277b0c047c75eb6e4ab8508a7f81fb03d2cb21986f627913546ef7a2a55e \
--hash=sha256:eb02a7dd1b577ef606b75a253b9818e6f9eaf996d94449c9d5ebb124f90dc795
# via -r requirements/test.in
faker==9.8.3 \
--hash=sha256:3c997b505627e63eb54e7ec268d0669bc5b6b98c1822f632d2784d91664d5f11 \
--hash=sha256:76ad74cebe727affa1c108e17fc1d2c0be8f498ff71b25f464fb8241301fe6f2
faker==24.8.0 \
--hash=sha256:1a46466b22c6bf5925448f725f90c6e0d8bf085819906520ddaa15aec58a6df5 \
--hash=sha256:2f70a7817b4147d67c544192e169c5653060fce8aef758db0ea8823d89caac94
# via factory-boy
idna==3.3 \
--hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff \
--hash=sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d
idna==3.6 \
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
# via
# -c requirements/default.txt
# requests
iniconfig==1.1.1 \
--hash=sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3 \
--hash=sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32
iniconfig==2.0.0 \
--hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \
--hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
# via pytest
packaging==21.3 \
--hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \
--hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522
# via
# -c requirements/default.txt
# pytest
pluggy==0.13.1 \
--hash=sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0 \
--hash=sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d
packaging==24.0 \
--hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
--hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
# via pytest
pluggy==1.4.0 \
--hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \
--hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be
# via pytest
pyparsing==3.0.6 \
--hash=sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4 \
--hash=sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81
# via
# -c requirements/default.txt
# packaging
pytest==7.3.1 \
--hash=sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362 \
--hash=sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3
@ -132,9 +212,9 @@ python-dateutil==2.8.1 \
# via
# -c requirements/default.txt
# faker
requests==2.26.0 \
--hash=sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24 \
--hash=sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7
requests==2.31.0 \
--hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \
--hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1
# via
# -c requirements/default.txt
# requests-mock
@ -149,20 +229,16 @@ six==1.16.0 \
# -c requirements/default.txt
# python-dateutil
# requests-mock
text-unidecode==1.3 \
--hash=sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8 \
--hash=sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93
# via faker
tomli==1.2.2 \
--hash=sha256:c6ce0015eb38820eaf32b5db832dbc26deb3dd427bd5f6556cf0acac2c214fee \
--hash=sha256:f04066f68f5554911363063a30b108d2b5a5b1a010aa8b6132af78489fe3aade
tomli==2.0.1 \
--hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
--hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
# via
# -c requirements/lint.txt
# coverage
# pytest
urllib3==1.26.7 \
--hash=sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece \
--hash=sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844
urllib3==2.2.1 \
--hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \
--hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19
# via
# -c requirements/default.txt
# requests