diff --git a/docs/changes/5.5.1.md b/docs/changes/5.5.1.md
index a1e0eb8d68..d0823a3801 100644
--- a/docs/changes/5.5.1.md
+++ b/docs/changes/5.5.1.md
@@ -12,7 +12,8 @@ Release date: `2024-xx-xx`
### Direct Transfer
-- [NXDRIVE-2](https://jira.nuxeo.com/browse/NXDRIVE-2):
+- [NXDRIVE-2909](https://jira.nuxeo.com/browse/NXDRIVE-2909): Set container title when defining the Folder type from Document Type Selection using Direct Transfer
+- [NXDRIVE-2915](https://jira.nuxeo.com/browse/NXDRIVE-2915): Translate "Document type" and "container type" labels on Direct Transfer popup
### Task Management
- [NXDRIVE-2](https://jira.nuxeo.com/browse/NXDRIVE-2):
@@ -20,10 +21,12 @@ Release date: `2024-xx-xx`
## GUI
- [NXDRIVE-2](https://jira.nuxeo.com/browse/NXDRIVE-2):
+- [NXDRIVE-2962] (https://jira.nuxeo.com/browse/NXDRIVE-2962): Update Translation Files
## Packaging / Build
-- [NXDRIVE-2](https://jira.nuxeo.com/browse/NXDRIVE-2):
+- [NXDRIVE-2970](https://jira.nuxeo.com/browse/NXDRIVE-2970): Fix security issue: urllib3's Proxy-Authorization request header isn't stripped during cross-origin redirects
+- [NXDRIVE-2971](https://jira.nuxeo.com/browse/NXDRIVE-2971): Fix security issue: pyca/cryptography has a vulnerable OpenSSL included in cryptography wheels
## Tests
@@ -36,8 +39,13 @@ Release date: `2024-xx-xx`
## Minor Changes
- Upgraded `authlib` from 1.3.0 to 1.3.1
-- Upgraded `black` from 23.12.1 to 24.8.0
+- Upgraded `boto3` from 1.34.17 to 1.35.21
+- Upgraded `botocore` from 1.34.17 to 1.35.21
+- Upgraded `cachetools` from 5.3.3 to 5.5.0
- Upgraded `certifi` from 2023.7.22 to 2024.7.4
+- Upgraded `cryptography` from 42.0.5 to 43.0.1
+- Upgraded `docutils` from 0.20.1 to 0.21.2
+- Upgraded `filelock` from 3.14.0 to 3.16.1
- Upgraded `flake8` from 6.1.0 to 7.1.1
- Upgraded `typing-extensions` from 4.9.0 to 4.12.2
- Upgraded `pre-commit` from 2.16.0 to 3.8.0
@@ -46,6 +54,7 @@ Release date: `2024-xx-xx`
- Upgraded `pyflakes` from 3.1.0 to 3.2.0
- Upgraded `pytest-benchmark` from 3.4.1 to 4.0.0
- Upgraded `setuptools` from 69.5.1 to 72.1.0
+- Upgraded `urllib3` from 1.26.12 to 1.26.19
- Upgraded `zipp` from 3.18.0 to 3.20.0
## Technical Changes
diff --git a/nxdrive/client/uploader/direct_transfer.py b/nxdrive/client/uploader/direct_transfer.py
index 95143edfe5..d957af4c03 100644
--- a/nxdrive/client/uploader/direct_transfer.py
+++ b/nxdrive/client/uploader/direct_transfer.py
@@ -90,7 +90,9 @@ def upload(
"entity-type": "document",
"name": doc_pair.local_name,
"type": doc_pair.doc_type,
- "properties{'dc:title'}": doc_pair.local_name,
+ "properties": {
+ "dc:title": doc_pair.local_name,
+ },
}
item = self.remote.upload_folder_type(
doc_pair.remote_parent_path,
diff --git a/nxdrive/data/i18n/i18n-fr.json b/nxdrive/data/i18n/i18n-fr.json
index b2b50a714f..a68c266b1f 100644
--- a/nxdrive/data/i18n/i18n-fr.json
+++ b/nxdrive/data/i18n/i18n-fr.json
@@ -29,7 +29,7 @@
"CHANNEL": "Canal",
"CHANNEL_CHANGE_SETTINGS": "Canal de mise à jour",
"CHANNEL_CONFIRM_DANGEROUS": "Confirmer le canal de développement ?",
- "CHOOSE_PARTICIPANTS": "Choisir les participants",
+ "CHOOSE_PARTICIPANTS": "Choisir les participants %1",
"CLOSE": "Fermer",
"COMPLETED": "Terminés",
"COMPLETED_ON": "Terminée le %1",
@@ -49,7 +49,7 @@
"CONNECTION_REFUSED": "Connexion refusée",
"CONNECTION_SUCCESS": "Connexion réussie",
"CONNECTION_UNKNOWN": "Une erreur inconnue s'est produite lors de la connexion",
- "CONSOLIDATE_REVIEW": "Consolider la consultation",
+ "CONSOLIDATE_REVIEW": "Consolider la consultation %1",
"CONTAINER_TYPE": "Type de dossier",
"CONTEXT_MENU_1": "Voir en ligne",
"CONTEXT_MENU_2": "Copier le lien de partage",
@@ -403,7 +403,7 @@
"USE_LIGHT_ICONS": "Utiliser des icônes claires",
"USE_SENTRY": "Activer les rapports d'erreur",
"USERNAME": "Utilisateur",
- "VALIDATE_DOCUMENT": "Valider le document",
+ "VALIDATE_DOCUMENT": "Valider le document %1",
"WEB_AUTHENTICATION_WINDOW_TITLE": "Authentification web",
"WELCOME_MESSAGE": "Connectez-vous et synchronisez vos fichiers avec Nuxeo.",
"WINDOWS_ERROR_TITLE": "Erreur de document",
diff --git a/nxdrive/data/i18n/i18n-ja.json b/nxdrive/data/i18n/i18n-ja.json
index fd1a5a8e1f..532c20d440 100644
--- a/nxdrive/data/i18n/i18n-ja.json
+++ b/nxdrive/data/i18n/i18n-ja.json
@@ -29,7 +29,7 @@
"CHANNEL": "チャンネル",
"CHANNEL_CHANGE_SETTINGS": "チャンネルの更新",
"CHANNEL_CONFIRM_DANGEROUS": "開発チャンネルを確認しますか?",
- "CHOOSE_PARTICIPANTS": "参加者を選択",
+ "CHOOSE_PARTICIPANTS": "参加者を選択 %1",
"CLOSE": "閉じる",
"COMPLETED": "完了",
"COMPLETED_ON": "%1上で完了",
@@ -191,7 +191,7 @@
"FOLDER_USED": "別のNuxeo Driveアカウントによって使用されているフォルダ",
"FREE_DISK_SPACE": "(空きディスク容量: %1)",
"GENERATING": "生成中…",
- "GIVE_OPINION": "ご意見をお聞かせください",
+ "GIVE_OPINION": "ご意見をお聞かせください %1",
"HANDLE_TASKS": "タスクの処理",
"HELP": "ヘルプ",
"HISTORY": "履歴",
diff --git a/nxdrive/data/i18n/i18n.json b/nxdrive/data/i18n/i18n.json
index 00964d7e4f..e5a90c2921 100644
--- a/nxdrive/data/i18n/i18n.json
+++ b/nxdrive/data/i18n/i18n.json
@@ -11,11 +11,13 @@
"ADVANCED_SETTINGS": "Advanced settings",
"AGO": "ago",
"APPLY": "Apply",
+ "AUDIO": "Audio",
"AUTOLOCK": "Autolock",
"AUTH_EXPIRED": "Authentication expired",
"AUTH_UPDATE_ACTION": "Click here to log back in",
"AUTOMATIC": "Use Automatic Configuration Script",
"AUTOSTART": "Start on boot",
+ "AUTOMATICS": "Automatic",
"AUTOUPDATE": "Auto install new updates",
"AUTOUPDATE_DOWNGRADE": "Version not compatible with the server, a downgrade to %1 is needed. Synchronization won't start until then.",
"AUTOUPDATE_UPGRADE": "A new version %1 is available.",
@@ -57,7 +59,7 @@
"CONTEXT_MENU_4": "Upload content",
"CONTINUE": "Continue",
"CONTINUE_USING": "Continue using Drive %1",
- "CREATE": "Create",
+ "CREATE": "create",
"CREATE_REPORT": "Generate bug report",
"DATETIME_FORMAT": "%x %X",
"DAYS": "Day(s)",
@@ -176,12 +178,14 @@
"FEATURE_SYNCHRONIZATION": "Enable or disable the bidirectional synchronization between the local environment and the Nuxeo Platform.\nA restart is needed to apply changes.",
"FEATURE_TASKS_MANAGEMENT": "Handle your tasks from Nuxeo Drive and receive notifications and reminders when a new task is assigned to you.",
"FEEDBACK_LINK": "Something is missing? Share your feedback here.",
+ "FILE": "File",
"FILE_ALREADY_EXISTS": "There is already a file named \"%1\" in this folder. Do you want to replace it with the one you're moving?",
"FILE_ALREADY_EXISTS_HEADER": "A duplicate file has been found.",
"FILE_PATH": "Path: %1",
"FILTERS_WINDOW_TITLE": "%1 - Filters",
"FILTERS_DISABLED": "You must wait for current synchronization actions to be done before filtering some folders.",
"FINALIZING": "Finalizing ...",
+ "FOLDER": "Folder",
"FOLDER_DOES_NOT_EXISTS": "This folder does not exist",
"FOLDER_DUPLICATES_DETECTED": "Duplicate folder detected",
"FOLDER_DUPLICATES_MSG": "The following folder(s) already exist under %2:
Please rename them or process to several transfers within those folders.",
@@ -197,6 +201,7 @@
"HISTORY": "History",
"HOST": "Host",
"HOURS_AGO": "%1 hours ago",
+ "IGNORE": "Ignore",
"IGNORES_SYSTRAY": "Ignored Files (%1)",
"IGNORE_PAIR": "Ignore this error",
"IGNORE_REASON_CORRUPT": "This file is ignored because its integrity cannot be verified.",
@@ -295,11 +300,14 @@
"OPEN_ROOT_FOLDER": "Open %1 folder",
"OPEN_SETTINGS": "Open settings",
"OPEN_WINDOW": "Open window",
+ "ORDERED_FOLDER": "Ordered Folder",
"OTHER": "Other",
+ "OVERRIDE": "Override",
"PASSWORD": "Password",
"PENDING_TASKS": "Review required",
"PERSONAL_SPACE": "Personal space",
"PENDING_TASK_REVIEWS": "New task to review",
+ "PICTURE": "Picture",
"PROXY": "Proxy",
"PROXY_APPLIED": "Proxy settings have been updated",
"PROXY_CHANGE_SETTINGS": "Proxy",
@@ -404,6 +412,7 @@
"USE_SENTRY": "Enable error reporting",
"USERNAME": "Username",
"VALIDATE_DOCUMENT": "Validate the Document %1",
+ "VIDEO": "Video",
"WEB_AUTHENTICATION_WINDOW_TITLE": "Web Authentication",
"WELCOME_MESSAGE": "Set your account and synchronize your files with the Nuxeo Platform.",
"WINDOWS_ERROR_TITLE": "Document error",
diff --git a/nxdrive/gui/constants.py b/nxdrive/gui/constants.py
new file mode 100644
index 0000000000..63224edef6
--- /dev/null
+++ b/nxdrive/gui/constants.py
@@ -0,0 +1,24 @@
+from ..translator import Translator
+
+
+def get_known_types_translations() -> dict:
+ KNOWN_FOLDER_TYPES = {
+ "OrderedFolder": Translator.get("ORDERED_FOLDER"),
+ "Folder": Translator.get("FOLDER"),
+ }
+ KNOWN_FILE_TYPES = {
+ "Audio": Translator.get("AUDIO"),
+ "File": Translator.get("FILE"),
+ "Picture": Translator.get("PICTURE"),
+ "Video": Translator.get("VIDEO"),
+ }
+ DEFAULT_TYPES = {
+ "Automatic": Translator.get("AUTOMATICS"),
+ "Create": Translator.get("CREATE"),
+ }
+
+ return {
+ "FOLDER_TYPES": KNOWN_FOLDER_TYPES,
+ "FILE_TYPES": KNOWN_FILE_TYPES,
+ "DEFAULT": DEFAULT_TYPES,
+ }
diff --git a/nxdrive/gui/folders_dialog.py b/nxdrive/gui/folders_dialog.py
index 016cf93f26..891efbda97 100644
--- a/nxdrive/gui/folders_dialog.py
+++ b/nxdrive/gui/folders_dialog.py
@@ -33,6 +33,7 @@
)
from ..translator import Translator
from ..utils import find_icon, get_tree_list, sizeof_fmt
+from .constants import get_known_types_translations
from .folders_model import FilteredDocuments, FoldersOnly
from .folders_treeview import DocumentTreeView, FolderTreeView
@@ -269,6 +270,11 @@ def __init__(
"dt_last_duplicates_behavior", default="create"
)
+ _types = get_known_types_translations()
+ self.KNOWN_FOLDER_TYPES = _types.get("FOLDER_TYPES", {})
+ self.KNOWN_FILE_TYPES = _types.get("FILE_TYPES", {})
+ self.DEFAULT_TYPES = _types.get("DEFAULT", {})
+
self.vertical_layout.addWidget(self._add_group_local())
self.vertical_layout.addWidget(self._add_group_remote())
self.vertical_layout.addWidget(self._add_group_options())
@@ -407,21 +413,35 @@ def _open_duplicates_doc(self, _: bool) -> None:
"""Open the duplicates management documentation in a browser tab."""
webbrowser.open_new_tab(DOC_URL)
+ def _check_for_known_types(self, is_folder_type: bool, /) -> None:
+ if is_folder_type:
+ for key, val in self.KNOWN_FOLDER_TYPES.items():
+ if key in self.containerTypeList:
+ self.containerTypeList.remove(key)
+ self.containerTypeList.append(val)
+ else:
+ for key, val in self.KNOWN_FILE_TYPES.items():
+ if key in self.docTypeList:
+ self.docTypeList.remove(key)
+ self.docTypeList.append(val)
+
def update_file_group(self, /) -> None:
self.cbDocType.clear()
- self.cbDocType.addItem("Automatic", "create")
+ self.cbContainerType.clear()
+ if values := list(self.DEFAULT_TYPES.values()):
+ self.cbContainerType.addItem(values[0], values[1])
+ self.cbDocType.addItem(values[0], values[1])
if self.remote_folder_ref:
self.docTypeList = self.engine.remote.get_doc_enricher(
self.remote_folder_ref, "subtypes", False
)
-
+ self._check_for_known_types(False)
self.cbDocType.addItems(self.docTypeList)
- self.cbContainerType.clear()
- self.cbContainerType.addItem("Automatic", "create")
if self.remote_folder_ref:
self.containerTypeList = self.engine.remote.get_doc_enricher(
self.remote_folder_ref, "subtypes", True
)
+ self._check_for_known_types(True)
self.cbContainerType.addItems(self.containerTypeList)
def _add_subgroup_doc_type(self, layout: QVBoxLayout, /) -> None:
@@ -509,6 +529,18 @@ def _find_folders_duplicates(self) -> List[str]:
return folders
+ def get_known_type_key(self, is_folder: bool, type: str, /) -> str:
+ if type in self.DEFAULT_TYPES.values():
+ original_list = self.DEFAULT_TYPES
+ else:
+ original_list = (
+ self.KNOWN_FOLDER_TYPES if is_folder else self.KNOWN_FILE_TYPES
+ )
+ try:
+ return list(original_list.keys())[list(original_list.values()).index(type)]
+ except Exception:
+ return type
+
def accept(self) -> None:
"""Action to do when the OK button is clicked."""
super().accept()
@@ -518,9 +550,8 @@ def accept(self) -> None:
if self.cbDocType.currentIndex() == 0
else self.cbDocType.currentText()
)
- folder_duplicates = self._find_folders_duplicates()
- if folder_duplicates:
+ if folder_duplicates := self._find_folders_duplicates():
self.application.folder_duplicate_warning(
folder_duplicates,
self.remote_folder_title,
@@ -535,6 +566,8 @@ def accept(self) -> None:
doc_type = (
self.cbDocType.currentText() if self.cbDocType.currentIndex() != 0 else ""
)
+ doc_type = self.get_known_type_key(False, doc_type)
+ cont_type = self.get_known_type_key(True, cont_type)
self.engine.direct_transfer_async(
self.paths,
self.remote_folder.text(),
diff --git a/tests/functional/test_document_types.py b/tests/functional/test_document_types.py
new file mode 100644
index 0000000000..63a47909bb
--- /dev/null
+++ b/tests/functional/test_document_types.py
@@ -0,0 +1,22 @@
+from pathlib import Path
+
+from nxdrive.gui.constants import get_known_types_translations
+from nxdrive.translator import Translator
+
+
+def get_folder(folder) -> Path:
+ return Path(__file__).parent.parent / "resources" / folder
+
+
+def test_get_known_types_translations():
+ Translator(get_folder("i18n"))
+ assert Translator.locale() == "en"
+ res = get_known_types_translations()
+
+ known_folder_types = res.get("FOLDER_TYPES", {})
+ known_file_types = res.get("FILE_TYPES", {})
+ default_types = res.get("DEFAULT", {})
+
+ assert known_folder_types["Folder"] == Translator.get("FOLDER")
+ assert known_file_types["Audio"] == Translator.get("AUDIO")
+ assert default_types["Automatic"] == Translator.get("AUTOMATICS")
diff --git a/tools/deps/requirements-tox.txt b/tools/deps/requirements-tox.txt
index c53d0291bf..462bb84655 100644
--- a/tools/deps/requirements-tox.txt
+++ b/tools/deps/requirements-tox.txt
@@ -6,9 +6,9 @@ appdirs==1.4.4 \
--hash=sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128 \
--hash=sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41
# via virtualenv
-cachetools==5.3.3 \
- --hash=sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945 \
- --hash=sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105
+cachetools==5.5.0 \
+ --hash=sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292 \
+ --hash=sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a
# via tox
chardet==5.2.0 \
--hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \
@@ -22,9 +22,9 @@ distlib==0.3.8 \
--hash=sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 \
--hash=sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64
# via virtualenv
-filelock==3.14.0 \
- --hash=sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f \
- --hash=sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a
+filelock==3.16.1 \
+ --hash=sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0 \
+ --hash=sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435
# via tox
importlib-metadata==7.0.1 \
--hash=sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e \
diff --git a/tools/deps/requirements.txt b/tools/deps/requirements.txt
index 7470c82aeb..67334afb75 100644
--- a/tools/deps/requirements.txt
+++ b/tools/deps/requirements.txt
@@ -6,13 +6,13 @@ authlib==1.3.1 \
--hash=sha256:7ae843f03c06c5c0debd63c9db91f9fda64fa62a42a77419fa15fbb7e7a58917 \
--hash=sha256:d35800b973099bbadc49b42b256ecb80041ad56b7fe1216a362c7943c088f377
# via nuxeo
-boto3==1.34.17 \
- --hash=sha256:1efc02be786884034d503d59c018cf7650d0cff9fcb37cd2eb49b802a6fe6111 \
- --hash=sha256:8ca248cc84e7e859e4e276eb9c4309fa01a3e58473bf48d6c33448be870c2bb8
+boto3==1.35.21 \
+ --hash=sha256:247f88eedce9ae4e014a8fc14a9473759bb8e391460d49396a3b600fb649f33b \
+ --hash=sha256:db5fbbd10248db060f2ccce3ae17764f1641c99c8b9f51d422c26ebe25703a1e
# via nuxeo
-botocore==1.34.17 \
- --hash=sha256:7272c39032c6f1d62781e4c8445d9a1d9140c2bf52ba7ee66bf6db559c4b2427 \
- --hash=sha256:e48a662f3a6919219276b55085e8f73c3347966675f55e9d448be30cf79678ee
+botocore==1.35.21 \
+ --hash=sha256:3db9ddfe521edc0753fc8c68caef71c7806e1d2d21ce8cbabc2065b7d79192f2 \
+ --hash=sha256:db917e7d7b3a2eed1310c6496784bc813c91f020a021c2ab5f9df7d28cdb4f1d
# via boto3, s3transfer
certifi==2024.7.4 \
--hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \
@@ -80,46 +80,41 @@ charset-normalizer==2.1.1 \
--hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \
--hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f
# via requests
-cryptography==42.0.5 \
- --hash=sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee \
- --hash=sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576 \
- --hash=sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d \
- --hash=sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30 \
- --hash=sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413 \
- --hash=sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb \
- --hash=sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da \
- --hash=sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4 \
- --hash=sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd \
- --hash=sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc \
- --hash=sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8 \
- --hash=sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1 \
- --hash=sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc \
- --hash=sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e \
- --hash=sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8 \
- --hash=sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940 \
- --hash=sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400 \
- --hash=sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7 \
- --hash=sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16 \
- --hash=sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278 \
- --hash=sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74 \
- --hash=sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec \
- --hash=sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1 \
- --hash=sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2 \
- --hash=sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c \
- --hash=sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922 \
- --hash=sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a \
- --hash=sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6 \
- --hash=sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1 \
- --hash=sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e \
- --hash=sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac \
- --hash=sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7
+cryptography==43.0.1 \
+ --hash=sha256:014f58110f53237ace6a408b5beb6c427b64e084eb451ef25a28308270086494 \
+ --hash=sha256:1bbcce1a551e262dfbafb6e6252f1ae36a248e615ca44ba302df077a846a8806 \
+ --hash=sha256:203e92a75716d8cfb491dc47c79e17d0d9207ccffcbcb35f598fbe463ae3444d \
+ --hash=sha256:27e613d7077ac613e399270253259d9d53872aaf657471473ebfc9a52935c062 \
+ --hash=sha256:2bd51274dcd59f09dd952afb696bf9c61a7a49dfc764c04dd33ef7a6b502a1e2 \
+ --hash=sha256:38926c50cff6f533f8a2dae3d7f19541432610d114a70808f0926d5aaa7121e4 \
+ --hash=sha256:511f4273808ab590912a93ddb4e3914dfd8a388fed883361b02dea3791f292e1 \
+ --hash=sha256:58d4e9129985185a06d849aa6df265bdd5a74ca6e1b736a77959b498e0505b85 \
+ --hash=sha256:5b43d1ea6b378b54a1dc99dd8a2b5be47658fe9a7ce0a58ff0b55f4b43ef2b84 \
+ --hash=sha256:61ec41068b7b74268fa86e3e9e12b9f0c21fcf65434571dbb13d954bceb08042 \
+ --hash=sha256:666ae11966643886c2987b3b721899d250855718d6d9ce41b521252a17985f4d \
+ --hash=sha256:68aaecc4178e90719e95298515979814bda0cbada1256a4485414860bd7ab962 \
+ --hash=sha256:7c05650fe8023c5ed0d46793d4b7d7e6cd9c04e68eabe5b0aeea836e37bdcec2 \
+ --hash=sha256:80eda8b3e173f0f247f711eef62be51b599b5d425c429b5d4ca6a05e9e856baa \
+ --hash=sha256:8385d98f6a3bf8bb2d65a73e17ed87a3ba84f6991c155691c51112075f9ffc5d \
+ --hash=sha256:88cce104c36870d70c49c7c8fd22885875d950d9ee6ab54df2745f83ba0dc365 \
+ --hash=sha256:9d3cdb25fa98afdd3d0892d132b8d7139e2c087da1712041f6b762e4f807cc96 \
+ --hash=sha256:a575913fb06e05e6b4b814d7f7468c2c660e8bb16d8d5a1faf9b33ccc569dd47 \
+ --hash=sha256:ac119bb76b9faa00f48128b7f5679e1d8d437365c5d26f1c2c3f0da4ce1b553d \
+ --hash=sha256:c1332724be35d23a854994ff0b66530119500b6053d0bd3363265f7e5e77288d \
+ --hash=sha256:d03a475165f3134f773d1388aeb19c2d25ba88b6a9733c5c590b9ff7bbfa2e0c \
+ --hash=sha256:d75601ad10b059ec832e78823b348bfa1a59f6b8d545db3a24fd44362a1564cb \
+ --hash=sha256:de41fd81a41e53267cb020bb3a7212861da53a7d39f863585d13ea11049cf277 \
+ --hash=sha256:e710bf40870f4db63c3d7d929aa9e09e4e7ee219e703f949ec4073b4294f6172 \
+ --hash=sha256:ea25acb556320250756e53f9e20a4177515f012c9eaea17eb7587a8c4d8ae034 \
+ --hash=sha256:f98bf604c82c416bc829e490c700ca1553eafdf2912a91e23a79d97d9801372a \
+ --hash=sha256:fba1007b3ef89946dbbb515aeeb41e30203b004f0b4b00e5e16078b518563289
# via authlib, jwt
distro==1.5.0 ; sys_platform == "linux" \
--hash=sha256:df74eed763e18d10d0da624258524ae80486432cd17392d9c3d96f5e83cd2799 \
--hash=sha256:0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92
-docutils==0.20.1 \
- --hash=sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6 \
- --hash=sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b
+docutils==0.21.2 \
+ --hash=sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f \
+ --hash=sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2
# via boto3
dukpy==0.3.1 \
--hash=sha256:01a81053d74e6c19b4aac8863503e163efed1ea6609a786e1ea961d09628b4ea \
@@ -425,9 +420,9 @@ tld==0.13 \
--hash=sha256:93dde5e1c04bdf1844976eae440706379d21f4ab235b73c05d7483e074fb5629 \
--hash=sha256:f75b2be080f767ed17c2338a339eaa4fab5792586319ca819119da252f9f3749
# via pypac
-urllib3==1.26.12 \
- --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \
- --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997
+urllib3==1.26.19 \
+ --hash=sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3 \
+ --hash=sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429
# via
# botocore
# requests