Browse Source

feat: azure key vault (#14406)

* feat: azure key vault

* perf: add azure-keyvault-secrets

* perf:azure kv api

* perf: Translate

* perf: Update Dockerfile with new base image tag

* perf: Error when secret is empty

* perf: Translate

---------

Co-authored-by: halo <wuyihuangw@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
pull/14465/head
fit2bot 2 weeks ago committed by GitHub
parent
commit
e1b501c7d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      Dockerfile
  2. 3
      apps/accounts/backends/__init__.py
  3. 1
      apps/accounts/backends/azure/__init__.py
  4. 70
      apps/accounts/backends/azure/entries.py
  5. 53
      apps/accounts/backends/azure/main.py
  6. 68
      apps/accounts/backends/azure/service.py
  7. 3
      apps/accounts/backends/base.py
  8. 1
      apps/accounts/const/vault.py
  9. 385
      apps/i18n/core/en/LC_MESSAGES/django.po
  10. 344
      apps/i18n/core/ja/LC_MESSAGES/django.po
  11. 250
      apps/i18n/core/zh/LC_MESSAGES/django.po
  12. 352
      apps/i18n/core/zh_Hant/LC_MESSAGES/django.po
  13. 7
      apps/jumpserver/conf.py
  14. 7
      apps/jumpserver/settings/auth.py
  15. 2
      apps/settings/api/settings.py
  16. 19
      apps/settings/api/vault.py
  17. 47
      apps/settings/serializers/feature.py
  18. 2
      apps/settings/urls/api_urls.py
  19. 498
      poetry.lock
  20. 3
      pyproject.toml

2
Dockerfile

@ -1,4 +1,4 @@
FROM jumpserver/core-base:20241029_080218 AS stage-build
FROM jumpserver/core-base:20241105_025649 AS stage-build
ARG VERSION

3
apps/accounts/backends/__init__.py

@ -12,8 +12,7 @@ logger = get_logger(__file__)
def get_vault_client(raise_exception=False, **kwargs):
enabled = kwargs.get('VAULT_ENABLED')
tp = 'hcp' if enabled else 'local'
tp = kwargs.get('VAULT_BACKEND') if kwargs.get('VAULT_ENABLED') else VaultTypeChoices.local
try:
module_path = f'apps.accounts.backends.{tp}.main'
client = import_module(module_path).Vault(**kwargs)

1
apps/accounts/backends/azure/__init__.py

@ -0,0 +1 @@
from .main import *

70
apps/accounts/backends/azure/entries.py

@ -0,0 +1,70 @@
import sys
from abc import ABC
from common.db.utils import Encryptor
from common.utils import lazyproperty
current_module = sys.modules[__name__]
__all__ = ['build_entry']
class BaseEntry(ABC):
def __init__(self, instance):
self.instance = instance
@lazyproperty
def full_path(self):
return self.path_spec
@property
def path_spec(self):
raise NotImplementedError
def to_internal_data(self):
secret = getattr(self.instance, '_secret', None)
if secret is not None:
secret = Encryptor(secret).encrypt()
return secret
@staticmethod
def to_external_data(secret):
if secret is not None:
secret = Encryptor(secret).decrypt()
return secret
class AccountEntry(BaseEntry):
@property
def path_spec(self):
# 长度 0-127
account_id = str(self.instance.id)[:18]
path = f'assets-{self.instance.asset_id}-accounts-{account_id}'
return path
class AccountTemplateEntry(BaseEntry):
@property
def path_spec(self):
path = f'account-templates-{self.instance.id}'
return path
class HistoricalAccountEntry(BaseEntry):
@property
def path_spec(self):
path = f'accounts-{self.instance.instance.id}-histories-{self.instance.history_id}'
return path
def build_entry(instance) -> BaseEntry:
class_name = instance.__class__.__name__
entry_class_name = f'{class_name}Entry'
entry_class = getattr(current_module, entry_class_name, None)
if not entry_class:
raise Exception(f'Entry class {entry_class_name} is not found')
return entry_class(instance)

53
apps/accounts/backends/azure/main.py

@ -0,0 +1,53 @@
from common.db.utils import get_logger
from .entries import build_entry
from .service import AZUREVaultClient
from ..base import BaseVault
__all__ = ['Vault']
logger = get_logger(__name__)
class Vault(BaseVault):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.client = AZUREVaultClient(
vault_url=kwargs.get('VAULT_AZURE_HOST'),
tenant_id=kwargs.get('VAULT_AZURE_TENANT_ID'),
client_id=kwargs.get('VAULT_AZURE_CLIENT_ID'),
client_secret=kwargs.get('VAULT_AZURE_CLIENT_SECRET')
)
def is_active(self):
return self.client.is_active()
def _get(self, instance):
entry = build_entry(instance)
secret = self.client.get(name=entry.full_path)
secret = entry.to_external_data(secret)
return secret
def _create(self, instance):
entry = build_entry(instance)
secret = entry.to_internal_data()
self.client.create(name=entry.full_path, secret=secret)
def _update(self, instance):
entry = build_entry(instance)
secret = entry.to_internal_data()
self.client.update(name=entry.full_path, secret=secret)
def _delete(self, instance):
entry = build_entry(instance)
self.client.delete(name=entry.full_path)
def _clean_db_secret(self, instance):
instance.is_sync_metadata = False
instance.mark_secret_save_to_vault()
def _save_metadata(self, instance, metadata):
try:
entry = build_entry(instance)
self.client.update_metadata(name=entry.full_path, metadata=metadata)
except Exception as e:
logger.error(f'save metadata error: {e}')

68
apps/accounts/backends/azure/service.py

@ -0,0 +1,68 @@
# -*- coding: utf-8 -*-
#
from azure.core.exceptions import ResourceNotFoundError, ClientAuthenticationError
from azure.identity import ClientSecretCredential
from azure.keyvault.secrets import SecretClient
from common.utils import get_logger
logger = get_logger(__name__)
__all__ = ['AZUREVaultClient']
class AZUREVaultClient(object):
def __init__(self, vault_url, tenant_id, client_id, client_secret):
authentication_endpoint = 'https://login.microsoftonline.com/' \
if ('azure.net' in vault_url) else 'https://login.chinacloudapi.cn/'
credentials = ClientSecretCredential(
client_id=client_id, client_secret=client_secret, tenant_id=tenant_id, authority=authentication_endpoint
)
self.client = SecretClient(vault_url=vault_url, credential=credentials)
def is_active(self):
try:
self.client.set_secret('jumpserver', '666')
except (ResourceNotFoundError, ClientAuthenticationError) as e:
logger.error(str(e))
return False, f'Vault is not reachable: {e}'
else:
return True, ''
def get(self, name, version=None):
try:
secret = self.client.get_secret(name, version)
return secret.value
except (ResourceNotFoundError, ClientAuthenticationError) as e:
logger.error(f'get: {name} {str(e)}')
return ''
def create(self, name, secret):
try:
if not secret:
secret = ''
self.client.set_secret(name, secret)
except (ResourceNotFoundError, ClientAuthenticationError) as e:
logger.error(f'create: {name} {str(e)}')
def update(self, name, secret):
try:
if not secret:
secret = ''
self.client.set_secret(name, secret)
except (ResourceNotFoundError, ClientAuthenticationError) as e:
logger.error(f'update: {name} {str(e)}')
def delete(self, name):
try:
self.client.begin_delete_secret(name)
except (ResourceNotFoundError, ClientAuthenticationError) as e:
logger.error(f'delete: {name} {str(e)}')
def update_metadata(self, name, metadata: dict):
try:
self.client.update_secret_properties(name, tags=metadata)
except (ResourceNotFoundError, ClientAuthenticationError) as e:
logger.error(f'update_metadata: {name} {str(e)}')

3
apps/accounts/backends/base.py

@ -20,9 +20,6 @@ class BaseVault(ABC):
self._clean_db_secret(instance)
self.save_metadata(instance)
if instance.is_sync_metadata:
self.save_metadata(instance)
def update(self, instance):
if not instance.secret_has_save_to_vault:
self._update(instance)

1
apps/accounts/const/vault.py

@ -7,3 +7,4 @@ __all__ = ['VaultTypeChoices']
class VaultTypeChoices(models.TextChoices):
local = 'local', _('Database')
hcp = 'hcp', _('HCP Vault')
azure = 'azure', _('Azure Key Vault')

385
apps/i18n/core/en/LC_MESSAGES/django.po

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-06 11:28+0800\n"
"POT-Creation-Date: 2024-11-11 19:17+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -36,7 +36,7 @@ msgstr ""
#: accounts/automations/backup_account/handlers.py:156
#: accounts/automations/backup_account/handlers.py:295
#: accounts/automations/backup_account/manager.py:40 ops/serializers/job.py:76
#: accounts/automations/backup_account/manager.py:40 ops/serializers/job.py:82
#: settings/templates/ldap/_msg_import_ldap_user.html:7
msgid "Time cost"
msgstr ""
@ -68,7 +68,7 @@ msgstr ""
#: assets/serializers/automations/base.py:52 audits/const.py:64
#: audits/models.py:64 audits/signal_handlers/activity_log.py:33
#: common/const/choices.py:65 ops/const.py:74 ops/serializers/celery.py:48
#: terminal/const.py:78 terminal/models/session/sharing.py:121
#: terminal/const.py:80 terminal/models/session/sharing.py:121
#: tickets/views/approve.py:128
msgid "Success"
msgstr "Success"
@ -77,7 +77,7 @@ msgstr "Success"
#: accounts/const/account.py:34 accounts/const/automation.py:109
#: accounts/serializers/automations/change_secret.py:174 audits/const.py:65
#: audits/signal_handlers/activity_log.py:33 common/const/choices.py:66
#: ops/const.py:76 terminal/const.py:79 xpack/plugins/cloud/const.py:47
#: ops/const.py:76 terminal/const.py:81 xpack/plugins/cloud/const.py:47
msgid "Failed"
msgstr ""
@ -150,7 +150,7 @@ msgid "Access key"
msgstr ""
#: accounts/const/account.py:9 authentication/backends/passkey/models.py:16
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:55
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:75
msgid "Token"
msgstr ""
@ -305,12 +305,12 @@ msgstr ""
msgid "Email"
msgstr ""
#: accounts/const/automation.py:105 terminal/const.py:87
#: accounts/const/automation.py:105 terminal/const.py:89
msgid "SFTP"
msgstr ""
#: accounts/const/automation.py:111 assets/serializers/automations/base.py:54
#: common/const/choices.py:63 terminal/const.py:77 tickets/const.py:29
#: common/const/choices.py:63 terminal/const.py:79 tickets/const.py:29
#: tickets/const.py:38
msgid "Pending"
msgstr ""
@ -320,10 +320,14 @@ msgstr ""
msgid "Database"
msgstr ""
#: accounts/const/vault.py:9 settings/serializers/feature.py:46
#: accounts/const/vault.py:9 settings/serializers/feature.py:70
msgid "HCP Vault"
msgstr ""
#: accounts/const/vault.py:10 settings/serializers/feature.py:83
msgid "Azure Key Vault"
msgstr ""
#: accounts/mixins.py:35
msgid "Export all"
msgstr ""
@ -468,9 +472,9 @@ msgstr ""
#: accounts/models/automations/backup_account.py:120
#: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:89 ops/models/job.py:242
#: ops/models/base.py:55 ops/models/celery.py:89 ops/models/job.py:247
#: ops/templates/ops/celery_task_log.html:101
#: perms/models/asset_permission.py:78 settings/serializers/feature.py:25
#: perms/models/asset_permission.py:78 settings/serializers/feature.py:26
#: settings/templates/ldap/_msg_import_ldap_user.html:5
#: terminal/models/applet/host.py:141 terminal/models/session/session.py:45
#: tickets/models/ticket/apply_application.py:30
@ -507,7 +511,7 @@ msgstr ""
#: accounts/models/automations/backup_account.py:136
#: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:152
#: ops/serializers/job.py:74 terminal/serializers/session.py:54
#: ops/serializers/job.py:80 terminal/serializers/session.py:54
msgid "Is success"
msgstr "Is success"
@ -582,7 +586,7 @@ msgstr ""
#: accounts/models/automations/change_secret.py:42
#: assets/models/automations/base.py:116 ops/models/base.py:56
#: ops/models/celery.py:90 ops/models/job.py:243
#: ops/models/celery.py:90 ops/models/job.py:248
#: terminal/models/applet/host.py:142
msgid "Date finished"
msgstr ""
@ -590,7 +594,7 @@ msgstr ""
#: accounts/models/automations/change_secret.py:44
#: assets/models/automations/base.py:113
#: assets/serializers/automations/base.py:39 audits/models.py:208
#: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:234
#: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:239
#: terminal/models/applet/applet.py:331 terminal/models/applet/host.py:140
#: terminal/models/component/status.py:30
#: terminal/models/virtualapp/virtualapp.py:99
@ -665,12 +669,12 @@ msgstr ""
#: audits/models.py:92 audits/serializers.py:84
#: authentication/serializers/connect_token_secret.py:119
#: authentication/templates/authentication/_access_key_modal.html:34
#: behemoth/serializers/environment.py:13 perms/serializers/permission.py:52
#: perms/serializers/permission.py:74 tickets/serializers/ticket/ticket.py:21
#: perms/serializers/permission.py:52 perms/serializers/permission.py:74
#: tickets/serializers/ticket/ticket.py:21
msgid "Action"
msgstr ""
#: accounts/models/automations/push_account.py:57
#: accounts/models/automations/push_account.py:58
msgid "Push asset account"
msgstr ""
@ -719,13 +723,13 @@ msgstr ""
#: authentication/serializers/connect_token_secret.py:113
#: authentication/serializers/connect_token_secret.py:169 labels/models.py:11
#: ops/mixin.py:28 ops/models/adhoc.py:19 ops/models/celery.py:15
#: ops/models/celery.py:81 ops/models/job.py:142 ops/models/playbook.py:30
#: ops/serializers/job.py:18 orgs/models.py:82
#: ops/models/celery.py:81 ops/models/job.py:145 ops/models/playbook.py:28
#: ops/models/variable.py:9 ops/serializers/job.py:19 orgs/models.py:82
#: perms/models/asset_permission.py:61 rbac/models/role.py:29
#: rbac/serializers/role.py:28 settings/models.py:35 settings/models.py:184
#: settings/serializers/msg.py:89 settings/serializers/terminal.py:9
#: terminal/models/applet/applet.py:34 terminal/models/component/endpoint.py:13
#: terminal/models/component/endpoint.py:111
#: terminal/models/component/endpoint.py:112
#: terminal/models/component/storage.py:26 terminal/models/component/task.py:13
#: terminal/models/component/terminal.py:85
#: terminal/models/virtualapp/provider.py:10
@ -874,7 +878,7 @@ msgstr ""
#: assets/serializers/asset/common.py:146 assets/serializers/platform.py:159
#: assets/serializers/platform.py:171 audits/serializers.py:53
#: audits/serializers.py:170
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:153
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:40
#: terminal/models/component/storage.py:58
#: terminal/models/component/storage.py:152 terminal/serializers/applet.py:29
@ -910,10 +914,8 @@ msgstr ""
#: assets/models/automations/base.py:19
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:34
#: assets/serializers/platform.py:180 assets/serializers/platform.py:212
#: authentication/api/connection_token.py:410
#: behemoth/serializers/environment.py:11
#: behemoth/serializers/environment.py:22 ops/models/base.py:17
#: ops/models/job.py:152 ops/serializers/job.py:19
#: authentication/api/connection_token.py:410 ops/models/base.py:17
#: ops/models/job.py:155 ops/serializers/job.py:20
#: perms/serializers/permission.py:46
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:89
@ -1055,11 +1057,11 @@ msgstr ""
#: accounts/serializers/account/virtual.py:19 assets/models/cmd_filter.py:40
#: assets/models/cmd_filter.py:88 common/db/models.py:36 ops/models/adhoc.py:25
#: ops/models/job.py:158 ops/models/playbook.py:33 rbac/models/role.py:37
#: ops/models/job.py:163 ops/models/playbook.py:31 rbac/models/role.py:37
#: settings/models.py:40 terminal/models/applet/applet.py:46
#: terminal/models/applet/applet.py:332 terminal/models/applet/host.py:143
#: terminal/models/component/endpoint.py:26
#: terminal/models/component/endpoint.py:121
#: terminal/models/component/endpoint.py:27
#: terminal/models/component/endpoint.py:122
#: terminal/models/session/session.py:47
#: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32
#: tickets/models/ticket/general.py:298 users/models/user/__init__.py:91
@ -1076,7 +1078,8 @@ msgstr ""
#: accounts/serializers/automations/base.py:23
#: assets/models/asset/common.py:176 assets/serializers/asset/common.py:172
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:47
#: assets/serializers/automations/base.py:21 ops/serializers/job.py:21
#: perms/serializers/permission.py:47
msgid "Nodes"
msgstr ""
@ -1330,12 +1333,12 @@ msgid "Notify and warn"
msgstr ""
#: acls/models/base.py:37 assets/models/cmd_filter.py:76
#: terminal/models/component/endpoint.py:114 xpack/plugins/cloud/models.py:316
#: terminal/models/component/endpoint.py:115 xpack/plugins/cloud/models.py:316
msgid "Priority"
msgstr ""
#: acls/models/base.py:38 assets/models/cmd_filter.py:76
#: terminal/models/component/endpoint.py:115 xpack/plugins/cloud/models.py:317
#: terminal/models/component/endpoint.py:116 xpack/plugins/cloud/models.py:317
msgid "1-100, the lower the value will be match first"
msgstr ""
@ -1349,8 +1352,8 @@ msgstr ""
#: authentication/models/connection_token.py:53
#: authentication/models/ssh_key.py:13
#: authentication/templates/authentication/_access_key_modal.html:32
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:27
#: terminal/models/component/endpoint.py:122
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:28
#: terminal/models/component/endpoint.py:123
#: terminal/models/session/sharing.py:29 terminal/serializers/terminal.py:44
#: tickets/const.py:36
msgid "Active"
@ -1370,7 +1373,7 @@ msgid "Accounts"
msgstr ""
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:73 terminal/const.py:86
#: ops/serializers/job.py:79 terminal/const.py:88
#: terminal/models/session/session.py:43 terminal/serializers/command.py:18
#: terminal/templates/terminal/_msg_command_alert.html:12
#: terminal/templates/terminal/_msg_command_execute_alert.html:10
@ -1384,7 +1387,7 @@ msgid "Regex"
msgstr ""
#: acls/models/command_acl.py:26 assets/models/cmd_filter.py:79
#: settings/models.py:185 settings/serializers/feature.py:20
#: settings/models.py:185 settings/serializers/feature.py:21
#: settings/serializers/msg.py:78 xpack/plugins/license/models.py:30
msgid "Content"
msgstr ""
@ -1638,7 +1641,7 @@ msgid "Authentication failed"
msgstr ""
#: assets/automations/ping_gateway/manager.py:60
#: assets/automations/ping_gateway/manager.py:86 terminal/const.py:102
#: assets/automations/ping_gateway/manager.py:86 terminal/const.py:104
msgid "Connect failed"
msgstr ""
@ -1686,9 +1689,9 @@ msgstr ""
#: assets/const/category.py:10 assets/models/asset/host.py:8
#: settings/serializers/auth/radius.py:17 settings/serializers/auth/sms.py:76
#: settings/serializers/feature.py:52 settings/serializers/msg.py:30
#: terminal/models/component/endpoint.py:14 terminal/serializers/applet.py:17
#: xpack/plugins/cloud/manager.py:89
#: settings/serializers/feature.py:72 settings/serializers/feature.py:85
#: settings/serializers/msg.py:30 terminal/models/component/endpoint.py:14
#: terminal/serializers/applet.py:17 xpack/plugins/cloud/manager.py:89
#: xpack/plugins/cloud/serializers/account_attrs.py:72
msgid "Host"
msgstr ""
@ -1990,18 +1993,19 @@ msgstr ""
msgid "Postgresql SSL mode"
msgstr ""
#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:92
#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:115
msgid "Proxy"
msgstr ""
#: assets/models/automations/base.py:18 assets/models/cmd_filter.py:32
#: assets/models/node.py:553 perms/models/asset_permission.py:72
#: tickets/models/ticket/apply_asset.py:14 xpack/plugins/cloud/models.py:388
#: assets/models/node.py:553 ops/models/job.py:156
#: perms/models/asset_permission.py:72 tickets/models/ticket/apply_asset.py:14
#: xpack/plugins/cloud/models.py:388
msgid "Node"
msgstr ""
#: assets/models/automations/base.py:22 ops/models/job.py:237
#: settings/serializers/auth/sms.py:108
#: assets/models/automations/base.py:22 ops/models/job.py:242
#: ops/serializers/job.py:23 settings/serializers/auth/sms.py:108
msgid "Parameters"
msgstr ""
@ -2014,7 +2018,7 @@ msgid "Asset automation task"
msgstr ""
#: assets/models/automations/base.py:114 assets/models/cmd_filter.py:41
#: common/db/models.py:34 ops/models/base.py:54 ops/models/job.py:241
#: common/db/models.py:34 ops/models/base.py:54 ops/models/job.py:246
#: users/models/user/__init__.py:311
msgid "Date created"
msgstr ""
@ -2146,7 +2150,7 @@ msgstr ""
msgid "Primary"
msgstr ""
#: assets/models/platform.py:18
#: assets/models/platform.py:18 ops/models/variable.py:20
msgid "Required"
msgstr ""
@ -2682,7 +2686,7 @@ msgstr "Labels"
msgid "operate_log_id"
msgstr ""
#: audits/backends/db.py:111
#: audits/backends/db.py:111 ops/models/variable.py:19
msgid "Tips"
msgstr ""
@ -2926,8 +2930,8 @@ msgid "Offline user session"
msgstr ""
#: audits/serializers.py:33 ops/models/adhoc.py:24 ops/models/base.py:16
#: ops/models/base.py:53 ops/models/celery.py:87 ops/models/job.py:151
#: ops/models/job.py:240 ops/models/playbook.py:32
#: ops/models/base.py:53 ops/models/celery.py:87 ops/models/job.py:154
#: ops/models/job.py:245 ops/models/playbook.py:30 ops/models/variable.py:17
#: terminal/models/session/sharing.py:25
msgid "Creator"
msgstr ""
@ -3466,7 +3470,7 @@ msgid "Please change your password"
msgstr ""
#: authentication/models/access_key.py:22
#: terminal/models/component/endpoint.py:112
#: terminal/models/component/endpoint.py:113
msgid "IP group"
msgstr ""
@ -3757,7 +3761,7 @@ msgstr ""
#: authentication/templates/authentication/_msg_oauth_bind.html:3
#: authentication/templates/authentication/_msg_reset_password.html:3
#: authentication/templates/authentication/_msg_reset_password_code.html:9
#: jumpserver/conf.py:522
#: jumpserver/conf.py:529
#: perms/templates/perms/_msg_item_permissions_expire.html:3
#: tickets/templates/tickets/approve_check_password.html:32
#: users/templates/users/_msg_account_expire_reminder.html:4
@ -4491,16 +4495,16 @@ msgstr ""
msgid "The mobile phone number format is incorrect"
msgstr ""
#: jumpserver/conf.py:516
#: jumpserver/conf.py:523
#, python-brace-format
msgid "The verification code is: {code}"
msgstr ""
#: jumpserver/conf.py:521
#: jumpserver/conf.py:528
msgid "Create account successfully"
msgstr ""
#: jumpserver/conf.py:523
#: jumpserver/conf.py:530
msgid "Your account has been created successfully"
msgstr ""
@ -4597,7 +4601,7 @@ msgid ""
" work orders, and other notifications"
msgstr ""
#: ops/ansible/inventory.py:116 ops/models/job.py:65
#: ops/ansible/inventory.py:116 ops/models/job.py:68
msgid "No account available"
msgstr ""
@ -4621,34 +4625,34 @@ msgstr ""
msgid "Task {} args or kwargs error"
msgstr ""
#: ops/api/job.py:83
#: ops/api/job.py:68
#, python-brace-format
msgid ""
"Asset ({asset}) must have at least one of the following protocols added: "
"SSH, SFTP, or WinRM"
msgstr ""
#: ops/api/job.py:84
#: ops/api/job.py:69
#, python-brace-format
msgid "Asset ({asset}) authorization is missing SSH, SFTP, or WinRM protocol"
msgstr ""
#: ops/api/job.py:85
#: ops/api/job.py:70
#, python-brace-format
msgid "Asset ({asset}) authorization lacks upload permissions"
msgstr ""
#: ops/api/job.py:170
#: ops/api/job.py:157
msgid "Duplicate file exists"
msgstr ""
#: ops/api/job.py:175
#: ops/api/job.py:162
#, python-brace-format
msgid ""
"File size exceeds maximum limit. Please select a file smaller than {limit}MB"
msgstr ""
#: ops/api/job.py:244
#: ops/api/job.py:231
msgid ""
"The task is being created and cannot be interrupted. Please try again later."
msgstr ""
@ -4717,11 +4721,13 @@ msgstr ""
msgid "VCS"
msgstr ""
#: ops/const.py:38 ops/models/adhoc.py:44 settings/serializers/feature.py:123
#: ops/const.py:38 ops/models/adhoc.py:44 ops/models/variable.py:26
#: settings/serializers/feature.py:146
msgid "Adhoc"
msgstr ""
#: ops/const.py:39 ops/models/job.py:149 ops/models/playbook.py:91
#: ops/const.py:39 ops/models/job.py:152 ops/models/playbook.py:89
#: ops/models/variable.py:23
msgid "Playbook"
msgstr ""
@ -4794,6 +4800,14 @@ msgstr ""
msgid "Private"
msgstr ""
#: ops/const.py:91
msgid "Text"
msgstr ""
#: ops/const.py:92
msgid "Select"
msgstr ""
#: ops/exception.py:6
msgid "no valid program entry found."
msgstr ""
@ -4833,16 +4847,16 @@ msgstr ""
msgid "Pattern"
msgstr ""
#: ops/models/adhoc.py:22 ops/models/job.py:146
#: ops/models/adhoc.py:22 ops/models/job.py:149
msgid "Module"
msgstr ""
#: ops/models/adhoc.py:23 ops/models/celery.py:82 ops/models/job.py:144
#: ops/models/adhoc.py:23 ops/models/celery.py:82 ops/models/job.py:147
#: terminal/models/component/task.py:14
msgid "Args"
msgstr ""
#: ops/models/adhoc.py:26 ops/models/playbook.py:36 ops/serializers/mixin.py:10
#: ops/models/adhoc.py:26 ops/models/playbook.py:34 ops/serializers/mixin.py:10
#: rbac/models/role.py:31 rbac/models/rolebinding.py:46
#: rbac/serializers/role.py:12 settings/serializers/auth/oauth2.py:37
msgid "Scope"
@ -4856,16 +4870,16 @@ msgstr ""
msgid "Last execution"
msgstr ""
#: ops/models/base.py:22 ops/serializers/job.py:17
#: ops/models/base.py:22 ops/serializers/job.py:18
msgid "Date last run"
msgstr ""
#: ops/models/base.py:51 ops/models/job.py:238
#: ops/models/base.py:51 ops/models/job.py:243
#: xpack/plugins/cloud/models.py:225
msgid "Result"
msgstr ""
#: ops/models/base.py:52 ops/models/job.py:239
#: ops/models/base.py:52 ops/models/job.py:244
#: xpack/plugins/cloud/manager.py:99
msgid "Summary"
msgstr ""
@ -4894,55 +4908,89 @@ msgstr ""
msgid "Celery Task Execution"
msgstr ""
#: ops/models/job.py:147
#: ops/models/job.py:150
msgid "Run dir"
msgstr ""
#: ops/models/job.py:148
#: ops/models/job.py:151
msgid "Timeout (Seconds)"
msgstr ""
#: ops/models/job.py:153
#: ops/models/job.py:157
msgid "Use Parameter Define"
msgstr ""
#: ops/models/job.py:154
#: ops/models/job.py:158
msgid "Parameters define"
msgstr ""
#: ops/models/job.py:155
#: ops/models/job.py:159
#, fuzzy
#| msgid "Periodic run"
msgid "Periodic variable"
msgstr "Periodic"
#: ops/models/job.py:160
msgid "Run as"
msgstr ""
#: ops/models/job.py:157
#: ops/models/job.py:162
msgid "Run as policy"
msgstr ""
#: ops/models/job.py:222 ops/serializers/job.py:92
#: ops/models/job.py:227 ops/models/variable.py:28 ops/serializers/job.py:98
#: terminal/notifications.py:182
msgid "Job"
msgstr ""
#: ops/models/job.py:245
#: ops/models/job.py:250
msgid "Material"
msgstr ""
#: ops/models/job.py:247
#: ops/models/job.py:252
msgid "Material Type"
msgstr ""
#: ops/models/job.py:558
#: ops/models/job.py:564
msgid "Job Execution"
msgstr ""
#: ops/models/playbook.py:35
#: ops/models/playbook.py:33
msgid "CreateMethod"
msgstr ""
#: ops/models/playbook.py:37
#: ops/models/playbook.py:35
msgid "VCS URL"
msgstr ""
#: ops/models/variable.py:11
msgid "Variable name"
msgstr ""
#: ops/models/variable.py:12
msgid ""
"The variable name used in the script has a fixed prefix 'jms_' followed by "
"the input variable name. For example, if the variable name is 'name,' the "
"final generated environment variable will be 'jms_name'."
msgstr ""
#: ops/models/variable.py:16
msgid "Default Value"
msgstr ""
#: ops/models/variable.py:18
msgid "Variable type"
msgstr ""
#: ops/models/variable.py:21 ops/serializers/variable.py:23
msgid "ExtraVars"
msgstr ""
#: ops/models/variable.py:49 ops/serializers/adhoc.py:16
#: ops/serializers/job.py:22 ops/serializers/playbook.py:21
msgid "Variable"
msgstr ""
#: ops/notifications.py:20
msgid "Server performance"
msgstr ""
@ -4979,61 +5027,72 @@ msgstr ""
msgid "Next execution time"
msgstr ""
#: ops/serializers/job.py:15
#: ops/serializers/job.py:17
msgid "Execute after saving"
msgstr "Execute after saving"
#: ops/serializers/job.py:52 terminal/serializers/session.py:49
#: ops/serializers/job.py:58 terminal/serializers/session.py:49
msgid "Duration"
msgstr ""
#: ops/serializers/job.py:72
#: ops/serializers/job.py:78
msgid "Job type"
msgstr ""
#: ops/serializers/job.py:75 terminal/serializers/session.py:58
#: ops/serializers/job.py:81 terminal/serializers/session.py:58
msgid "Is finished"
msgstr "Finished"
#: ops/serializers/job.py:89
#: ops/serializers/job.py:95
msgid "Task id"
msgstr ""
#: ops/serializers/job.py:98
#: ops/serializers/job.py:104
msgid "You do not have permission for the current job."
msgstr ""
#: ops/tasks.py:51
#: ops/serializers/variable.py:20
msgid "Variable Type"
msgstr ""
#: ops/serializers/variable.py:25
msgid ""
"Each item is on a separate line, with each line separated by a colon. The "
"part before the colon is the display content, and the part after the colon "
"is the value."
msgstr ""
#: ops/tasks.py:53
msgid "Run ansible task"
msgstr ""
#: ops/tasks.py:54
#: ops/tasks.py:56
msgid ""
"Execute scheduled adhoc and playbooks, periodically invoking the task for "
"execution"
msgstr ""
#: ops/tasks.py:82
#: ops/tasks.py:88
msgid "Run ansible task execution"
msgstr ""
#: ops/tasks.py:85
#: ops/tasks.py:91
msgid "Execute the task when manually adhoc or playbooks"
msgstr ""
#: ops/tasks.py:99
#: ops/tasks.py:107
msgid "Clear celery periodic tasks"
msgstr ""
#: ops/tasks.py:101
#: ops/tasks.py:109
msgid "At system startup, clean up celery tasks that no longer exist"
msgstr ""
#: ops/tasks.py:125
#: ops/tasks.py:133
msgid "Create or update periodic tasks"
msgstr ""
#: ops/tasks.py:127
#: ops/tasks.py:135
msgid ""
"With version iterations, new tasks may be added, or task names and execution "
"times may \n"
@ -5042,11 +5101,11 @@ msgid ""
" of scheduled tasks will be updated"
msgstr ""
#: ops/tasks.py:140
#: ops/tasks.py:148
msgid "Periodic check service performance"
msgstr ""
#: ops/tasks.py:142
#: ops/tasks.py:150
msgid ""
"Check every hour whether each component is offline and whether the CPU, "
"memory, \n"
@ -5054,11 +5113,11 @@ msgid ""
"the administrator"
msgstr ""
#: ops/tasks.py:152
#: ops/tasks.py:160
msgid "Clean up unexpected jobs"
msgstr ""
#: ops/tasks.py:154
#: ops/tasks.py:162
msgid ""
"Due to exceptions caused by executing adhoc and playbooks in the Job "
"Center, \n"
@ -5069,11 +5128,11 @@ msgid ""
" failed"
msgstr ""
#: ops/tasks.py:167
#: ops/tasks.py:175
msgid "Clean job_execution db record"
msgstr ""
#: ops/tasks.py:169
#: ops/tasks.py:177
msgid ""
"Due to the execution of adhoc and playbooks in the Job Center, execution "
"records will \n"
@ -5290,7 +5349,7 @@ msgid "today"
msgstr ""
#: perms/notifications.py:12 perms/notifications.py:44
#: settings/serializers/feature.py:114
#: settings/serializers/feature.py:137
msgid "day"
msgstr ""
@ -5535,7 +5594,7 @@ msgstr ""
msgid "App ops"
msgstr "Ops"
#: rbac/tree.py:57 settings/serializers/feature.py:120
#: rbac/tree.py:57 settings/serializers/feature.py:143
msgid "Feature"
msgstr ""
@ -5570,8 +5629,8 @@ msgstr "Organizations"
msgid "Ticket comment"
msgstr ""
#: rbac/tree.py:159 settings/serializers/feature.py:101
#: settings/serializers/feature.py:103 tickets/models/ticket/general.py:308
#: rbac/tree.py:159 settings/serializers/feature.py:124
#: settings/serializers/feature.py:126 tickets/models/ticket/general.py:308
msgid "Ticket"
msgstr ""
@ -5589,7 +5648,7 @@ msgstr ""
#: settings/api/chat.py:79 settings/api/dingtalk.py:31
#: settings/api/feishu.py:39 settings/api/slack.py:34 settings/api/sms.py:160
#: settings/api/vault.py:40 settings/api/wecom.py:37
#: settings/api/vault.py:48 settings/api/wecom.py:37
msgid "Test success"
msgstr ""
@ -5963,12 +6022,13 @@ msgstr ""
msgid "Service provider"
msgstr ""
#: settings/serializers/auth/oauth2.py:31
#: settings/serializers/auth/oauth2.py:31 settings/serializers/feature.py:88
#: xpack/plugins/cloud/serializers/account_attrs.py:35
msgid "Client ID"
msgstr ""
#: settings/serializers/auth/oauth2.py:34 settings/serializers/auth/oidc.py:24
#: settings/serializers/feature.py:91
#: xpack/plugins/cloud/serializers/account_attrs.py:38
msgid "Client Secret"
msgstr ""
@ -6374,38 +6434,38 @@ msgstr ""
msgid "Change secret and push record retention days (day)"
msgstr ""
#: settings/serializers/feature.py:19 settings/serializers/msg.py:68
#: settings/serializers/feature.py:20 settings/serializers/msg.py:68
msgid "Subject"
msgstr ""
#: settings/serializers/feature.py:23
#: settings/serializers/feature.py:24
msgid "More Link"
msgstr ""
#: settings/serializers/feature.py:26
#: settings/serializers/feature.py:27
#: settings/templates/ldap/_msg_import_ldap_user.html:6
#: terminal/models/session/session.py:46
msgid "Date end"
msgstr ""
#: settings/serializers/feature.py:39 settings/serializers/feature.py:41
#: settings/serializers/feature.py:42
#: settings/serializers/feature.py:40 settings/serializers/feature.py:42
#: settings/serializers/feature.py:43
msgid "Announcement"
msgstr ""
#: settings/serializers/feature.py:49
#: settings/serializers/feature.py:47 settings/serializers/feature.py:50
msgid "Vault"
msgstr ""
#: settings/serializers/feature.py:58
msgid "Mount Point"
#: settings/serializers/feature.py:53
msgid "Vault provider"
msgstr ""
#: settings/serializers/feature.py:64
#: settings/serializers/feature.py:58
msgid "Record limit"
msgstr ""
#: settings/serializers/feature.py:66
#: settings/serializers/feature.py:60
msgid ""
"If the specific value is less than 999 (default), the system will "
"automatically perform a task every night: check and delete historical "
@ -6413,74 +6473,83 @@ msgid ""
"exceeds 999 (default), no historical account deletion will be performed"
msgstr ""
#: settings/serializers/feature.py:76 settings/serializers/feature.py:82
#: settings/serializers/feature.py:78
msgid "Mount Point"
msgstr ""
#: settings/serializers/feature.py:94
#: xpack/plugins/cloud/serializers/account_attrs.py:41
msgid "Tenant ID"
msgstr ""
#: settings/serializers/feature.py:99 settings/serializers/feature.py:105
msgid "Chat AI"
msgstr ""
#: settings/serializers/feature.py:85
#: settings/serializers/feature.py:108
msgid "GPT Base URL"
msgstr ""
#: settings/serializers/feature.py:86
#: settings/serializers/feature.py:109
msgid "The base URL of the GPT service. For example: https://api.openai.com/v1"
msgstr ""
#: settings/serializers/feature.py:89 templates/_header_bar.html:96
#: settings/serializers/feature.py:112 templates/_header_bar.html:96
msgid "API Key"
msgstr ""
#: settings/serializers/feature.py:93
#: settings/serializers/feature.py:116
msgid ""
"The proxy server address of the GPT service. For example: http://ip:port"
msgstr ""
#: settings/serializers/feature.py:96
#: settings/serializers/feature.py:119
msgid "GPT Model"
msgstr ""
#: settings/serializers/feature.py:105
#: settings/serializers/feature.py:128
msgid "Approval without login"
msgstr ""
#: settings/serializers/feature.py:106
#: settings/serializers/feature.py:129
msgid "Allow direct approval ticket without login"
msgstr ""
#: settings/serializers/feature.py:110
#: settings/serializers/feature.py:133
msgid "Period"
msgstr ""
#: settings/serializers/feature.py:111
#: settings/serializers/feature.py:134
msgid ""
"The default authorization time period when applying for assets via a ticket"
msgstr ""
#: settings/serializers/feature.py:114
#: settings/serializers/feature.py:137
msgid "hour"
msgstr ""
#: settings/serializers/feature.py:115
#: settings/serializers/feature.py:138
msgid "Unit"
msgstr ""
#: settings/serializers/feature.py:115
#: settings/serializers/feature.py:138
msgid "The unit of period"
msgstr ""
#: settings/serializers/feature.py:124
#: settings/serializers/feature.py:147
msgid ""
"Allow users to execute batch commands in the Workbench - Job Center - Adhoc"
msgstr ""
#: settings/serializers/feature.py:128
#: settings/serializers/feature.py:151
msgid "Command blacklist"
msgstr ""
#: settings/serializers/feature.py:129
#: settings/serializers/feature.py:152
msgid "Command blacklist in Adhoc"
msgstr ""
#: settings/serializers/feature.py:134
#: settings/serializers/feature.py:157
#: terminal/models/virtualapp/provider.py:17
#: terminal/models/virtualapp/virtualapp.py:36
#: terminal/models/virtualapp/virtualapp.py:97
@ -6488,11 +6557,11 @@ msgstr ""
msgid "Virtual app"
msgstr ""
#: settings/serializers/feature.py:137
#: settings/serializers/feature.py:160
msgid "Virtual App"
msgstr ""
#: settings/serializers/feature.py:139
#: settings/serializers/feature.py:162
msgid ""
"Virtual applications, you can use the Linux operating system as an "
"application server in remote applications."
@ -7359,6 +7428,14 @@ msgstr ""
msgid "RDP Guide"
msgstr ""
#: terminal/connect_methods.py:39
msgid "VNC Client"
msgstr ""
#: terminal/connect_methods.py:40
msgid "VNC Guide"
msgstr ""
#: terminal/const.py:10
msgid "Warning"
msgstr ""
@ -7383,7 +7460,7 @@ msgstr ""
msgid "High"
msgstr ""
#: terminal/const.py:47 terminal/const.py:84
#: terminal/const.py:47 terminal/const.py:86
#: users/templates/users/reset_password.html:54
msgid "Normal"
msgstr ""
@ -7392,47 +7469,47 @@ msgstr ""
msgid "Offline"
msgstr ""
#: terminal/const.py:80
#: terminal/const.py:82
msgid "Mismatch"
msgstr ""
#: terminal/const.py:85
#: terminal/const.py:87
msgid "Tunnel"
msgstr ""
#: terminal/const.py:91
#: terminal/const.py:93
msgid "Read only"
msgstr ""
#: terminal/const.py:92
#: terminal/const.py:94
msgid "Writable"
msgstr ""
#: terminal/const.py:96
#: terminal/const.py:98
msgid "Kill session"
msgstr ""
#: terminal/const.py:97
#: terminal/const.py:99
msgid "Lock session"
msgstr ""
#: terminal/const.py:98
#: terminal/const.py:100
msgid "Unlock session"
msgstr ""
#: terminal/const.py:103
#: terminal/const.py:105
msgid "Replay create failed"
msgstr ""
#: terminal/const.py:104
#: terminal/const.py:106
msgid "Replay upload failed"
msgstr ""
#: terminal/const.py:105
#: terminal/const.py:107
msgid "Replay convert failed"
msgstr ""
#: terminal/const.py:106
#: terminal/const.py:108
msgid "Replay unsupported"
msgstr ""
@ -7573,15 +7650,19 @@ msgstr ""
msgid "SQLServer port"
msgstr ""
#: terminal/models/component/endpoint.py:32
#: terminal/models/component/endpoint.py:119
#: terminal/models/component/endpoint.py:25
msgid "VNC port"
msgstr ""
#: terminal/models/component/endpoint.py:33
#: terminal/models/component/endpoint.py:120
#: terminal/serializers/endpoint.py:80 terminal/serializers/storage.py:41
#: terminal/serializers/storage.py:53 terminal/serializers/storage.py:83
#: terminal/serializers/storage.py:93 terminal/serializers/storage.py:101
msgid "Endpoint"
msgstr ""
#: terminal/models/component/endpoint.py:125
#: terminal/models/component/endpoint.py:126
msgid "Endpoint rule"
msgstr ""
@ -10081,10 +10162,6 @@ msgstr ""
msgid "Access key id"
msgstr "Access key id"
#: xpack/plugins/cloud/serializers/account_attrs.py:41
msgid "Tenant ID"
msgstr ""
#: xpack/plugins/cloud/serializers/account_attrs.py:44
msgid "Subscription ID"
msgstr ""

344
apps/i18n/core/ja/LC_MESSAGES/django.po

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-06 11:27+0800\n"
"POT-Creation-Date: 2024-11-11 19:19+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -36,7 +36,7 @@ msgstr "アセットまたはアプリケーション関連のバックアップ
#: accounts/automations/backup_account/handlers.py:156
#: accounts/automations/backup_account/handlers.py:295
#: accounts/automations/backup_account/manager.py:40 ops/serializers/job.py:76
#: accounts/automations/backup_account/manager.py:40 ops/serializers/job.py:82
#: settings/templates/ldap/_msg_import_ldap_user.html:7
msgid "Time cost"
msgstr "時を過ごす"
@ -68,7 +68,7 @@ msgstr "仕上げ"
#: assets/serializers/automations/base.py:52 audits/const.py:64
#: audits/models.py:64 audits/signal_handlers/activity_log.py:33
#: common/const/choices.py:65 ops/const.py:74 ops/serializers/celery.py:48
#: terminal/const.py:78 terminal/models/session/sharing.py:121
#: terminal/const.py:80 terminal/models/session/sharing.py:121
#: tickets/views/approve.py:128
msgid "Success"
msgstr "成功"
@ -77,7 +77,7 @@ msgstr "成功"
#: accounts/const/account.py:34 accounts/const/automation.py:109
#: accounts/serializers/automations/change_secret.py:174 audits/const.py:65
#: audits/signal_handlers/activity_log.py:33 common/const/choices.py:66
#: ops/const.py:76 terminal/const.py:79 xpack/plugins/cloud/const.py:47
#: ops/const.py:76 terminal/const.py:81 xpack/plugins/cloud/const.py:47
msgid "Failed"
msgstr "失敗しました"
@ -150,7 +150,7 @@ msgid "Access key"
msgstr "アクセスキー"
#: accounts/const/account.py:9 authentication/backends/passkey/models.py:16
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:55
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:75
msgid "Token"
msgstr "トークン"
@ -305,12 +305,12 @@ msgstr "作成のみ"
msgid "Email"
msgstr "メール"
#: accounts/const/automation.py:105 terminal/const.py:87
#: accounts/const/automation.py:105 terminal/const.py:89
msgid "SFTP"
msgstr "SFTP"
#: accounts/const/automation.py:111 assets/serializers/automations/base.py:54
#: common/const/choices.py:63 terminal/const.py:77 tickets/const.py:29
#: common/const/choices.py:63 terminal/const.py:79 tickets/const.py:29
#: tickets/const.py:38
msgid "Pending"
msgstr "未定"
@ -320,10 +320,14 @@ msgstr "未定"
msgid "Database"
msgstr "データベース"
#: accounts/const/vault.py:9 settings/serializers/feature.py:46
#: accounts/const/vault.py:9 settings/serializers/feature.py:70
msgid "HCP Vault"
msgstr "HashiCorp Vault"
#: accounts/const/vault.py:10 settings/serializers/feature.py:83
msgid "Azure Key Vault"
msgstr "Azure Key Vault"
#: accounts/mixins.py:35
msgid "Export all"
msgstr "すべてエクスポート"
@ -468,9 +472,9 @@ msgstr "アカウントバックアップ計画"
#: accounts/models/automations/backup_account.py:120
#: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:89 ops/models/job.py:242
#: ops/models/base.py:55 ops/models/celery.py:89 ops/models/job.py:247
#: ops/templates/ops/celery_task_log.html:101
#: perms/models/asset_permission.py:78 settings/serializers/feature.py:25
#: perms/models/asset_permission.py:78 settings/serializers/feature.py:26
#: settings/templates/ldap/_msg_import_ldap_user.html:5
#: terminal/models/applet/host.py:141 terminal/models/session/session.py:45
#: tickets/models/ticket/apply_application.py:30
@ -507,7 +511,7 @@ msgstr "理由"
#: accounts/models/automations/backup_account.py:136
#: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:152
#: ops/serializers/job.py:74 terminal/serializers/session.py:54
#: ops/serializers/job.py:80 terminal/serializers/session.py:54
msgid "Is success"
msgstr "成功は"
@ -582,7 +586,7 @@ msgstr "開始日"
#: accounts/models/automations/change_secret.py:42
#: assets/models/automations/base.py:116 ops/models/base.py:56
#: ops/models/celery.py:90 ops/models/job.py:243
#: ops/models/celery.py:90 ops/models/job.py:248
#: terminal/models/applet/host.py:142
msgid "Date finished"
msgstr "終了日"
@ -590,7 +594,7 @@ msgstr "終了日"
#: accounts/models/automations/change_secret.py:44
#: assets/models/automations/base.py:113
#: assets/serializers/automations/base.py:39 audits/models.py:208
#: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:234
#: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:239
#: terminal/models/applet/applet.py:331 terminal/models/applet/host.py:140
#: terminal/models/component/status.py:30
#: terminal/models/virtualapp/virtualapp.py:99
@ -665,12 +669,12 @@ msgstr "トリガー方式"
#: audits/models.py:92 audits/serializers.py:84
#: authentication/serializers/connect_token_secret.py:119
#: authentication/templates/authentication/_access_key_modal.html:34
#: behemoth/serializers/environment.py:13 perms/serializers/permission.py:52
#: perms/serializers/permission.py:74 tickets/serializers/ticket/ticket.py:21
#: perms/serializers/permission.py:52 perms/serializers/permission.py:74
#: tickets/serializers/ticket/ticket.py:21
msgid "Action"
msgstr "アクション"
#: accounts/models/automations/push_account.py:57
#: accounts/models/automations/push_account.py:58
msgid "Push asset account"
msgstr "アカウントプッシュ"
@ -719,13 +723,13 @@ msgstr "パスワードルール"
#: authentication/serializers/connect_token_secret.py:113
#: authentication/serializers/connect_token_secret.py:169 labels/models.py:11
#: ops/mixin.py:28 ops/models/adhoc.py:19 ops/models/celery.py:15
#: ops/models/celery.py:81 ops/models/job.py:142 ops/models/playbook.py:30
#: ops/serializers/job.py:18 orgs/models.py:82
#: ops/models/celery.py:81 ops/models/job.py:145 ops/models/playbook.py:28
#: ops/models/variable.py:9 ops/serializers/job.py:19 orgs/models.py:82
#: perms/models/asset_permission.py:61 rbac/models/role.py:29
#: rbac/serializers/role.py:28 settings/models.py:35 settings/models.py:184
#: settings/serializers/msg.py:89 settings/serializers/terminal.py:9
#: terminal/models/applet/applet.py:34 terminal/models/component/endpoint.py:13
#: terminal/models/component/endpoint.py:111
#: terminal/models/component/endpoint.py:112
#: terminal/models/component/storage.py:26 terminal/models/component/task.py:13
#: terminal/models/component/terminal.py:85
#: terminal/models/virtualapp/provider.py:10
@ -884,7 +888,7 @@ msgstr "カテゴリ"
#: assets/serializers/asset/common.py:146 assets/serializers/platform.py:159
#: assets/serializers/platform.py:171 audits/serializers.py:53
#: audits/serializers.py:170
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:153
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:40
#: terminal/models/component/storage.py:58
#: terminal/models/component/storage.py:152 terminal/serializers/applet.py:29
@ -920,10 +924,8 @@ msgstr "編集済み"
#: assets/models/automations/base.py:19
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:34
#: assets/serializers/platform.py:180 assets/serializers/platform.py:212
#: authentication/api/connection_token.py:410
#: behemoth/serializers/environment.py:11
#: behemoth/serializers/environment.py:22 ops/models/base.py:17
#: ops/models/job.py:152 ops/serializers/job.py:19
#: authentication/api/connection_token.py:410 ops/models/base.py:17
#: ops/models/job.py:155 ops/serializers/job.py:20
#: perms/serializers/permission.py:46
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:89
@ -1074,11 +1076,11 @@ msgstr "关联平台,可以配置推送参数,如果不关联,则使用默
#: accounts/serializers/account/virtual.py:19 assets/models/cmd_filter.py:40
#: assets/models/cmd_filter.py:88 common/db/models.py:36 ops/models/adhoc.py:25
#: ops/models/job.py:158 ops/models/playbook.py:33 rbac/models/role.py:37
#: ops/models/job.py:163 ops/models/playbook.py:31 rbac/models/role.py:37
#: settings/models.py:40 terminal/models/applet/applet.py:46
#: terminal/models/applet/applet.py:332 terminal/models/applet/host.py:143
#: terminal/models/component/endpoint.py:26
#: terminal/models/component/endpoint.py:121
#: terminal/models/component/endpoint.py:27
#: terminal/models/component/endpoint.py:122
#: terminal/models/session/session.py:47
#: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32
#: tickets/models/ticket/general.py:298 users/models/user/__init__.py:91
@ -1099,7 +1101,8 @@ msgstr ""
#: accounts/serializers/automations/base.py:23
#: assets/models/asset/common.py:176 assets/serializers/asset/common.py:172
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:47
#: assets/serializers/automations/base.py:21 ops/serializers/job.py:21
#: perms/serializers/permission.py:47
msgid "Nodes"
msgstr "ノード"
@ -1382,12 +1385,12 @@ msgid "Notify and warn"
msgstr "プロンプトと警告"
#: acls/models/base.py:37 assets/models/cmd_filter.py:76
#: terminal/models/component/endpoint.py:114 xpack/plugins/cloud/models.py:316
#: terminal/models/component/endpoint.py:115 xpack/plugins/cloud/models.py:316
msgid "Priority"
msgstr "優先順位"
#: acls/models/base.py:38 assets/models/cmd_filter.py:76
#: terminal/models/component/endpoint.py:115 xpack/plugins/cloud/models.py:317
#: terminal/models/component/endpoint.py:116 xpack/plugins/cloud/models.py:317
msgid "1-100, the lower the value will be match first"
msgstr "1-100、低い値は最初に一致します"
@ -1401,8 +1404,8 @@ msgstr "レビュー担当者"
#: authentication/models/connection_token.py:53
#: authentication/models/ssh_key.py:13
#: authentication/templates/authentication/_access_key_modal.html:32
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:27
#: terminal/models/component/endpoint.py:122
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:28
#: terminal/models/component/endpoint.py:123
#: terminal/models/session/sharing.py:29 terminal/serializers/terminal.py:44
#: tickets/const.py:36
msgid "Active"
@ -1422,7 +1425,7 @@ msgid "Accounts"
msgstr "アカウント"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:73 terminal/const.py:86
#: ops/serializers/job.py:79 terminal/const.py:88
#: terminal/models/session/session.py:43 terminal/serializers/command.py:18
#: terminal/templates/terminal/_msg_command_alert.html:12
#: terminal/templates/terminal/_msg_command_execute_alert.html:10
@ -1436,7 +1439,7 @@ msgid "Regex"
msgstr "正規情報"
#: acls/models/command_acl.py:26 assets/models/cmd_filter.py:79
#: settings/models.py:185 settings/serializers/feature.py:20
#: settings/models.py:185 settings/serializers/feature.py:21
#: settings/serializers/msg.py:78 xpack/plugins/license/models.py:30
msgid "Content"
msgstr "コンテンツ"
@ -1700,7 +1703,7 @@ msgid "Authentication failed"
msgstr "認証に失敗しました"
#: assets/automations/ping_gateway/manager.py:60
#: assets/automations/ping_gateway/manager.py:86 terminal/const.py:102
#: assets/automations/ping_gateway/manager.py:86 terminal/const.py:104
msgid "Connect failed"
msgstr "接続に失敗しました"
@ -1748,9 +1751,9 @@ msgstr "脚本"
#: assets/const/category.py:10 assets/models/asset/host.py:8
#: settings/serializers/auth/radius.py:17 settings/serializers/auth/sms.py:76
#: settings/serializers/feature.py:52 settings/serializers/msg.py:30
#: terminal/models/component/endpoint.py:14 terminal/serializers/applet.py:17
#: xpack/plugins/cloud/manager.py:89
#: settings/serializers/feature.py:72 settings/serializers/feature.py:85
#: settings/serializers/msg.py:30 terminal/models/component/endpoint.py:14
#: terminal/serializers/applet.py:17 xpack/plugins/cloud/manager.py:89
#: xpack/plugins/cloud/serializers/account_attrs.py:72
msgid "Host"
msgstr "ホスト"
@ -2062,18 +2065,19 @@ msgstr "証明書チェックを無視"
msgid "Postgresql SSL mode"
msgstr "PostgreSQL SSL モード"
#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:92
#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:115
msgid "Proxy"
msgstr "プロキシー"
#: assets/models/automations/base.py:18 assets/models/cmd_filter.py:32
#: assets/models/node.py:553 perms/models/asset_permission.py:72
#: tickets/models/ticket/apply_asset.py:14 xpack/plugins/cloud/models.py:388
#: assets/models/node.py:553 ops/models/job.py:156
#: perms/models/asset_permission.py:72 tickets/models/ticket/apply_asset.py:14
#: xpack/plugins/cloud/models.py:388
msgid "Node"
msgstr "ノード"
#: assets/models/automations/base.py:22 ops/models/job.py:237
#: settings/serializers/auth/sms.py:108
#: assets/models/automations/base.py:22 ops/models/job.py:242
#: ops/serializers/job.py:23 settings/serializers/auth/sms.py:108
msgid "Parameters"
msgstr "パラメータ"
@ -2086,7 +2090,7 @@ msgid "Asset automation task"
msgstr "アセットの自動化タスク"
#: assets/models/automations/base.py:114 assets/models/cmd_filter.py:41
#: common/db/models.py:34 ops/models/base.py:54 ops/models/job.py:241
#: common/db/models.py:34 ops/models/base.py:54 ops/models/job.py:246
#: users/models/user/__init__.py:311
msgid "Date created"
msgstr "作成された日付"
@ -2218,7 +2222,7 @@ msgstr "ノードを一致させることができます"
msgid "Primary"
msgstr "主要"
#: assets/models/platform.py:18
#: assets/models/platform.py:18 ops/models/variable.py:20
msgid "Required"
msgstr "必要"
@ -2786,7 +2790,7 @@ msgstr "タグ"
msgid "operate_log_id"
msgstr "操作ログID"
#: audits/backends/db.py:111
#: audits/backends/db.py:111 ops/models/variable.py:19
msgid "Tips"
msgstr "謎々"
@ -3030,8 +3034,8 @@ msgid "Offline user session"
msgstr "オフラインユーザセッション"
#: audits/serializers.py:33 ops/models/adhoc.py:24 ops/models/base.py:16
#: ops/models/base.py:53 ops/models/celery.py:87 ops/models/job.py:151
#: ops/models/job.py:240 ops/models/playbook.py:32
#: ops/models/base.py:53 ops/models/celery.py:87 ops/models/job.py:154
#: ops/models/job.py:245 ops/models/playbook.py:30 ops/models/variable.py:17
#: terminal/models/session/sharing.py:25
msgid "Creator"
msgstr "作成者"
@ -3596,7 +3600,7 @@ msgid "Please change your password"
msgstr "パスワードを変更してください"
#: authentication/models/access_key.py:22
#: terminal/models/component/endpoint.py:112
#: terminal/models/component/endpoint.py:113
msgid "IP group"
msgstr "IP グループ"
@ -3891,7 +3895,7 @@ msgstr "コードエラー"
#: authentication/templates/authentication/_msg_oauth_bind.html:3
#: authentication/templates/authentication/_msg_reset_password.html:3
#: authentication/templates/authentication/_msg_reset_password_code.html:9
#: jumpserver/conf.py:522
#: jumpserver/conf.py:529
#: perms/templates/perms/_msg_item_permissions_expire.html:3
#: tickets/templates/tickets/approve_check_password.html:32
#: users/templates/users/_msg_account_expire_reminder.html:4
@ -4662,16 +4666,16 @@ msgstr "特殊文字を含むべきではない"
msgid "The mobile phone number format is incorrect"
msgstr "携帯電話番号の形式が正しくありません"
#: jumpserver/conf.py:516
#: jumpserver/conf.py:523
#, python-brace-format
msgid "The verification code is: {code}"
msgstr "認証コードは: {code}"
#: jumpserver/conf.py:521
#: jumpserver/conf.py:528
msgid "Create account successfully"
msgstr "アカウントを正常に作成"
#: jumpserver/conf.py:523
#: jumpserver/conf.py:530
msgid "Your account has been created successfully"
msgstr "アカウントが正常に作成されました"
@ -4778,7 +4782,7 @@ msgid ""
" work orders, and other notifications"
msgstr "システムの警告やチケットなどを送信するためには、このタスクを実行します"
#: ops/ansible/inventory.py:116 ops/models/job.py:65
#: ops/ansible/inventory.py:116 ops/models/job.py:68
msgid "No account available"
msgstr "利用可能なアカウントがありません"
@ -4802,7 +4806,7 @@ msgstr "タスクは存在しません"
msgid "Task {} args or kwargs error"
msgstr "タスク実行パラメータエラー"
#: ops/api/job.py:83
#: ops/api/job.py:68
#, python-brace-format
msgid ""
"Asset ({asset}) must have at least one of the following protocols added: "
@ -4811,22 +4815,22 @@ msgstr ""
"資産({asset})には、少なくともSSH、SFTP、WinRMのいずれか一つのプロトコルを追加"
"する必要があります"
#: ops/api/job.py:84
#: ops/api/job.py:69
#, python-brace-format
msgid "Asset ({asset}) authorization is missing SSH, SFTP, or WinRM protocol"
msgstr ""
"資産({asset})の認証にはSSH、SFTP、またはWinRMプロトコルが不足しています"
#: ops/api/job.py:85
#: ops/api/job.py:70
#, python-brace-format
msgid "Asset ({asset}) authorization lacks upload permissions"
msgstr "資産({asset})の認証にはアップロード権限が不足しています"
#: ops/api/job.py:170
#: ops/api/job.py:157
msgid "Duplicate file exists"
msgstr "重複したファイルが存在する"
#: ops/api/job.py:175
#: ops/api/job.py:162
#, python-brace-format
msgid ""
"File size exceeds maximum limit. Please select a file smaller than {limit}MB"
@ -4834,7 +4838,7 @@ msgstr ""
"ファイルサイズが最大制限を超えています。{limit}MB より小さいファイルを選択し"
"てください。"
#: ops/api/job.py:244
#: ops/api/job.py:231
msgid ""
"The task is being created and cannot be interrupted. Please try again later."
msgstr "タスクを作成中で、中断できません。後でもう一度お試しください。"
@ -4903,11 +4907,13 @@ msgstr "空欄"
msgid "VCS"
msgstr "VCS"
#: ops/const.py:38 ops/models/adhoc.py:44 settings/serializers/feature.py:123
#: ops/const.py:38 ops/models/adhoc.py:44 ops/models/variable.py:26
#: settings/serializers/feature.py:146
msgid "Adhoc"
msgstr "コマンド"
#: ops/const.py:39 ops/models/job.py:149 ops/models/playbook.py:91
#: ops/const.py:39 ops/models/job.py:152 ops/models/playbook.py:89
#: ops/models/variable.py:23
msgid "Playbook"
msgstr "Playbook"
@ -5019,16 +5025,16 @@ msgstr "定期的または定期的に設定を行う必要があります"
msgid "Pattern"
msgstr "パターン"
#: ops/models/adhoc.py:22 ops/models/job.py:146
#: ops/models/adhoc.py:22 ops/models/job.py:149
msgid "Module"
msgstr "モジュール"
#: ops/models/adhoc.py:23 ops/models/celery.py:82 ops/models/job.py:144
#: ops/models/adhoc.py:23 ops/models/celery.py:82 ops/models/job.py:147
#: terminal/models/component/task.py:14
msgid "Args"
msgstr "アルグ"
#: ops/models/adhoc.py:26 ops/models/playbook.py:36 ops/serializers/mixin.py:10
#: ops/models/adhoc.py:26 ops/models/playbook.py:34 ops/serializers/mixin.py:10
#: rbac/models/role.py:31 rbac/models/rolebinding.py:46
#: rbac/serializers/role.py:12 settings/serializers/auth/oauth2.py:37
msgid "Scope"
@ -5042,16 +5048,16 @@ msgstr "アカウント ポリシー"
msgid "Last execution"
msgstr "最後の実行"
#: ops/models/base.py:22 ops/serializers/job.py:17
#: ops/models/base.py:22 ops/serializers/job.py:18
msgid "Date last run"
msgstr "最終実行日"
#: ops/models/base.py:51 ops/models/job.py:238
#: ops/models/base.py:51 ops/models/job.py:243
#: xpack/plugins/cloud/models.py:225
msgid "Result"
msgstr "結果"
#: ops/models/base.py:52 ops/models/job.py:239
#: ops/models/base.py:52 ops/models/job.py:244
#: xpack/plugins/cloud/manager.py:99
msgid "Summary"
msgstr "Summary"
@ -5080,52 +5086,52 @@ msgstr "発売日"
msgid "Celery Task Execution"
msgstr "Celery タスク実行"
#: ops/models/job.py:147
#: ops/models/job.py:150
msgid "Run dir"
msgstr "実行ディレクトリ"
#: ops/models/job.py:148
#: ops/models/job.py:151
msgid "Timeout (Seconds)"
msgstr "タイムアウト(秒)"
#: ops/models/job.py:153
#: ops/models/job.py:157
msgid "Use Parameter Define"
msgstr "パラメータ定義を使用する"
#: ops/models/job.py:154
#: ops/models/job.py:158
msgid "Parameters define"
msgstr "パラメータ定義"
#: ops/models/job.py:155
#: ops/models/job.py:160
msgid "Run as"
msgstr "実行アカウント (じっこうアカウント)"
#: ops/models/job.py:157
#: ops/models/job.py:162
msgid "Run as policy"
msgstr "アカウントポリシー "
#: ops/models/job.py:222 ops/serializers/job.py:92
#: ops/models/job.py:227 ops/models/variable.py:28 ops/serializers/job.py:98
#: terminal/notifications.py:182
msgid "Job"
msgstr "ジョブ#ジョブ#"
#: ops/models/job.py:245
#: ops/models/job.py:250
msgid "Material"
msgstr "Material"
#: ops/models/job.py:247
#: ops/models/job.py:252
msgid "Material Type"
msgstr "Material を選択してオプションを設定します。"
#: ops/models/job.py:558
#: ops/models/job.py:564
msgid "Job Execution"
msgstr "ジョブ実行"
#: ops/models/playbook.py:35
#: ops/models/playbook.py:33
msgid "CreateMethod"
msgstr "创建方式"
#: ops/models/playbook.py:37
#: ops/models/playbook.py:35
msgid "VCS URL"
msgstr "VCS URL"
@ -5165,27 +5171,27 @@ msgstr "ジョブ実行"
msgid "Next execution time"
msgstr "最後の実行"
#: ops/serializers/job.py:15
#: ops/serializers/job.py:17
msgid "Execute after saving"
msgstr "保存後に実行"
#: ops/serializers/job.py:52 terminal/serializers/session.py:49
#: ops/serializers/job.py:58 terminal/serializers/session.py:49
msgid "Duration"
msgstr "きかん"
#: ops/serializers/job.py:72
#: ops/serializers/job.py:78
msgid "Job type"
msgstr "タスクの種類"
#: ops/serializers/job.py:75 terminal/serializers/session.py:58
#: ops/serializers/job.py:81 terminal/serializers/session.py:58
msgid "Is finished"
msgstr "終了しました"
#: ops/serializers/job.py:89
#: ops/serializers/job.py:95
msgid "Task id"
msgstr "タスク ID"
#: ops/serializers/job.py:98
#: ops/serializers/job.py:104
msgid "You do not have permission for the current job."
msgstr "あなたは現在のジョブの権限を持っていません。"
@ -5193,7 +5199,7 @@ msgstr "あなたは現在のジョブの権限を持っていません。"
msgid "Run ansible task"
msgstr "Ansible タスクを実行する"
#: ops/tasks.py:54
#: ops/tasks.py:56
msgid ""
"Execute scheduled adhoc and playbooks, periodically invoking the task for "
"execution"
@ -5201,29 +5207,29 @@ msgstr ""
"タイムスケジュールのショートカットコマンドやplaybookを実行するときは、このタ"
"スクを呼び出します"
#: ops/tasks.py:82
#: ops/tasks.py:88
msgid "Run ansible task execution"
msgstr "Ansible タスクの実行を開始する"
#: ops/tasks.py:85
#: ops/tasks.py:91
msgid "Execute the task when manually adhoc or playbooks"
msgstr ""
"手動でショートカットコマンドやplaybookを実行するときは、このタスクを実行しま"
"す"
#: ops/tasks.py:99
#: ops/tasks.py:107
msgid "Clear celery periodic tasks"
msgstr "タスクログを定期的にクリアする"
#: ops/tasks.py:101
#: ops/tasks.py:109
msgid "At system startup, clean up celery tasks that no longer exist"
msgstr "システム起動時、既に存在しないceleryのタスクをクリーニングします"
#: ops/tasks.py:125
#: ops/tasks.py:133
msgid "Create or update periodic tasks"
msgstr "定期的なタスクの作成または更新"
#: ops/tasks.py:127
#: ops/tasks.py:135
msgid ""
"With version iterations, new tasks may be added, or task names and execution "
"times may \n"
@ -5235,11 +5241,11 @@ msgstr ""
"行時間が変更される可能性があるため、システムが起動すると、タスクを登録した"
"り、タスクのパラメータを更新したりします"
#: ops/tasks.py:140
#: ops/tasks.py:148
msgid "Periodic check service performance"
msgstr "サービスのパフォーマンスを定期的に確認する"
#: ops/tasks.py:142
#: ops/tasks.py:150
msgid ""
"Check every hour whether each component is offline and whether the CPU, "
"memory, \n"
@ -5249,11 +5255,11 @@ msgstr ""
"毎時、各コンポーネントがオフラインになっていないか、CPU、メモリ、ディスク使用"
"率が閾値を超えていないかをチェックし、管理者にメッセージで警告を送ります"
#: ops/tasks.py:152
#: ops/tasks.py:160
msgid "Clean up unexpected jobs"
msgstr "例外ジョブのクリーンアップ"
#: ops/tasks.py:154
#: ops/tasks.py:162
msgid ""
"Due to exceptions caused by executing adhoc and playbooks in the Job "
"Center, \n"
@ -5267,11 +5273,11 @@ msgstr ""
"スクの状態が更新されないことがあります。そのため、システムは毎時間、3時間以上"
"終了していない異常なジョブをクリーニングし、タスクを失敗とマークします"
#: ops/tasks.py:167
#: ops/tasks.py:175
msgid "Clean job_execution db record"
msgstr "ジョブセンター実行履歴のクリーンアップ"
#: ops/tasks.py:169
#: ops/tasks.py:177
msgid ""
"Due to the execution of adhoc and playbooks in the Job Center, execution "
"records will \n"
@ -5493,7 +5499,7 @@ msgid "today"
msgstr "今日"
#: perms/notifications.py:12 perms/notifications.py:44
#: settings/serializers/feature.py:114
#: settings/serializers/feature.py:137
msgid "day"
msgstr "日"
@ -5750,7 +5756,7 @@ msgstr "アカウントの秘密の変更"
msgid "App ops"
msgstr "アプリ操作"
#: rbac/tree.py:57 settings/serializers/feature.py:120
#: rbac/tree.py:57 settings/serializers/feature.py:143
msgid "Feature"
msgstr "機能"
@ -5785,8 +5791,8 @@ msgstr "アプリ組織"
msgid "Ticket comment"
msgstr "チケットコメント"
#: rbac/tree.py:159 settings/serializers/feature.py:101
#: settings/serializers/feature.py:103 tickets/models/ticket/general.py:308
#: rbac/tree.py:159 settings/serializers/feature.py:124
#: settings/serializers/feature.py:126 tickets/models/ticket/general.py:308
msgid "Ticket"
msgstr "チケット"
@ -5804,7 +5810,7 @@ msgstr "チャットAIがオンになっていない"
#: settings/api/chat.py:79 settings/api/dingtalk.py:31
#: settings/api/feishu.py:39 settings/api/slack.py:34 settings/api/sms.py:160
#: settings/api/vault.py:40 settings/api/wecom.py:37
#: settings/api/vault.py:48 settings/api/wecom.py:37
msgid "Test success"
msgstr "テストの成功"
@ -6206,12 +6212,13 @@ msgstr "アイコン"
msgid "Service provider"
msgstr "サービスプロバイダー"
#: settings/serializers/auth/oauth2.py:31
#: settings/serializers/auth/oauth2.py:31 settings/serializers/feature.py:88
#: xpack/plugins/cloud/serializers/account_attrs.py:35
msgid "Client ID"
msgstr "クライアントID"
#: settings/serializers/auth/oauth2.py:34 settings/serializers/auth/oidc.py:24
#: settings/serializers/feature.py:91
#: xpack/plugins/cloud/serializers/account_attrs.py:38
msgid "Client Secret"
msgstr "クライアント秘密"
@ -6645,38 +6652,38 @@ msgstr ""
msgid "Change secret and push record retention days (day)"
msgstr "パスワード変更プッシュ記録を保持する日数 (日)"
#: settings/serializers/feature.py:19 settings/serializers/msg.py:68
#: settings/serializers/feature.py:20 settings/serializers/msg.py:68
msgid "Subject"
msgstr "件名"
#: settings/serializers/feature.py:23
#: settings/serializers/feature.py:24
msgid "More Link"
msgstr "もっとURL"
#: settings/serializers/feature.py:26
#: settings/serializers/feature.py:27
#: settings/templates/ldap/_msg_import_ldap_user.html:6
#: terminal/models/session/session.py:46
msgid "Date end"
msgstr "終了日"
#: settings/serializers/feature.py:39 settings/serializers/feature.py:41
#: settings/serializers/feature.py:42
#: settings/serializers/feature.py:40 settings/serializers/feature.py:42
#: settings/serializers/feature.py:43
msgid "Announcement"
msgstr "発表"
#: settings/serializers/feature.py:49
#: settings/serializers/feature.py:47 settings/serializers/feature.py:50
msgid "Vault"
msgstr "有効化 Vault"
#: settings/serializers/feature.py:58
msgid "Mount Point"
msgstr "マウントポイント"
#: settings/serializers/feature.py:53
msgid "Vault provider"
msgstr "プロバイダー"
#: settings/serializers/feature.py:64
#: settings/serializers/feature.py:58
msgid "Record limit"
msgstr "記録制限"
#: settings/serializers/feature.py:66
#: settings/serializers/feature.py:60
msgid ""
"If the specific value is less than 999 (default), the system will "
"automatically perform a task every night: check and delete historical "
@ -6687,76 +6694,85 @@ msgstr ""
"所定の数を超える履歴アカウントを確認して削除します。 値が 999 以上の場合、履"
"歴アカウントの削除は実行されません。"
#: settings/serializers/feature.py:76 settings/serializers/feature.py:82
#: settings/serializers/feature.py:78
msgid "Mount Point"
msgstr "マウントポイント"
#: settings/serializers/feature.py:94
#: xpack/plugins/cloud/serializers/account_attrs.py:41
msgid "Tenant ID"
msgstr "テナントID"
#: settings/serializers/feature.py:99 settings/serializers/feature.py:105
msgid "Chat AI"
msgstr "チャットAI"
#: settings/serializers/feature.py:85
#: settings/serializers/feature.py:108
msgid "GPT Base URL"
msgstr "GPTアドレス"
#: settings/serializers/feature.py:86
#: settings/serializers/feature.py:109
msgid "The base URL of the GPT service. For example: https://api.openai.com/v1"
msgstr "GPTサービスの基本のURL。例えば:https://api.openai.com/v1"
#: settings/serializers/feature.py:89 templates/_header_bar.html:96
#: settings/serializers/feature.py:112 templates/_header_bar.html:96
msgid "API Key"
msgstr "API Key"
#: settings/serializers/feature.py:93
#: settings/serializers/feature.py:116
msgid ""
"The proxy server address of the GPT service. For example: http://ip:port"
msgstr "GPTサービスのプロキシサーバーのアドレス。例えば:http://ip:port"
#: settings/serializers/feature.py:96
#: settings/serializers/feature.py:119
msgid "GPT Model"
msgstr "GPTモデル"
#: settings/serializers/feature.py:105
#: settings/serializers/feature.py:128
msgid "Approval without login"
msgstr "ログイン承認なし"
#: settings/serializers/feature.py:106
#: settings/serializers/feature.py:129
msgid "Allow direct approval ticket without login"
msgstr "ログインせずに直接承認チケットを許可します"
#: settings/serializers/feature.py:110
#: settings/serializers/feature.py:133
msgid "Period"
msgstr "期間"
#: settings/serializers/feature.py:111
#: settings/serializers/feature.py:134
msgid ""
"The default authorization time period when applying for assets via a ticket"
msgstr "ワークオーダーの資産申請に対するデフォルトの承認時間帯"
#: settings/serializers/feature.py:114
#: settings/serializers/feature.py:137
msgid "hour"
msgstr "時"
#: settings/serializers/feature.py:115
#: settings/serializers/feature.py:138
msgid "Unit"
msgstr "単位"
#: settings/serializers/feature.py:115
#: settings/serializers/feature.py:138
msgid "The unit of period"
msgstr "ユーザーの実行"
#: settings/serializers/feature.py:124
#: settings/serializers/feature.py:147
msgid ""
"Allow users to execute batch commands in the Workbench - Job Center - Adhoc"
msgstr ""
"ユーザーがワークベンチ - ジョブセンター - Adhocでバッチコマンドを実行すること"
"を許可します"
#: settings/serializers/feature.py:128
#: settings/serializers/feature.py:151
msgid "Command blacklist"
msgstr "コマンドフィルタリング"
#: settings/serializers/feature.py:129
#: settings/serializers/feature.py:152
msgid "Command blacklist in Adhoc"
msgstr "コマンドフィルタリング"
#: settings/serializers/feature.py:134
#: settings/serializers/feature.py:157
#: terminal/models/virtualapp/provider.py:17
#: terminal/models/virtualapp/virtualapp.py:36
#: terminal/models/virtualapp/virtualapp.py:97
@ -6764,11 +6780,11 @@ msgstr "コマンドフィルタリング"
msgid "Virtual app"
msgstr "仮想アプリケーション"
#: settings/serializers/feature.py:137
#: settings/serializers/feature.py:160
msgid "Virtual App"
msgstr "仮想アプリケーション"
#: settings/serializers/feature.py:139
#: settings/serializers/feature.py:162
msgid ""
"Virtual applications, you can use the Linux operating system as an "
"application server in remote applications."
@ -7733,6 +7749,18 @@ msgstr "リモートデスクトップ"
msgid "RDP Guide"
msgstr "RDP 接続ウィザード"
#: terminal/connect_methods.py:39
#, fuzzy
#| msgid "Client"
msgid "VNC Client"
msgstr "クライアント"
#: terminal/connect_methods.py:40
#, fuzzy
#| msgid "DB Guide"
msgid "VNC Guide"
msgstr "DB 接続ウィザード"
#: terminal/const.py:10
msgid "Warning"
msgstr "警告"
@ -7757,7 +7785,7 @@ msgstr "クリティカル"
msgid "High"
msgstr "高い"
#: terminal/const.py:47 terminal/const.py:84
#: terminal/const.py:47 terminal/const.py:86
#: users/templates/users/reset_password.html:54
msgid "Normal"
msgstr "正常"
@ -7766,47 +7794,47 @@ msgstr "正常"
msgid "Offline"
msgstr "オフライン"
#: terminal/const.py:80
#: terminal/const.py:82
msgid "Mismatch"
msgstr "一致しない"
#: terminal/const.py:85
#: terminal/const.py:87
msgid "Tunnel"
msgstr "ちかチャネル"
#: terminal/const.py:91
#: terminal/const.py:93
msgid "Read only"
msgstr "読み取り専用"
#: terminal/const.py:92
#: terminal/const.py:94
msgid "Writable"
msgstr "書き込み可能"
#: terminal/const.py:96
#: terminal/const.py:98
msgid "Kill session"
msgstr "セッションを終了する"
#: terminal/const.py:97
#: terminal/const.py:99
msgid "Lock session"
msgstr "セッションをロックする"
#: terminal/const.py:98
#: terminal/const.py:100
msgid "Unlock session"
msgstr "セッションのロックを解除する"
#: terminal/const.py:103
#: terminal/const.py:105
msgid "Replay create failed"
msgstr "ビデオの作成に失敗しました"
#: terminal/const.py:104
#: terminal/const.py:106
msgid "Replay upload failed"
msgstr "動画のアップロードに失敗しました"
#: terminal/const.py:105
#: terminal/const.py:107
msgid "Replay convert failed"
msgstr "ビデオのトランスコーディングに失敗しました"
#: terminal/const.py:106
#: terminal/const.py:108
msgid "Replay unsupported"
msgstr "録画はサポートされていません"
@ -7947,15 +7975,19 @@ msgstr "Redis ポート"
msgid "SQLServer port"
msgstr "SQLServer ポート"
#: terminal/models/component/endpoint.py:32
#: terminal/models/component/endpoint.py:119
#: terminal/models/component/endpoint.py:25
msgid "VNC port"
msgstr "VNC ポート"
#: terminal/models/component/endpoint.py:33
#: terminal/models/component/endpoint.py:120
#: terminal/serializers/endpoint.py:80 terminal/serializers/storage.py:41
#: terminal/serializers/storage.py:53 terminal/serializers/storage.py:83
#: terminal/serializers/storage.py:93 terminal/serializers/storage.py:101
msgid "Endpoint"
msgstr "エンドポイント"
#: terminal/models/component/endpoint.py:125
#: terminal/models/component/endpoint.py:126
msgid "Endpoint rule"
msgstr "エンドポイントルール"
@ -9858,6 +9890,14 @@ msgstr ""
msgid "Open MFA Authenticator and enter the 6-bit dynamic code"
msgstr "MFA Authenticatorを開き、6ビットの動的コードを入力します"
#: users/utils.py:60
msgid "Auth success"
msgstr "認証データベース"
#: users/utils.py:61
msgid "Redirecting to JumpServer Client"
msgstr ""
#: users/views/profile/otp.py:106
msgid "Already bound"
msgstr "すでにバインド済み"
@ -10562,10 +10602,6 @@ msgstr "プロバイダ表示"
msgid "Access key id"
msgstr "アクセスキー"
#: xpack/plugins/cloud/serializers/account_attrs.py:41
msgid "Tenant ID"
msgstr "テナントID"
#: xpack/plugins/cloud/serializers/account_attrs.py:44
msgid "Subscription ID"
msgstr "サブスクリプションID"

250
apps/i18n/core/zh/LC_MESSAGES/django.po

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-06 16:37+0800\n"
"POT-Creation-Date: 2024-11-11 19:17+0800\n"
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n"
@ -67,7 +67,7 @@ msgstr "完成"
#: assets/serializers/automations/base.py:52 audits/const.py:64
#: audits/models.py:64 audits/signal_handlers/activity_log.py:33
#: common/const/choices.py:65 ops/const.py:74 ops/serializers/celery.py:48
#: terminal/const.py:78 terminal/models/session/sharing.py:121
#: terminal/const.py:80 terminal/models/session/sharing.py:121
#: tickets/views/approve.py:128
msgid "Success"
msgstr "成功"
@ -76,7 +76,7 @@ msgstr "成功"
#: accounts/const/account.py:34 accounts/const/automation.py:109
#: accounts/serializers/automations/change_secret.py:174 audits/const.py:65
#: audits/signal_handlers/activity_log.py:33 common/const/choices.py:66
#: ops/const.py:76 terminal/const.py:79 xpack/plugins/cloud/const.py:47
#: ops/const.py:76 terminal/const.py:81 xpack/plugins/cloud/const.py:47
msgid "Failed"
msgstr "失败"
@ -149,7 +149,7 @@ msgid "Access key"
msgstr "Access key"
#: accounts/const/account.py:9 authentication/backends/passkey/models.py:16
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:55
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:75
msgid "Token"
msgstr "令牌"
@ -304,12 +304,12 @@ msgstr "仅创建"
msgid "Email"
msgstr "邮箱"
#: accounts/const/automation.py:105 terminal/const.py:87
#: accounts/const/automation.py:105 terminal/const.py:89
msgid "SFTP"
msgstr "SFTP"
#: accounts/const/automation.py:111 assets/serializers/automations/base.py:54
#: common/const/choices.py:63 terminal/const.py:77 tickets/const.py:29
#: common/const/choices.py:63 terminal/const.py:79 tickets/const.py:29
#: tickets/const.py:38
msgid "Pending"
msgstr "待定的"
@ -319,10 +319,14 @@ msgstr "待定的"
msgid "Database"
msgstr "数据库"
#: accounts/const/vault.py:9 settings/serializers/feature.py:46
#: accounts/const/vault.py:9 settings/serializers/feature.py:70
msgid "HCP Vault"
msgstr "HashiCorp Vault"
#: accounts/const/vault.py:10 settings/serializers/feature.py:83
msgid "Azure Key Vault"
msgstr ""
#: accounts/mixins.py:35
msgid "Export all"
msgstr "导出所有"
@ -469,7 +473,7 @@ msgstr "账号备份计划"
#: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:89 ops/models/job.py:247
#: ops/templates/ops/celery_task_log.html:101
#: perms/models/asset_permission.py:78 settings/serializers/feature.py:25
#: perms/models/asset_permission.py:78 settings/serializers/feature.py:26
#: settings/templates/ldap/_msg_import_ldap_user.html:5
#: terminal/models/applet/host.py:141 terminal/models/session/session.py:45
#: tickets/models/ticket/apply_application.py:30
@ -669,7 +673,7 @@ msgstr "触发方式"
msgid "Action"
msgstr "动作"
#: accounts/models/automations/push_account.py:57
#: accounts/models/automations/push_account.py:58
msgid "Push asset account"
msgstr "账号推送"
@ -724,7 +728,7 @@ msgstr "密码规则"
#: rbac/serializers/role.py:28 settings/models.py:35 settings/models.py:184
#: settings/serializers/msg.py:89 settings/serializers/terminal.py:9
#: terminal/models/applet/applet.py:34 terminal/models/component/endpoint.py:13
#: terminal/models/component/endpoint.py:111
#: terminal/models/component/endpoint.py:112
#: terminal/models/component/storage.py:26 terminal/models/component/task.py:13
#: terminal/models/component/terminal.py:85
#: terminal/models/virtualapp/provider.py:10
@ -1072,8 +1076,8 @@ msgstr "关联平台,可配置推送参数,如果不关联,将使用默认
#: ops/models/job.py:163 ops/models/playbook.py:31 rbac/models/role.py:37
#: settings/models.py:40 terminal/models/applet/applet.py:46
#: terminal/models/applet/applet.py:332 terminal/models/applet/host.py:143
#: terminal/models/component/endpoint.py:26
#: terminal/models/component/endpoint.py:121
#: terminal/models/component/endpoint.py:27
#: terminal/models/component/endpoint.py:122
#: terminal/models/session/session.py:47
#: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32
#: tickets/models/ticket/general.py:298 users/models/user/__init__.py:91
@ -1355,12 +1359,12 @@ msgid "Notify and warn"
msgstr "提示并告警"
#: acls/models/base.py:37 assets/models/cmd_filter.py:76
#: terminal/models/component/endpoint.py:114 xpack/plugins/cloud/models.py:316
#: terminal/models/component/endpoint.py:115 xpack/plugins/cloud/models.py:316
msgid "Priority"
msgstr "优先级"
#: acls/models/base.py:38 assets/models/cmd_filter.py:76
#: terminal/models/component/endpoint.py:115 xpack/plugins/cloud/models.py:317
#: terminal/models/component/endpoint.py:116 xpack/plugins/cloud/models.py:317
msgid "1-100, the lower the value will be match first"
msgstr "优先级可选范围为 1-100 (数值越小越优先)"
@ -1374,8 +1378,8 @@ msgstr "审批人"
#: authentication/models/connection_token.py:53
#: authentication/models/ssh_key.py:13
#: authentication/templates/authentication/_access_key_modal.html:32
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:27
#: terminal/models/component/endpoint.py:122
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:28
#: terminal/models/component/endpoint.py:123
#: terminal/models/session/sharing.py:29 terminal/serializers/terminal.py:44
#: tickets/const.py:36
msgid "Active"
@ -1395,7 +1399,7 @@ msgid "Accounts"
msgstr "账号"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:79 terminal/const.py:86
#: ops/serializers/job.py:79 terminal/const.py:88
#: terminal/models/session/session.py:43 terminal/serializers/command.py:18
#: terminal/templates/terminal/_msg_command_alert.html:12
#: terminal/templates/terminal/_msg_command_execute_alert.html:10
@ -1409,7 +1413,7 @@ msgid "Regex"
msgstr "正则表达式"
#: acls/models/command_acl.py:26 assets/models/cmd_filter.py:79
#: settings/models.py:185 settings/serializers/feature.py:20
#: settings/models.py:185 settings/serializers/feature.py:21
#: settings/serializers/msg.py:78 xpack/plugins/license/models.py:30
msgid "Content"
msgstr "内容"
@ -1669,7 +1673,7 @@ msgid "Authentication failed"
msgstr "认证失败"
#: assets/automations/ping_gateway/manager.py:60
#: assets/automations/ping_gateway/manager.py:86 terminal/const.py:102
#: assets/automations/ping_gateway/manager.py:86 terminal/const.py:104
msgid "Connect failed"
msgstr "连接失败"
@ -1717,9 +1721,9 @@ msgstr "脚本"
#: assets/const/category.py:10 assets/models/asset/host.py:8
#: settings/serializers/auth/radius.py:17 settings/serializers/auth/sms.py:76
#: settings/serializers/feature.py:52 settings/serializers/msg.py:30
#: terminal/models/component/endpoint.py:14 terminal/serializers/applet.py:17
#: xpack/plugins/cloud/manager.py:89
#: settings/serializers/feature.py:72 settings/serializers/feature.py:85
#: settings/serializers/msg.py:30 terminal/models/component/endpoint.py:14
#: terminal/serializers/applet.py:17 xpack/plugins/cloud/manager.py:89
#: xpack/plugins/cloud/serializers/account_attrs.py:72
msgid "Host"
msgstr "主机"
@ -2026,7 +2030,7 @@ msgstr "忽略证书校验"
msgid "Postgresql SSL mode"
msgstr "PostgreSQL SSL 模式"
#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:92
#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:115
msgid "Proxy"
msgstr "代理"
@ -3519,7 +3523,7 @@ msgid "Please change your password"
msgstr "请修改密码"
#: authentication/models/access_key.py:22
#: terminal/models/component/endpoint.py:112
#: terminal/models/component/endpoint.py:113
msgid "IP group"
msgstr "IPグループ"
@ -3810,7 +3814,7 @@ msgstr "代码错误"
#: authentication/templates/authentication/_msg_oauth_bind.html:3
#: authentication/templates/authentication/_msg_reset_password.html:3
#: authentication/templates/authentication/_msg_reset_password_code.html:9
#: jumpserver/conf.py:522
#: jumpserver/conf.py:529
#: perms/templates/perms/_msg_item_permissions_expire.html:3
#: tickets/templates/tickets/approve_check_password.html:32
#: users/templates/users/_msg_account_expire_reminder.html:4
@ -4553,16 +4557,16 @@ msgstr "不能包含特殊字符"
msgid "The mobile phone number format is incorrect"
msgstr "手机号格式不正确"
#: jumpserver/conf.py:516
#: jumpserver/conf.py:523
#, python-brace-format
msgid "The verification code is: {code}"
msgstr "验证码为: {code}"
#: jumpserver/conf.py:521
#: jumpserver/conf.py:528
msgid "Create account successfully"
msgstr "创建账号成功"
#: jumpserver/conf.py:523
#: jumpserver/conf.py:530
msgid "Your account has been created successfully"
msgstr "你的账号已创建成功"
@ -4785,7 +4789,7 @@ msgid "VCS"
msgstr "VCS"
#: ops/const.py:38 ops/models/adhoc.py:44 ops/models/variable.py:26
#: settings/serializers/feature.py:123
#: settings/serializers/feature.py:146
msgid "Adhoc"
msgstr "命令"
@ -4988,16 +4992,18 @@ msgid "Parameters define"
msgstr "参数定义"
#: ops/models/job.py:159
#, fuzzy
#| msgid "Periodic run"
msgid "Periodic variable"
msgstr "定时任务参数"
msgstr "周期执行"
#: ops/models/job.py:160
msgid "Run as"
msgstr "运行账号"
msgstr "运行用户"
#: ops/models/job.py:162
msgid "Run as policy"
msgstr "户策略"
msgstr "户策略"
#: ops/models/job.py:227 ops/models/variable.py:28 ops/serializers/job.py:98
#: terminal/notifications.py:182
@ -5025,32 +5031,40 @@ msgid "VCS URL"
msgstr "VCS URL"
#: ops/models/variable.py:11
#, fuzzy
#| msgid "Variable Type"
msgid "Variable name"
msgstr "参数名"
msgstr "参数类型"
#: ops/models/variable.py:12
msgid ""
"The variable name used in the script has a fixed prefix 'jms_' followed by "
"the input variable name. For example, if the variable name is 'name,' the "
"final generated environment variable will be 'jms_name'."
msgstr "在脚本使用的变量名称,固定前缀 jms_ + 输入的变量名,例如变量名name,则最终生成环境变量为 jms_name"
msgstr ""
#: ops/models/variable.py:16
#, fuzzy
#| msgid "Default"
msgid "Default Value"
msgstr "默认值"
msgstr "默认"
#: ops/models/variable.py:18
#, fuzzy
#| msgid "Variable Type"
msgid "Variable type"
msgstr "变量名"
msgstr "参数类型"
#: ops/models/variable.py:21 ops/serializers/variable.py:23
msgid "ExtraVars"
msgstr "额外参数"
msgstr ""
#: ops/models/variable.py:49 ops/serializers/adhoc.py:16
#: ops/serializers/job.py:22 ops/serializers/playbook.py:21
#, fuzzy
#| msgid "Variable Type"
msgid "Variable"
msgstr "变量"
msgstr "参数类型"
#: ops/notifications.py:20
msgid "Server performance"
@ -5123,37 +5137,37 @@ msgid ""
"is the value."
msgstr "每项单独一行,每行可以用英文冒号分割前边是显示的内容后边是值"
#: ops/tasks.py:52
#: ops/tasks.py:53
msgid "Run ansible task"
msgstr "运行 Ansible 任务"
#: ops/tasks.py:55
#: ops/tasks.py:56
msgid ""
"Execute scheduled adhoc and playbooks, periodically invoking the task for "
"execution"
msgstr "当执行定时的快捷命令,playbook,定时调用该任务执行"
#: ops/tasks.py:85
#: ops/tasks.py:88
msgid "Run ansible task execution"
msgstr "开始执行 Ansible 任务"
#: ops/tasks.py:88
#: ops/tasks.py:91
msgid "Execute the task when manually adhoc or playbooks"
msgstr "手动执行快捷命令,playbook时执行该任务"
#: ops/tasks.py:102
#: ops/tasks.py:107
msgid "Clear celery periodic tasks"
msgstr "清理周期任务"
#: ops/tasks.py:104
#: ops/tasks.py:109
msgid "At system startup, clean up celery tasks that no longer exist"
msgstr "系统启动时,清理已经不存在的celery任务"
#: ops/tasks.py:128
#: ops/tasks.py:133
msgid "Create or update periodic tasks"
msgstr "创建或更新周期任务"
#: ops/tasks.py:130
#: ops/tasks.py:135
msgid ""
"With version iterations, new tasks may be added, or task names and execution "
"times may \n"
@ -5164,11 +5178,11 @@ msgstr ""
"随着版本迭代,可能会新增任务或者修改任务的名称,执行时间,所以在系统启动时,"
"将会注册任务或者更新定时任务参数"
#: ops/tasks.py:143
#: ops/tasks.py:148
msgid "Periodic check service performance"
msgstr "周期检测服务性能"
#: ops/tasks.py:145
#: ops/tasks.py:150
msgid ""
"Check every hour whether each component is offline and whether the CPU, "
"memory, \n"
@ -5178,11 +5192,11 @@ msgstr ""
"每小时检测各组件是否离线,cpu,内存,硬盘使用率是否超过阈值,向管理员发送消息"
"预警"
#: ops/tasks.py:155
#: ops/tasks.py:160
msgid "Clean up unexpected jobs"
msgstr "清理异常作业"
#: ops/tasks.py:157
#: ops/tasks.py:162
msgid ""
"Due to exceptions caused by executing adhoc and playbooks in the Job "
"Center, \n"
@ -5195,11 +5209,11 @@ msgstr ""
"由于作业中心执行快捷命令,playbook会产生异常,任务状态未更新完成,系统将每小"
"时执行清理超3小时未完成的异常作业,并将任务标记失败"
#: ops/tasks.py:170
#: ops/tasks.py:175
msgid "Clean job_execution db record"
msgstr "清理作业中心执行历史"
#: ops/tasks.py:172
#: ops/tasks.py:177
msgid ""
"Due to the execution of adhoc and playbooks in the Job Center, execution "
"records will \n"
@ -5418,7 +5432,7 @@ msgid "today"
msgstr "今天"
#: perms/notifications.py:12 perms/notifications.py:44
#: settings/serializers/feature.py:114
#: settings/serializers/feature.py:137
msgid "day"
msgstr "天"
@ -5673,7 +5687,7 @@ msgstr "账号改密"
msgid "App ops"
msgstr "作业中心"
#: rbac/tree.py:57 settings/serializers/feature.py:120
#: rbac/tree.py:57 settings/serializers/feature.py:143
msgid "Feature"
msgstr "功能"
@ -5708,8 +5722,8 @@ msgstr "组织管理"
msgid "Ticket comment"
msgstr "工单评论"
#: rbac/tree.py:159 settings/serializers/feature.py:101
#: settings/serializers/feature.py:103 tickets/models/ticket/general.py:308
#: rbac/tree.py:159 settings/serializers/feature.py:124
#: settings/serializers/feature.py:126 tickets/models/ticket/general.py:308
msgid "Ticket"
msgstr "工单"
@ -5727,7 +5741,7 @@ msgstr "聊天 AI 没有开启"
#: settings/api/chat.py:79 settings/api/dingtalk.py:31
#: settings/api/feishu.py:39 settings/api/slack.py:34 settings/api/sms.py:160
#: settings/api/vault.py:40 settings/api/wecom.py:37
#: settings/api/vault.py:48 settings/api/wecom.py:37
msgid "Test success"
msgstr "测试成功"
@ -6120,12 +6134,13 @@ msgstr "图标"
msgid "Service provider"
msgstr "服务提供商"
#: settings/serializers/auth/oauth2.py:31
#: settings/serializers/auth/oauth2.py:31 settings/serializers/feature.py:88
#: xpack/plugins/cloud/serializers/account_attrs.py:35
msgid "Client ID"
msgstr "客户端 ID"
#: settings/serializers/auth/oauth2.py:34 settings/serializers/auth/oidc.py:24
#: settings/serializers/feature.py:91
#: xpack/plugins/cloud/serializers/account_attrs.py:38
msgid "Client Secret"
msgstr "客户端密钥"
@ -6547,38 +6562,40 @@ msgstr ""
msgid "Change secret and push record retention days (day)"
msgstr "改密推送记录保留天数 (天)"
#: settings/serializers/feature.py:19 settings/serializers/msg.py:68
#: settings/serializers/feature.py:20 settings/serializers/msg.py:68
msgid "Subject"
msgstr "主题"
#: settings/serializers/feature.py:23
#: settings/serializers/feature.py:24
msgid "More Link"
msgstr "更多信息 URL"
#: settings/serializers/feature.py:26
#: settings/serializers/feature.py:27
#: settings/templates/ldap/_msg_import_ldap_user.html:6
#: terminal/models/session/session.py:46
msgid "Date end"
msgstr "结束日期"
#: settings/serializers/feature.py:39 settings/serializers/feature.py:41
#: settings/serializers/feature.py:42
#: settings/serializers/feature.py:40 settings/serializers/feature.py:42
#: settings/serializers/feature.py:43
msgid "Announcement"
msgstr "公告"
#: settings/serializers/feature.py:49
#: settings/serializers/feature.py:47 settings/serializers/feature.py:50
msgid "Vault"
msgstr "启用 Vault"
#: settings/serializers/feature.py:58
msgid "Mount Point"
msgstr "挂载点"
#: settings/serializers/feature.py:53
#, fuzzy
#| msgid "Provider"
msgid "Vault provider"
msgstr "云服务商"
#: settings/serializers/feature.py:64
#: settings/serializers/feature.py:58
msgid "Record limit"
msgstr "记录限制"
#: settings/serializers/feature.py:66
#: settings/serializers/feature.py:60
msgid ""
"If the specific value is less than 999 (default), the system will "
"automatically perform a task every night: check and delete historical "
@ -6588,74 +6605,85 @@ msgstr ""
"若特定数值小于999,系统将在每日晚间自动执行任务:检查并删除超出预定数量的历史"
"账号。如果该数值达到或超过999,则不进行任何历史账号的删除操作。"
#: settings/serializers/feature.py:76 settings/serializers/feature.py:82
#: settings/serializers/feature.py:78
msgid "Mount Point"
msgstr "挂载点"
#: settings/serializers/feature.py:94
#: xpack/plugins/cloud/serializers/account_attrs.py:41
#, fuzzy
#| msgid "Client ID"
msgid "Tenant ID"
msgstr "客户端 ID"
#: settings/serializers/feature.py:99 settings/serializers/feature.py:105
msgid "Chat AI"
msgstr "聊天 AI"
#: settings/serializers/feature.py:85
#: settings/serializers/feature.py:108
msgid "GPT Base URL"
msgstr "GPT 地址"
#: settings/serializers/feature.py:86
#: settings/serializers/feature.py:109
msgid "The base URL of the GPT service. For example: https://api.openai.com/v1"
msgstr "GPT 服务的基本 URL。例如:https://api.openai.com/v1"
#: settings/serializers/feature.py:89 templates/_header_bar.html:96
#: settings/serializers/feature.py:112 templates/_header_bar.html:96
msgid "API Key"
msgstr "API Key"
#: settings/serializers/feature.py:93
#: settings/serializers/feature.py:116
msgid ""
"The proxy server address of the GPT service. For example: http://ip:port"
msgstr "GPT 服务的代理服务器地址。例如:http://ip:port"
#: settings/serializers/feature.py:96
#: settings/serializers/feature.py:119
msgid "GPT Model"
msgstr "GPT 模型"
#: settings/serializers/feature.py:105
#: settings/serializers/feature.py:128
msgid "Approval without login"
msgstr "免登录审批"
#: settings/serializers/feature.py:106
#: settings/serializers/feature.py:129
msgid "Allow direct approval ticket without login"
msgstr "允许无需登录直接批准工单"
#: settings/serializers/feature.py:110
#: settings/serializers/feature.py:133
msgid "Period"
msgstr "时段"
#: settings/serializers/feature.py:111
#: settings/serializers/feature.py:134
msgid ""
"The default authorization time period when applying for assets via a ticket"
msgstr "工单申请资产的默认授权时间段"
#: settings/serializers/feature.py:114
#: settings/serializers/feature.py:137
msgid "hour"
msgstr "时"
#: settings/serializers/feature.py:115
#: settings/serializers/feature.py:138
msgid "Unit"
msgstr "单位"
#: settings/serializers/feature.py:115
#: settings/serializers/feature.py:138
msgid "The unit of period"
msgstr "执行周期"
#: settings/serializers/feature.py:124
#: settings/serializers/feature.py:147
msgid ""
"Allow users to execute batch commands in the Workbench - Job Center - Adhoc"
msgstr "允许用户在工作台 - 作业中心 - Adhoc 中执行批量命令"
#: settings/serializers/feature.py:128
#: settings/serializers/feature.py:151
msgid "Command blacklist"
msgstr "作业中心命令黑名单"
#: settings/serializers/feature.py:129
#: settings/serializers/feature.py:152
msgid "Command blacklist in Adhoc"
msgstr "作业中心命令黑名单"
#: settings/serializers/feature.py:134
#: settings/serializers/feature.py:157
#: terminal/models/virtualapp/provider.py:17
#: terminal/models/virtualapp/virtualapp.py:36
#: terminal/models/virtualapp/virtualapp.py:97
@ -6663,11 +6691,11 @@ msgstr "作业中心命令黑名单"
msgid "Virtual app"
msgstr "虚拟应用"
#: settings/serializers/feature.py:137
#: settings/serializers/feature.py:160
msgid "Virtual App"
msgstr "虚拟应用"
#: settings/serializers/feature.py:139
#: settings/serializers/feature.py:162
msgid ""
"Virtual applications, you can use the Linux operating system as an "
"application server in remote applications."
@ -7583,6 +7611,14 @@ msgstr "远程桌面客户端"
msgid "RDP Guide"
msgstr "RDP 连接向导"
#: terminal/connect_methods.py:39
msgid "VNC Client"
msgstr "VNC 客户端"
#: terminal/connect_methods.py:40
msgid "VNC Guide"
msgstr "VNC 连接向导"
#: terminal/const.py:10
msgid "Warning"
msgstr "告警"
@ -7607,7 +7643,7 @@ msgstr "严重"
msgid "High"
msgstr "较高"
#: terminal/const.py:47 terminal/const.py:84
#: terminal/const.py:47 terminal/const.py:86
#: users/templates/users/reset_password.html:54
msgid "Normal"
msgstr "正常"
@ -7616,47 +7652,47 @@ msgstr "正常"
msgid "Offline"
msgstr "离线"
#: terminal/const.py:80
#: terminal/const.py:82
msgid "Mismatch"
msgstr "未匹配"
#: terminal/const.py:85
#: terminal/const.py:87
msgid "Tunnel"
msgstr "隧道"
#: terminal/const.py:91
#: terminal/const.py:93
msgid "Read only"
msgstr "只读"
#: terminal/const.py:92
#: terminal/const.py:94
msgid "Writable"
msgstr "读写"
#: terminal/const.py:96
#: terminal/const.py:98
msgid "Kill session"
msgstr "终断会话"
#: terminal/const.py:97
#: terminal/const.py:99
msgid "Lock session"
msgstr "锁定会话"
#: terminal/const.py:98
#: terminal/const.py:100
msgid "Unlock session"
msgstr "解锁会话"
#: terminal/const.py:103
#: terminal/const.py:105
msgid "Replay create failed"
msgstr "录像创建失败"
#: terminal/const.py:104
#: terminal/const.py:106
msgid "Replay upload failed"
msgstr "录像上传失败"
#: terminal/const.py:105
#: terminal/const.py:107
msgid "Replay convert failed"
msgstr "录像转码失败"
#: terminal/const.py:106
#: terminal/const.py:108
msgid "Replay unsupported"
msgstr "不支持录像"
@ -7797,15 +7833,19 @@ msgstr "Redis 端口"
msgid "SQLServer port"
msgstr "SQLServer 端口"
#: terminal/models/component/endpoint.py:32
#: terminal/models/component/endpoint.py:119
#: terminal/models/component/endpoint.py:25
msgid "VNC port"
msgstr "VNC 端口"
#: terminal/models/component/endpoint.py:33
#: terminal/models/component/endpoint.py:120
#: terminal/serializers/endpoint.py:80 terminal/serializers/storage.py:41
#: terminal/serializers/storage.py:53 terminal/serializers/storage.py:83
#: terminal/serializers/storage.py:93 terminal/serializers/storage.py:101
msgid "Endpoint"
msgstr "端点"
#: terminal/models/component/endpoint.py:125
#: terminal/models/component/endpoint.py:126
msgid "Endpoint rule"
msgstr "端点规则"
@ -10360,10 +10400,6 @@ msgstr "服务商显示"
msgid "Access key id"
msgstr "Access key id"
#: xpack/plugins/cloud/serializers/account_attrs.py:41
msgid "Tenant ID"
msgstr "租户 ID"
#: xpack/plugins/cloud/serializers/account_attrs.py:44
msgid "Subscription ID"
msgstr "订阅 ID"

352
apps/i18n/core/zh_Hant/LC_MESSAGES/django.po

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-06 11:28+0800\n"
"POT-Creation-Date: 2024-11-11 19:17+0800\n"
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n"
@ -37,7 +37,7 @@ msgstr "生成與資產或應用程序相關的備份信息文件"
#: accounts/automations/backup_account/handlers.py:156
#: accounts/automations/backup_account/handlers.py:295
#: accounts/automations/backup_account/manager.py:40 ops/serializers/job.py:76
#: accounts/automations/backup_account/manager.py:40 ops/serializers/job.py:82
#: settings/templates/ldap/_msg_import_ldap_user.html:7
msgid "Time cost"
msgstr "花費時間"
@ -69,7 +69,7 @@ msgstr "完成"
#: assets/serializers/automations/base.py:52 audits/const.py:64
#: audits/models.py:64 audits/signal_handlers/activity_log.py:33
#: common/const/choices.py:65 ops/const.py:74 ops/serializers/celery.py:48
#: terminal/const.py:78 terminal/models/session/sharing.py:121
#: terminal/const.py:80 terminal/models/session/sharing.py:121
#: tickets/views/approve.py:128
msgid "Success"
msgstr "成功"
@ -78,7 +78,7 @@ msgstr "成功"
#: accounts/const/account.py:34 accounts/const/automation.py:109
#: accounts/serializers/automations/change_secret.py:174 audits/const.py:65
#: audits/signal_handlers/activity_log.py:33 common/const/choices.py:66
#: ops/const.py:76 terminal/const.py:79 xpack/plugins/cloud/const.py:47
#: ops/const.py:76 terminal/const.py:81 xpack/plugins/cloud/const.py:47
msgid "Failed"
msgstr "失敗"
@ -151,7 +151,7 @@ msgid "Access key"
msgstr "Access key"
#: accounts/const/account.py:9 authentication/backends/passkey/models.py:16
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:55
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:75
msgid "Token"
msgstr "Token"
@ -306,12 +306,12 @@ msgstr "僅創建"
msgid "Email"
msgstr "信箱"
#: accounts/const/automation.py:105 terminal/const.py:87
#: accounts/const/automation.py:105 terminal/const.py:89
msgid "SFTP"
msgstr "SFTP"
#: accounts/const/automation.py:111 assets/serializers/automations/base.py:54
#: common/const/choices.py:63 terminal/const.py:77 tickets/const.py:29
#: common/const/choices.py:63 terminal/const.py:79 tickets/const.py:29
#: tickets/const.py:38
msgid "Pending"
msgstr "待定的"
@ -321,10 +321,14 @@ msgstr "待定的"
msgid "Database"
msgstr "資料庫"
#: accounts/const/vault.py:9 settings/serializers/feature.py:46
#: accounts/const/vault.py:9 settings/serializers/feature.py:70
msgid "HCP Vault"
msgstr "HashiCorp Vault"
#: accounts/const/vault.py:10 settings/serializers/feature.py:83
msgid "Azure Key Vault"
msgstr ""
#: accounts/mixins.py:35
msgid "Export all"
msgstr "匯出所有"
@ -469,9 +473,9 @@ msgstr "帳號備份計劃"
#: accounts/models/automations/backup_account.py:120
#: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:89 ops/models/job.py:242
#: ops/models/base.py:55 ops/models/celery.py:89 ops/models/job.py:247
#: ops/templates/ops/celery_task_log.html:101
#: perms/models/asset_permission.py:78 settings/serializers/feature.py:25
#: perms/models/asset_permission.py:78 settings/serializers/feature.py:26
#: settings/templates/ldap/_msg_import_ldap_user.html:5
#: terminal/models/applet/host.py:141 terminal/models/session/session.py:45
#: tickets/models/ticket/apply_application.py:30
@ -508,7 +512,7 @@ msgstr "原因"
#: accounts/models/automations/backup_account.py:136
#: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:152
#: ops/serializers/job.py:74 terminal/serializers/session.py:54
#: ops/serializers/job.py:80 terminal/serializers/session.py:54
msgid "Is success"
msgstr "是否成功"
@ -583,7 +587,7 @@ msgstr "開始日期"
#: accounts/models/automations/change_secret.py:42
#: assets/models/automations/base.py:116 ops/models/base.py:56
#: ops/models/celery.py:90 ops/models/job.py:243
#: ops/models/celery.py:90 ops/models/job.py:248
#: terminal/models/applet/host.py:142
msgid "Date finished"
msgstr "結束日期"
@ -591,7 +595,7 @@ msgstr "結束日期"
#: accounts/models/automations/change_secret.py:44
#: assets/models/automations/base.py:113
#: assets/serializers/automations/base.py:39 audits/models.py:208
#: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:234
#: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:239
#: terminal/models/applet/applet.py:331 terminal/models/applet/host.py:140
#: terminal/models/component/status.py:30
#: terminal/models/virtualapp/virtualapp.py:99
@ -666,12 +670,12 @@ msgstr "觸發方式"
#: audits/models.py:92 audits/serializers.py:84
#: authentication/serializers/connect_token_secret.py:119
#: authentication/templates/authentication/_access_key_modal.html:34
#: behemoth/serializers/environment.py:13 perms/serializers/permission.py:52
#: perms/serializers/permission.py:74 tickets/serializers/ticket/ticket.py:21
#: perms/serializers/permission.py:52 perms/serializers/permission.py:74
#: tickets/serializers/ticket/ticket.py:21
msgid "Action"
msgstr "動作"
#: accounts/models/automations/push_account.py:57
#: accounts/models/automations/push_account.py:58
msgid "Push asset account"
msgstr "帳號推送"
@ -720,13 +724,13 @@ msgstr "密碼規則"
#: authentication/serializers/connect_token_secret.py:113
#: authentication/serializers/connect_token_secret.py:169 labels/models.py:11
#: ops/mixin.py:28 ops/models/adhoc.py:19 ops/models/celery.py:15
#: ops/models/celery.py:81 ops/models/job.py:142 ops/models/playbook.py:30
#: ops/serializers/job.py:18 orgs/models.py:82
#: ops/models/celery.py:81 ops/models/job.py:145 ops/models/playbook.py:28
#: ops/models/variable.py:9 ops/serializers/job.py:19 orgs/models.py:82
#: perms/models/asset_permission.py:61 rbac/models/role.py:29
#: rbac/serializers/role.py:28 settings/models.py:35 settings/models.py:184
#: settings/serializers/msg.py:89 settings/serializers/terminal.py:9
#: terminal/models/applet/applet.py:34 terminal/models/component/endpoint.py:13
#: terminal/models/component/endpoint.py:111
#: terminal/models/component/endpoint.py:112
#: terminal/models/component/storage.py:26 terminal/models/component/task.py:13
#: terminal/models/component/terminal.py:85
#: terminal/models/virtualapp/provider.py:10
@ -884,7 +888,7 @@ msgstr "類別"
#: assets/serializers/asset/common.py:146 assets/serializers/platform.py:159
#: assets/serializers/platform.py:171 audits/serializers.py:53
#: audits/serializers.py:170
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:153
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:40
#: terminal/models/component/storage.py:58
#: terminal/models/component/storage.py:152 terminal/serializers/applet.py:29
@ -920,10 +924,8 @@ msgstr "已修改"
#: assets/models/automations/base.py:19
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:34
#: assets/serializers/platform.py:180 assets/serializers/platform.py:212
#: authentication/api/connection_token.py:410
#: behemoth/serializers/environment.py:11
#: behemoth/serializers/environment.py:22 ops/models/base.py:17
#: ops/models/job.py:152 ops/serializers/job.py:19
#: authentication/api/connection_token.py:410 ops/models/base.py:17
#: ops/models/job.py:155 ops/serializers/job.py:20
#: perms/serializers/permission.py:46
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:89
@ -1073,11 +1075,11 @@ msgstr "關聯平台,可配置推送參數,如果不關聯,將使用默認
#: accounts/serializers/account/virtual.py:19 assets/models/cmd_filter.py:40
#: assets/models/cmd_filter.py:88 common/db/models.py:36 ops/models/adhoc.py:25
#: ops/models/job.py:158 ops/models/playbook.py:33 rbac/models/role.py:37
#: ops/models/job.py:163 ops/models/playbook.py:31 rbac/models/role.py:37
#: settings/models.py:40 terminal/models/applet/applet.py:46
#: terminal/models/applet/applet.py:332 terminal/models/applet/host.py:143
#: terminal/models/component/endpoint.py:26
#: terminal/models/component/endpoint.py:121
#: terminal/models/component/endpoint.py:27
#: terminal/models/component/endpoint.py:122
#: terminal/models/session/session.py:47
#: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32
#: tickets/models/ticket/general.py:298 users/models/user/__init__.py:91
@ -1097,7 +1099,8 @@ msgstr ""
#: accounts/serializers/automations/base.py:23
#: assets/models/asset/common.py:176 assets/serializers/asset/common.py:172
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:47
#: assets/serializers/automations/base.py:21 ops/serializers/job.py:21
#: perms/serializers/permission.py:47
msgid "Nodes"
msgstr "節點"
@ -1358,12 +1361,12 @@ msgid "Notify and warn"
msgstr "提示並警告"
#: acls/models/base.py:37 assets/models/cmd_filter.py:76
#: terminal/models/component/endpoint.py:114 xpack/plugins/cloud/models.py:316
#: terminal/models/component/endpoint.py:115 xpack/plugins/cloud/models.py:316
msgid "Priority"
msgstr "優先度"
#: acls/models/base.py:38 assets/models/cmd_filter.py:76
#: terminal/models/component/endpoint.py:115 xpack/plugins/cloud/models.py:317
#: terminal/models/component/endpoint.py:116 xpack/plugins/cloud/models.py:317
msgid "1-100, the lower the value will be match first"
msgstr "優先度可選範圍為 1-100 (數值越小越優先)"
@ -1377,8 +1380,8 @@ msgstr "審批人"
#: authentication/models/connection_token.py:53
#: authentication/models/ssh_key.py:13
#: authentication/templates/authentication/_access_key_modal.html:32
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:27
#: terminal/models/component/endpoint.py:122
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:28
#: terminal/models/component/endpoint.py:123
#: terminal/models/session/sharing.py:29 terminal/serializers/terminal.py:44
#: tickets/const.py:36
msgid "Active"
@ -1398,7 +1401,7 @@ msgid "Accounts"
msgstr "帳號管理"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:73 terminal/const.py:86
#: ops/serializers/job.py:79 terminal/const.py:88
#: terminal/models/session/session.py:43 terminal/serializers/command.py:18
#: terminal/templates/terminal/_msg_command_alert.html:12
#: terminal/templates/terminal/_msg_command_execute_alert.html:10
@ -1412,7 +1415,7 @@ msgid "Regex"
msgstr "正則表達式"
#: acls/models/command_acl.py:26 assets/models/cmd_filter.py:79
#: settings/models.py:185 settings/serializers/feature.py:20
#: settings/models.py:185 settings/serializers/feature.py:21
#: settings/serializers/msg.py:78 xpack/plugins/license/models.py:30
msgid "Content"
msgstr "內容"
@ -1672,7 +1675,7 @@ msgid "Authentication failed"
msgstr "認證失敗"
#: assets/automations/ping_gateway/manager.py:60
#: assets/automations/ping_gateway/manager.py:86 terminal/const.py:102
#: assets/automations/ping_gateway/manager.py:86 terminal/const.py:104
msgid "Connect failed"
msgstr "連接失敗"
@ -1720,9 +1723,9 @@ msgstr "腳本"
#: assets/const/category.py:10 assets/models/asset/host.py:8
#: settings/serializers/auth/radius.py:17 settings/serializers/auth/sms.py:76
#: settings/serializers/feature.py:52 settings/serializers/msg.py:30
#: terminal/models/component/endpoint.py:14 terminal/serializers/applet.py:17
#: xpack/plugins/cloud/manager.py:89
#: settings/serializers/feature.py:72 settings/serializers/feature.py:85
#: settings/serializers/msg.py:30 terminal/models/component/endpoint.py:14
#: terminal/serializers/applet.py:17 xpack/plugins/cloud/manager.py:89
#: xpack/plugins/cloud/serializers/account_attrs.py:72
msgid "Host"
msgstr "主機"
@ -2029,18 +2032,19 @@ msgstr "忽略證書校驗"
msgid "Postgresql SSL mode"
msgstr "PostgreSQL SSL 模式"
#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:92
#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:115
msgid "Proxy"
msgstr "代理"
#: assets/models/automations/base.py:18 assets/models/cmd_filter.py:32
#: assets/models/node.py:553 perms/models/asset_permission.py:72
#: tickets/models/ticket/apply_asset.py:14 xpack/plugins/cloud/models.py:388
#: assets/models/node.py:553 ops/models/job.py:156
#: perms/models/asset_permission.py:72 tickets/models/ticket/apply_asset.py:14
#: xpack/plugins/cloud/models.py:388
msgid "Node"
msgstr "節點"
#: assets/models/automations/base.py:22 ops/models/job.py:237
#: settings/serializers/auth/sms.py:108
#: assets/models/automations/base.py:22 ops/models/job.py:242
#: ops/serializers/job.py:23 settings/serializers/auth/sms.py:108
msgid "Parameters"
msgstr "參數"
@ -2055,7 +2059,7 @@ msgstr "資產自動化任務"
# msgid "Comment"
# msgstr "備註"
#: assets/models/automations/base.py:114 assets/models/cmd_filter.py:41
#: common/db/models.py:34 ops/models/base.py:54 ops/models/job.py:241
#: common/db/models.py:34 ops/models/base.py:54 ops/models/job.py:246
#: users/models/user/__init__.py:311
msgid "Date created"
msgstr "創建日期"
@ -2187,7 +2191,7 @@ msgstr "可以匹配節點"
msgid "Primary"
msgstr "主要的"
#: assets/models/platform.py:18
#: assets/models/platform.py:18 ops/models/variable.py:20
msgid "Required"
msgstr "必須的"
@ -2730,7 +2734,7 @@ msgstr "標籤"
msgid "operate_log_id"
msgstr "Action日誌ID"
#: audits/backends/db.py:111
#: audits/backends/db.py:111 ops/models/variable.py:19
msgid "Tips"
msgstr "提示"
@ -2974,8 +2978,8 @@ msgid "Offline user session"
msgstr "下線用戶會話"
#: audits/serializers.py:33 ops/models/adhoc.py:24 ops/models/base.py:16
#: ops/models/base.py:53 ops/models/celery.py:87 ops/models/job.py:151
#: ops/models/job.py:240 ops/models/playbook.py:32
#: ops/models/base.py:53 ops/models/celery.py:87 ops/models/job.py:154
#: ops/models/job.py:245 ops/models/playbook.py:30 ops/models/variable.py:17
#: terminal/models/session/sharing.py:25
msgid "Creator"
msgstr "創建者"
@ -3521,7 +3525,7 @@ msgid "Please change your password"
msgstr "請修改密碼"
#: authentication/models/access_key.py:22
#: terminal/models/component/endpoint.py:112
#: terminal/models/component/endpoint.py:113
msgid "IP group"
msgstr "IPグループ"
@ -3812,7 +3816,7 @@ msgstr "代碼錯誤"
#: authentication/templates/authentication/_msg_oauth_bind.html:3
#: authentication/templates/authentication/_msg_reset_password.html:3
#: authentication/templates/authentication/_msg_reset_password_code.html:9
#: jumpserver/conf.py:522
#: jumpserver/conf.py:529
#: perms/templates/perms/_msg_item_permissions_expire.html:3
#: tickets/templates/tickets/approve_check_password.html:32
#: users/templates/users/_msg_account_expire_reminder.html:4
@ -4555,16 +4559,16 @@ msgstr "不能包含特殊字元"
msgid "The mobile phone number format is incorrect"
msgstr "手機號碼格式不正確"
#: jumpserver/conf.py:516
#: jumpserver/conf.py:523
#, python-brace-format
msgid "The verification code is: {code}"
msgstr "驗證碼為: {code}"
#: jumpserver/conf.py:521
#: jumpserver/conf.py:528
msgid "Create account successfully"
msgstr "創建帳號成功"
#: jumpserver/conf.py:523
#: jumpserver/conf.py:530
msgid "Your account has been created successfully"
msgstr "你的帳號已創建成功"
@ -4665,7 +4669,7 @@ msgid ""
" work orders, and other notifications"
msgstr "系統一些告警,工單等需要發送站內信時執行該任務"
#: ops/ansible/inventory.py:116 ops/models/job.py:65
#: ops/ansible/inventory.py:116 ops/models/job.py:68
msgid "No account available"
msgstr "無可用帳號"
@ -4689,34 +4693,34 @@ msgstr "任務 {} 不存在"
msgid "Task {} args or kwargs error"
msgstr "任務 {} 執行參數錯誤"
#: ops/api/job.py:83
#: ops/api/job.py:68
#, python-brace-format
msgid ""
"Asset ({asset}) must have at least one of the following protocols added: "
"SSH, SFTP, or WinRM"
msgstr "资产({asset})至少要添加ssh,sftp,winrm其中一种协议"
#: ops/api/job.py:84
#: ops/api/job.py:69
#, python-brace-format
msgid "Asset ({asset}) authorization is missing SSH, SFTP, or WinRM protocol"
msgstr "资产({asset})授权缺少ssh,sftp或winrm协议"
#: ops/api/job.py:85
#: ops/api/job.py:70
#, python-brace-format
msgid "Asset ({asset}) authorization lacks upload permissions"
msgstr "资产({asset})授权缺少上传权限"
#: ops/api/job.py:170
#: ops/api/job.py:157
msgid "Duplicate file exists"
msgstr "存在同名文件"
#: ops/api/job.py:175
#: ops/api/job.py:162
#, python-brace-format
msgid ""
"File size exceeds maximum limit. Please select a file smaller than {limit}MB"
msgstr "檔案大小超過最大限制。請選擇小於 {limit}MB 的文件。"
#: ops/api/job.py:244
#: ops/api/job.py:231
msgid ""
"The task is being created and cannot be interrupted. Please try again later."
msgstr "正在創建任務,無法中斷,請稍後重試。"
@ -4785,11 +4789,13 @@ msgstr "空白"
msgid "VCS"
msgstr "VCS"
#: ops/const.py:38 ops/models/adhoc.py:44 settings/serializers/feature.py:123
#: ops/const.py:38 ops/models/adhoc.py:44 ops/models/variable.py:26
#: settings/serializers/feature.py:146
msgid "Adhoc"
msgstr "命令"
#: ops/const.py:39 ops/models/job.py:149 ops/models/playbook.py:91
#: ops/const.py:39 ops/models/job.py:152 ops/models/playbook.py:89
#: ops/models/variable.py:23
msgid "Playbook"
msgstr "Playbook"
@ -4901,16 +4907,16 @@ msgstr "需要週期或定期設定"
msgid "Pattern"
msgstr "模式"
#: ops/models/adhoc.py:22 ops/models/job.py:146
#: ops/models/adhoc.py:22 ops/models/job.py:149
msgid "Module"
msgstr "模組"
#: ops/models/adhoc.py:23 ops/models/celery.py:82 ops/models/job.py:144
#: ops/models/adhoc.py:23 ops/models/celery.py:82 ops/models/job.py:147
#: terminal/models/component/task.py:14
msgid "Args"
msgstr "參數"
#: ops/models/adhoc.py:26 ops/models/playbook.py:36 ops/serializers/mixin.py:10
#: ops/models/adhoc.py:26 ops/models/playbook.py:34 ops/serializers/mixin.py:10
#: rbac/models/role.py:31 rbac/models/rolebinding.py:46
#: rbac/serializers/role.py:12 settings/serializers/auth/oauth2.py:37
msgid "Scope"
@ -4926,16 +4932,16 @@ msgstr "帳號策略"
msgid "Last execution"
msgstr "最後執行"
#: ops/models/base.py:22 ops/serializers/job.py:17
#: ops/models/base.py:22 ops/serializers/job.py:18
msgid "Date last run"
msgstr "最後運行日期"
#: ops/models/base.py:51 ops/models/job.py:238
#: ops/models/base.py:51 ops/models/job.py:243
#: xpack/plugins/cloud/models.py:225
msgid "Result"
msgstr "結果"
#: ops/models/base.py:52 ops/models/job.py:239
#: ops/models/base.py:52 ops/models/job.py:244
#: xpack/plugins/cloud/manager.py:99
msgid "Summary"
msgstr "匯總"
@ -4964,52 +4970,52 @@ msgstr "發布日期"
msgid "Celery Task Execution"
msgstr "Celery 任務執行"
#: ops/models/job.py:147
#: ops/models/job.py:150
msgid "Run dir"
msgstr "執行目錄"
#: ops/models/job.py:148
#: ops/models/job.py:151
msgid "Timeout (Seconds)"
msgstr "超時時間 (秒)"
#: ops/models/job.py:153
#: ops/models/job.py:157
msgid "Use Parameter Define"
msgstr "使用參數定義"
#: ops/models/job.py:154
#: ops/models/job.py:158
msgid "Parameters define"
msgstr "參數定義"
#: ops/models/job.py:155
msgid "Run as"
msgstr "運行賬號"
msgstr "執行使用者"
#: ops/models/job.py:157
#: ops/models/job.py:162
msgid "Run as policy"
msgstr "賬號策略"
msgstr "使用者策略"
#: ops/models/job.py:222 ops/serializers/job.py:92
#: ops/models/job.py:227 ops/models/variable.py:28 ops/serializers/job.py:98
#: terminal/notifications.py:182
msgid "Job"
msgstr "作業"
#: ops/models/job.py:245
#: ops/models/job.py:250
msgid "Material"
msgstr "Material"
#: ops/models/job.py:247
#: ops/models/job.py:252
msgid "Material Type"
msgstr "Material 類型"
#: ops/models/job.py:558
#: ops/models/job.py:564
msgid "Job Execution"
msgstr "作業執行"
#: ops/models/playbook.py:35
#: ops/models/playbook.py:33
msgid "CreateMethod"
msgstr "創建方式"
#: ops/models/playbook.py:37
#: ops/models/playbook.py:35
msgid "VCS URL"
msgstr "VCS URL"
@ -5049,27 +5055,27 @@ msgstr "週期性Action"
msgid "Next execution time"
msgstr "下次Action時間"
#: ops/serializers/job.py:15
#: ops/serializers/job.py:17
msgid "Execute after saving"
msgstr "儲存後Action"
#: ops/serializers/job.py:52 terminal/serializers/session.py:49
#: ops/serializers/job.py:58 terminal/serializers/session.py:49
msgid "Duration"
msgstr "時長"
#: ops/serializers/job.py:72
#: ops/serializers/job.py:78
msgid "Job type"
msgstr "任務類型"
#: ops/serializers/job.py:75 terminal/serializers/session.py:58
#: ops/serializers/job.py:81 terminal/serializers/session.py:58
msgid "Is finished"
msgstr "是否完成"
#: ops/serializers/job.py:89
#: ops/serializers/job.py:95
msgid "Task id"
msgstr "任務 ID"
#: ops/serializers/job.py:98
#: ops/serializers/job.py:104
msgid "You do not have permission for the current job."
msgstr "你沒有當前作業的權限。"
@ -5077,33 +5083,33 @@ msgstr "你沒有當前作業的權限。"
msgid "Run ansible task"
msgstr "運行 Ansible 任務"
#: ops/tasks.py:54
#: ops/tasks.py:56
msgid ""
"Execute scheduled adhoc and playbooks, periodically invoking the task for "
"execution"
msgstr "當執行定時的快捷命令,playbook,定時呼叫該任務執行"
#: ops/tasks.py:82
#: ops/tasks.py:88
msgid "Run ansible task execution"
msgstr "開始執行 Ansible 任務"
#: ops/tasks.py:85
#: ops/tasks.py:91
msgid "Execute the task when manually adhoc or playbooks"
msgstr "手動執行快捷命令,playbook時執行該任務"
#: ops/tasks.py:99
#: ops/tasks.py:107
msgid "Clear celery periodic tasks"
msgstr "清理週期任務"
#: ops/tasks.py:101
#: ops/tasks.py:109
msgid "At system startup, clean up celery tasks that no longer exist"
msgstr "系統啟動時,清理已經不存在的celery任務"
#: ops/tasks.py:125
#: ops/tasks.py:133
msgid "Create or update periodic tasks"
msgstr "創建或更新週期任務"
#: ops/tasks.py:127
#: ops/tasks.py:135
msgid ""
"With version iterations, new tasks may be added, or task names and execution "
"times may \n"
@ -5114,11 +5120,11 @@ msgstr ""
"隨著版本迭代,可能會新增任務或者修改任務的名稱,執行時間,所以在系統啟動"
"時,,將會註冊任務或者更新定時任務參數"
#: ops/tasks.py:140
#: ops/tasks.py:148
msgid "Periodic check service performance"
msgstr "週期檢測服務性能"
#: ops/tasks.py:142
#: ops/tasks.py:150
msgid ""
"Check every hour whether each component is offline and whether the CPU, "
"memory, \n"
@ -5128,11 +5134,11 @@ msgstr ""
"每小時檢測各組件是否離線,cpu,內存,硬盤使用率是否超過閾值,向管理員發送訊息"
"預警"
#: ops/tasks.py:152
#: ops/tasks.py:160
msgid "Clean up unexpected jobs"
msgstr "清理異常作業"
#: ops/tasks.py:154
#: ops/tasks.py:162
msgid ""
"Due to exceptions caused by executing adhoc and playbooks in the Job "
"Center, \n"
@ -5145,11 +5151,11 @@ msgstr ""
"由於作業中心執行快捷命令,playbook會產生異常,任務狀態未更新完成,系統將每小"
"時執行清理超3小時未完成的異常作業,並將任務標記失敗"
#: ops/tasks.py:167
#: ops/tasks.py:175
msgid "Clean job_execution db record"
msgstr "清理作業中心執行歷史"
#: ops/tasks.py:169
#: ops/tasks.py:177
msgid ""
"Due to the execution of adhoc and playbooks in the Job Center, execution "
"records will \n"
@ -5368,7 +5374,7 @@ msgid "today"
msgstr "今天"
#: perms/notifications.py:12 perms/notifications.py:44
#: settings/serializers/feature.py:114
#: settings/serializers/feature.py:137
msgid "day"
msgstr "天"
@ -5623,7 +5629,7 @@ msgstr "帳號改密"
msgid "App ops"
msgstr "作業中心"
#: rbac/tree.py:57 settings/serializers/feature.py:120
#: rbac/tree.py:57 settings/serializers/feature.py:143
msgid "Feature"
msgstr "功能"
@ -5658,8 +5664,8 @@ msgstr "組織管理"
msgid "Ticket comment"
msgstr "工單評論"
#: rbac/tree.py:159 settings/serializers/feature.py:101
#: settings/serializers/feature.py:103 tickets/models/ticket/general.py:308
#: rbac/tree.py:159 settings/serializers/feature.py:124
#: settings/serializers/feature.py:126 tickets/models/ticket/general.py:308
msgid "Ticket"
msgstr "工單管理"
@ -5677,7 +5683,7 @@ msgstr "聊天 AI 沒有開啟"
#: settings/api/chat.py:79 settings/api/dingtalk.py:31
#: settings/api/feishu.py:39 settings/api/slack.py:34 settings/api/sms.py:160
#: settings/api/vault.py:40 settings/api/wecom.py:37
#: settings/api/vault.py:48 settings/api/wecom.py:37
msgid "Test success"
msgstr "測試成功"
@ -6070,12 +6076,13 @@ msgstr "圖示"
msgid "Service provider"
msgstr "服務提供商"
#: settings/serializers/auth/oauth2.py:31
#: settings/serializers/auth/oauth2.py:31 settings/serializers/feature.py:88
#: xpack/plugins/cloud/serializers/account_attrs.py:35
msgid "Client ID"
msgstr "用戶端 ID"
#: settings/serializers/auth/oauth2.py:34 settings/serializers/auth/oidc.py:24
#: settings/serializers/feature.py:91
#: xpack/plugins/cloud/serializers/account_attrs.py:38
msgid "Client Secret"
msgstr "用戶端金鑰"
@ -6497,38 +6504,40 @@ msgstr ""
msgid "Change secret and push record retention days (day)"
msgstr "改密推送記錄保留天數 (天)"
#: settings/serializers/feature.py:19 settings/serializers/msg.py:68
#: settings/serializers/feature.py:20 settings/serializers/msg.py:68
msgid "Subject"
msgstr "主題"
#: settings/serializers/feature.py:23
#: settings/serializers/feature.py:24
msgid "More Link"
msgstr "更多資訊 URL"
#: settings/serializers/feature.py:26
#: settings/serializers/feature.py:27
#: settings/templates/ldap/_msg_import_ldap_user.html:6
#: terminal/models/session/session.py:46
msgid "Date end"
msgstr "結束日期"
#: settings/serializers/feature.py:39 settings/serializers/feature.py:41
#: settings/serializers/feature.py:42
#: settings/serializers/feature.py:40 settings/serializers/feature.py:42
#: settings/serializers/feature.py:43
msgid "Announcement"
msgstr "公告"
#: settings/serializers/feature.py:49
#: settings/serializers/feature.py:47 settings/serializers/feature.py:50
msgid "Vault"
msgstr "啟用 Vault"
#: settings/serializers/feature.py:58
msgid "Mount Point"
msgstr "掛載點"
#: settings/serializers/feature.py:53
#, fuzzy
#| msgid "Provider"
msgid "Vault provider"
msgstr "雲服務商"
#: settings/serializers/feature.py:64
#: settings/serializers/feature.py:58
msgid "Record limit"
msgstr "紀錄限制"
#: settings/serializers/feature.py:66
#: settings/serializers/feature.py:60
msgid ""
"If the specific value is less than 999 (default), the system will "
"automatically perform a task every night: check and delete historical "
@ -6538,74 +6547,83 @@ msgstr ""
"如果特定數值小於999,系統將在每日晚間自動執行任務:檢查並刪除超出預定數量的歷"
"史帳號。如果該數值達到或超過999,則不進行任何歷史帳號的刪除操作。"
#: settings/serializers/feature.py:76 settings/serializers/feature.py:82
#: settings/serializers/feature.py:78
msgid "Mount Point"
msgstr "掛載點"
#: settings/serializers/feature.py:94
#: xpack/plugins/cloud/serializers/account_attrs.py:41
msgid "Tenant ID"
msgstr "租戶 ID"
#: settings/serializers/feature.py:99 settings/serializers/feature.py:105
msgid "Chat AI"
msgstr "聊天 AI"
#: settings/serializers/feature.py:85
#: settings/serializers/feature.py:108
msgid "GPT Base URL"
msgstr "GPT 地址"
#: settings/serializers/feature.py:86
#: settings/serializers/feature.py:109
msgid "The base URL of the GPT service. For example: https://api.openai.com/v1"
msgstr "GPT 服務的基礎 URL。例如:https://api.openai.com/v1"
#: settings/serializers/feature.py:89 templates/_header_bar.html:96
#: settings/serializers/feature.py:112 templates/_header_bar.html:96
msgid "API Key"
msgstr "API Key"
#: settings/serializers/feature.py:93
#: settings/serializers/feature.py:116
msgid ""
"The proxy server address of the GPT service. For example: http://ip:port"
msgstr "GPT 服務的代理伺服器地址。例如:http://ip:port"
#: settings/serializers/feature.py:96
#: settings/serializers/feature.py:119
msgid "GPT Model"
msgstr "GPT 模型"
#: settings/serializers/feature.py:105
#: settings/serializers/feature.py:128
msgid "Approval without login"
msgstr "免登入審核"
#: settings/serializers/feature.py:106
#: settings/serializers/feature.py:129
msgid "Allow direct approval ticket without login"
msgstr "允許無需登入直接批准工單"
#: settings/serializers/feature.py:110
#: settings/serializers/feature.py:133
msgid "Period"
msgstr "時段"
#: settings/serializers/feature.py:111
#: settings/serializers/feature.py:134
msgid ""
"The default authorization time period when applying for assets via a ticket"
msgstr "工單申請資產的預設授權時間段"
#: settings/serializers/feature.py:114
#: settings/serializers/feature.py:137
msgid "hour"
msgstr "時"
#: settings/serializers/feature.py:115
#: settings/serializers/feature.py:138
msgid "Unit"
msgstr "單位"
#: settings/serializers/feature.py:115
#: settings/serializers/feature.py:138
msgid "The unit of period"
msgstr "執行週期"
#: settings/serializers/feature.py:124
#: settings/serializers/feature.py:147
msgid ""
"Allow users to execute batch commands in the Workbench - Job Center - Adhoc"
msgstr "允許使用者在工作台 - 作業中心 - Adhoc 中執行批量指令"
#: settings/serializers/feature.py:128
#: settings/serializers/feature.py:151
msgid "Command blacklist"
msgstr "作業中心命令黑名單"
#: settings/serializers/feature.py:129
#: settings/serializers/feature.py:152
msgid "Command blacklist in Adhoc"
msgstr "作業中心指令黑名單"
#: settings/serializers/feature.py:134
#: settings/serializers/feature.py:157
#: terminal/models/virtualapp/provider.py:17
#: terminal/models/virtualapp/virtualapp.py:36
#: terminal/models/virtualapp/virtualapp.py:97
@ -6613,11 +6631,11 @@ msgstr "作業中心指令黑名單"
msgid "Virtual app"
msgstr "虛擬應用"
#: settings/serializers/feature.py:137
#: settings/serializers/feature.py:160
msgid "Virtual App"
msgstr "虛擬應用"
#: settings/serializers/feature.py:139
#: settings/serializers/feature.py:162
msgid ""
"Virtual applications, you can use the Linux operating system as an "
"application server in remote applications."
@ -7533,6 +7551,18 @@ msgstr "遠程桌面用戶端"
msgid "RDP Guide"
msgstr "RDP 連接嚮導"
#: terminal/connect_methods.py:39
#, fuzzy
#| msgid "Client"
msgid "VNC Client"
msgstr "用戶端"
#: terminal/connect_methods.py:40
#, fuzzy
#| msgid "DB Guide"
msgid "VNC Guide"
msgstr "DB 連接嚮導"
#: terminal/const.py:10
msgid "Warning"
msgstr "告警"
@ -7557,7 +7587,7 @@ msgstr "嚴重"
msgid "High"
msgstr "較高"
#: terminal/const.py:47 terminal/const.py:84
#: terminal/const.py:47 terminal/const.py:86
#: users/templates/users/reset_password.html:54
msgid "Normal"
msgstr "正常"
@ -7566,47 +7596,47 @@ msgstr "正常"
msgid "Offline"
msgstr "離線"
#: terminal/const.py:80
#: terminal/const.py:82
msgid "Mismatch"
msgstr "未匹配"
#: terminal/const.py:85
#: terminal/const.py:87
msgid "Tunnel"
msgstr "隧道"
#: terminal/const.py:91
#: terminal/const.py:93
msgid "Read only"
msgstr "只讀"
#: terminal/const.py:92
#: terminal/const.py:94
msgid "Writable"
msgstr "讀寫"
#: terminal/const.py:96
#: terminal/const.py:98
msgid "Kill session"
msgstr "終斷會話"
#: terminal/const.py:97
#: terminal/const.py:99
msgid "Lock session"
msgstr "鎖定會話"
#: terminal/const.py:98
#: terminal/const.py:100
msgid "Unlock session"
msgstr "解鎖會話"
#: terminal/const.py:103
#: terminal/const.py:105
msgid "Replay create failed"
msgstr "錄影創建失敗"
#: terminal/const.py:104
#: terminal/const.py:106
msgid "Replay upload failed"
msgstr "錄影上傳失敗"
#: terminal/const.py:105
#: terminal/const.py:107
msgid "Replay convert failed"
msgstr "錄影轉檔失敗"
#: terminal/const.py:106
#: terminal/const.py:108
msgid "Replay unsupported"
msgstr "不支持錄影"
@ -7747,15 +7777,21 @@ msgstr "Redis 埠"
msgid "SQLServer port"
msgstr "SQLServer 埠"
#: terminal/models/component/endpoint.py:32
#: terminal/models/component/endpoint.py:119
#: terminal/models/component/endpoint.py:25
#, fuzzy
#| msgid "SSH port"
msgid "VNC port"
msgstr "SSH 埠"
#: terminal/models/component/endpoint.py:33
#: terminal/models/component/endpoint.py:120
#: terminal/serializers/endpoint.py:80 terminal/serializers/storage.py:41
#: terminal/serializers/storage.py:53 terminal/serializers/storage.py:83
#: terminal/serializers/storage.py:93 terminal/serializers/storage.py:101
msgid "Endpoint"
msgstr "端點"
#: terminal/models/component/endpoint.py:125
#: terminal/models/component/endpoint.py:126
msgid "Endpoint rule"
msgstr "端點規則"
@ -9609,6 +9645,16 @@ msgstr "帳號保護已開啟,請根據提示完成以下操作"
msgid "Open MFA Authenticator and enter the 6-bit dynamic code"
msgstr "請打開 MFA 驗證器,輸入 6 位動態碼"
#: users/utils.py:60
#, fuzzy
#| msgid "Auth source"
msgid "Auth success"
msgstr "認證資料庫"
#: users/utils.py:61
msgid "Redirecting to JumpServer Client"
msgstr ""
#: users/views/profile/otp.py:106
msgid "Already bound"
msgstr "已經綁定"
@ -10314,10 +10360,6 @@ msgstr "服務商顯示"
msgid "Access key id"
msgstr "Access key ID(AK)"
#: xpack/plugins/cloud/serializers/account_attrs.py:41
msgid "Tenant ID"
msgstr "租戶 ID"
#: xpack/plugins/cloud/serializers/account_attrs.py:44
msgid "Subscription ID"
msgstr "訂閱 ID"

7
apps/jumpserver/conf.py

@ -258,10 +258,17 @@ class Config(dict):
# Vault
'VAULT_ENABLED': False,
'VAULT_BACKEND': 'local',
'VAULT_HCP_HOST': '',
'VAULT_HCP_TOKEN': '',
'VAULT_HCP_MOUNT_POINT': 'jumpserver',
'VAULT_AZURE_HOST': '',
'VAULT_AZURE_CLIENT_ID': '',
'VAULT_AZURE_CLIENT_SECRET': '',
'VAULT_AZURE_TENANT_ID': '',
'HISTORY_ACCOUNT_CLEAN_LIMIT': 999,
# Cache login password

7
apps/jumpserver/settings/auth.py

@ -235,10 +235,17 @@ AUTH_TEMP_TOKEN = CONFIG.AUTH_TEMP_TOKEN
# Vault
VAULT_ENABLED = CONFIG.VAULT_ENABLED
VAULT_BACKEND = CONFIG.VAULT_BACKEND
VAULT_HCP_HOST = CONFIG.VAULT_HCP_HOST
VAULT_HCP_TOKEN = CONFIG.VAULT_HCP_TOKEN
VAULT_HCP_MOUNT_POINT = CONFIG.VAULT_HCP_MOUNT_POINT
VAULT_AZURE_HOST = CONFIG.VAULT_AZURE_HOST
VAULT_AZURE_CLIENT_ID = CONFIG.VAULT_AZURE_CLIENT_ID
VAULT_AZURE_CLIENT_SECRET = CONFIG.VAULT_AZURE_CLIENT_SECRET
VAULT_AZURE_TENANT_ID = CONFIG.VAULT_AZURE_TENANT_ID
HISTORY_ACCOUNT_CLEAN_LIMIT = CONFIG.HISTORY_ACCOUNT_CLEAN_LIMIT
# Other setting

2
apps/settings/api/settings.py

@ -61,6 +61,8 @@ class SettingsApi(generics.RetrieveUpdateAPIView):
'cmpp2': serializers.CMPP2SMSSettingSerializer,
'custom': serializers.CustomSMSSettingSerializer,
'vault': serializers.VaultSettingSerializer,
'azure_kv': serializers.AzureKVSerializer,
'hcp': serializers.HashicorpKVSerializer,
'chat': serializers.ChatAISettingSerializer,
'announcement': serializers.AnnouncementSettingSerializer,
'ticket': serializers.TicketSettingSerializer,

19
apps/settings/api/vault.py

@ -6,18 +6,25 @@ from rest_framework.views import Response, APIView
from accounts.backends import get_vault_client
from accounts.tasks.vault import sync_secret_to_vault
from common.exceptions import JMSException
from settings.models import Setting
from .. import serializers
class VaultTestingAPI(GenericAPIView):
serializer_class = serializers.VaultSettingSerializer
backends_serializer = {
'azure': serializers.AzureKVSerializer,
'hcp': serializers.HashicorpKVSerializer
}
rbac_perms = {
'POST': 'settings.change_vault'
}
def get_config(self, request):
serializer = self.serializer_class(data=request.data)
def get_config(self, request, backend):
serializer_class = self.backends_serializer.get(backend)
if serializer_class is None:
raise JMSException()
serializer = serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
data = serializer.validated_data
for k, v in data.items():
@ -27,9 +34,10 @@ class VaultTestingAPI(GenericAPIView):
data[k] = getattr(settings, k, None)
return data
def post(self, request):
config = self.get_config(request)
def post(self, request, backend):
config = self.get_config(request, backend)
config['VAULT_ENABLED'] = settings.VAULT_ENABLED
config['VAULT_BACKEND'] = backend
try:
client = get_vault_client(raise_exception=True, **config)
ok, error = client.is_active()
@ -58,4 +66,3 @@ class VaultSyncDataAPI(APIView):
def _run_task():
task = sync_secret_to_vault.delay()
return task

47
apps/settings/serializers/feature.py

@ -3,13 +3,14 @@ from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers
from accounts.const import VaultTypeChoices
from assets.const import Protocol
from common.serializers.fields import EncryptedField
from common.utils import date_expired_default
__all__ = [
'AnnouncementSettingSerializer', 'OpsSettingSerializer',
'VaultSettingSerializer', 'TicketSettingSerializer',
'AnnouncementSettingSerializer', 'OpsSettingSerializer', 'VaultSettingSerializer',
'HashicorpKVSerializer', 'AzureKVSerializer', 'TicketSettingSerializer',
'ChatAISettingSerializer', 'VirtualAppSerializer',
]
@ -43,20 +44,13 @@ class AnnouncementSettingSerializer(serializers.Serializer):
class VaultSettingSerializer(serializers.Serializer):
PREFIX_TITLE = _('HCP Vault')
PREFIX_TITLE = _('Vault')
VAULT_ENABLED = serializers.BooleanField(
required=False, label=_('Vault'), read_only=True
)
VAULT_HCP_HOST = serializers.CharField(
max_length=256, allow_blank=True, required=False, label=_('Host')
)
VAULT_HCP_TOKEN = EncryptedField(
max_length=256, allow_blank=True, required=False, label=_('Token'), default=''
)
VAULT_HCP_MOUNT_POINT = serializers.CharField(
max_length=256, allow_blank=True, required=False, label=_('Mount Point'),
default='jumpserver'
VAULT_BACKEND = serializers.ChoiceField(
choices=VaultTypeChoices.choices, default=VaultTypeChoices.local, label=_('Vault provider')
)
HISTORY_ACCOUNT_CLEAN_LIMIT = serializers.IntegerField(
@ -72,6 +66,35 @@ class VaultSettingSerializer(serializers.Serializer):
)
class HashicorpKVSerializer(serializers.Serializer):
PREFIX_TITLE = _('HCP Vault')
VAULT_HCP_HOST = serializers.CharField(
max_length=256, allow_blank=True, required=False, label=_('Host')
)
VAULT_HCP_TOKEN = EncryptedField(
max_length=256, allow_blank=True, required=False, label=_('Token'), default=''
)
VAULT_HCP_MOUNT_POINT = serializers.CharField(
max_length=256, allow_blank=True, required=False, label=_('Mount Point')
)
class AzureKVSerializer(serializers.Serializer):
PREFIX_TITLE = _('Azure Key Vault')
VAULT_AZURE_HOST = serializers.CharField(
max_length=256, allow_blank=True, required=False, label=_('Host')
)
VAULT_AZURE_CLIENT_ID = serializers.CharField(
max_length=128, allow_blank=True, required=False, label=_('Client ID')
)
VAULT_AZURE_CLIENT_SECRET = EncryptedField(
max_length=4096, allow_blank=True, required=False, label=_('Client Secret'), default=''
)
VAULT_AZURE_TENANT_ID = serializers.CharField(
max_length=128, allow_blank=True, required=False, label=_('Tenant ID')
)
class ChatAISettingSerializer(serializers.Serializer):
PREFIX_TITLE = _('Chat AI')
API_MODEL = Protocol.gpt_protocols()[Protocol.chatgpt]['setting']['api_mode']

2
apps/settings/urls/api_urls.py

@ -19,7 +19,7 @@ urlpatterns = [
path('slack/testing/', api.SlackTestingAPI.as_view(), name='slack-testing'),
path('sms/<str:backend>/testing/', api.SMSTestingAPI.as_view(), name='sms-testing'),
path('sms/backend/', api.SMSBackendAPI.as_view(), name='sms-backend'),
path('vault/testing/', api.VaultTestingAPI.as_view(), name='vault-testing'),
path('vault/<str:backend>/testing/', api.VaultTestingAPI.as_view(), name='vault-testing'),
path('chatai/testing/', api.ChatAITestingAPI.as_view(), name='chatai-testing'),
path('vault/sync/', api.VaultSyncDataAPI.as_view(), name='vault-sync'),
path('security/block-ip/', api.BlockIPSecurityAPI.as_view(), name='block-ip'),

498
poetry.lock

@ -1,4 +1,4 @@
# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
[[package]]
name = "adal"
@ -475,13 +475,13 @@ files = [
[[package]]
name = "async-timeout"
version = "4.0.3"
version = "5.0.0"
description = "Timeout context manager for asyncio programs"
optional = false
python-versions = ">=3.7"
python-versions = ">=3.8"
files = [
{file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
{file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
{file = "async_timeout-5.0.0-py3-none-any.whl", hash = "sha256:904719a4bd6e0520047d0ddae220aabee67b877f7ca17bf8cea20f67f6247ae0"},
{file = "async_timeout-5.0.0.tar.gz", hash = "sha256:49675ec889daacfe65ff66d2dde7dd1447a6f4b2f23721022e4ba121f8772a85"},
]
[[package]]
@ -559,13 +559,13 @@ files = [
[[package]]
name = "azure-core"
version = "1.31.0"
version = "1.32.0"
description = "Microsoft Azure Core Library for Python"
optional = false
python-versions = ">=3.8"
files = [
{file = "azure_core-1.31.0-py3-none-any.whl", hash = "sha256:22954de3777e0250029360ef31d80448ef1be13b80a459bff80ba7073379e2cd"},
{file = "azure_core-1.31.0.tar.gz", hash = "sha256:656a0dd61e1869b1506b7c6a3b31d62f15984b1a573d6326f6aa2f3e4123284b"},
{file = "azure_core-1.32.0-py3-none-any.whl", hash = "sha256:eac191a0efb23bfa83fddf321b27b122b4ec847befa3091fa736a5c32c50d7b4"},
{file = "azure_core-1.32.0.tar.gz", hash = "sha256:22b3c35d6b2dae14990f6c1be2912bf23ffe50b220e708a28ab1bb92b1c730e5"},
]
[package.dependencies]
@ -594,6 +594,22 @@ msal = ">=1.20.0,<2.0.0"
msal-extensions = ">=0.3.0,<2.0.0"
six = ">=1.12.0"
[[package]]
name = "azure-keyvault-secrets"
version = "4.9.0"
description = "Microsoft Azure Key Vault Secrets Client Library for Python"
optional = false
python-versions = ">=3.8"
files = [
{file = "azure_keyvault_secrets-4.9.0-py3-none-any.whl", hash = "sha256:33c7e2aca2cc2092cebc8c6e96eca36a5cc30c767e16ea429c5fa21270e9fba6"},
{file = "azure_keyvault_secrets-4.9.0.tar.gz", hash = "sha256:2a03bb2ffd9a0d6c8ad1c330d9d0310113985a9de06607ece378fd72a5889fe1"},
]
[package.dependencies]
azure-core = ">=1.31.0"
isodate = ">=0.6.1"
typing-extensions = ">=4.0.1"
[[package]]
name = "azure-mgmt-compute"
version = "30.0.0"
@ -612,17 +628,17 @@ isodate = ">=0.6.1,<1.0.0"
[[package]]
name = "azure-mgmt-core"
version = "1.4.0"
version = "1.5.0"
description = "Microsoft Azure Management Core Library for Python"
optional = false
python-versions = ">=3.7"
python-versions = ">=3.8"
files = [
{file = "azure-mgmt-core-1.4.0.zip", hash = "sha256:d195208340094f98e5a6661b781cde6f6a051e79ce317caabd8ff97030a9b3ae"},
{file = "azure_mgmt_core-1.4.0-py3-none-any.whl", hash = "sha256:81071675f186a585555ef01816f2774d49c1c9024cb76e5720c3c0f6b337bb7d"},
{file = "azure_mgmt_core-1.5.0-py3-none-any.whl", hash = "sha256:18aaa5a723ee8ae05bf1bfc9f6d0ffb996631c7ea3c922cc86f522973ce07b5f"},
{file = "azure_mgmt_core-1.5.0.tar.gz", hash = "sha256:380ae3dfa3639f4a5c246a7db7ed2d08374e88230fd0da3eb899f7c11e5c441a"},
]
[package.dependencies]
azure-core = ">=1.26.2,<2.0.0"
azure-core = ">=1.31.0"
[[package]]
name = "azure-mgmt-network"
@ -2377,70 +2393,70 @@ test = ["objgraph", "psutil"]
[[package]]
name = "grpcio"
version = "1.67.0"
version = "1.67.1"
description = "HTTP/2-based RPC framework"
optional = false
python-versions = ">=3.8"
files = [
{file = "grpcio-1.67.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:bd79929b3bb96b54df1296cd3bf4d2b770bd1df6c2bdf549b49bab286b925cdc"},
{file = "grpcio-1.67.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:16724ffc956ea42967f5758c2f043faef43cb7e48a51948ab593570570d1e68b"},
{file = "grpcio-1.67.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:2b7183c80b602b0ad816315d66f2fb7887614ead950416d60913a9a71c12560d"},
{file = "grpcio-1.67.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:efe32b45dd6d118f5ea2e5deaed417d8a14976325c93812dd831908522b402c9"},
{file = "grpcio-1.67.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe89295219b9c9e47780a0f1c75ca44211e706d1c598242249fe717af3385ec8"},
{file = "grpcio-1.67.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa8d025fae1595a207b4e47c2e087cb88d47008494db258ac561c00877d4c8f8"},
{file = "grpcio-1.67.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f95e15db43e75a534420e04822df91f645664bf4ad21dfaad7d51773c80e6bb4"},
{file = "grpcio-1.67.0-cp310-cp310-win32.whl", hash = "sha256:a6b9a5c18863fd4b6624a42e2712103fb0f57799a3b29651c0e5b8119a519d65"},
{file = "grpcio-1.67.0-cp310-cp310-win_amd64.whl", hash = "sha256:b6eb68493a05d38b426604e1dc93bfc0137c4157f7ab4fac5771fd9a104bbaa6"},
{file = "grpcio-1.67.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:e91d154689639932305b6ea6f45c6e46bb51ecc8ea77c10ef25aa77f75443ad4"},
{file = "grpcio-1.67.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cb204a742997277da678611a809a8409657b1398aaeebf73b3d9563b7d154c13"},
{file = "grpcio-1.67.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:ae6de510f670137e755eb2a74b04d1041e7210af2444103c8c95f193340d17ee"},
{file = "grpcio-1.67.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74b900566bdf68241118f2918d312d3bf554b2ce0b12b90178091ea7d0a17b3d"},
{file = "grpcio-1.67.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4e95e43447a02aa603abcc6b5e727d093d161a869c83b073f50b9390ecf0fa8"},
{file = "grpcio-1.67.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0bb94e66cd8f0baf29bd3184b6aa09aeb1a660f9ec3d85da615c5003154bc2bf"},
{file = "grpcio-1.67.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:82e5bd4b67b17c8c597273663794a6a46a45e44165b960517fe6d8a2f7f16d23"},
{file = "grpcio-1.67.0-cp311-cp311-win32.whl", hash = "sha256:7fc1d2b9fd549264ae585026b266ac2db53735510a207381be509c315b4af4e8"},
{file = "grpcio-1.67.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac11ecb34a86b831239cc38245403a8de25037b448464f95c3315819e7519772"},
{file = "grpcio-1.67.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:227316b5631260e0bef8a3ce04fa7db4cc81756fea1258b007950b6efc90c05d"},
{file = "grpcio-1.67.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d90cfdafcf4b45a7a076e3e2a58e7bc3d59c698c4f6470b0bb13a4d869cf2273"},
{file = "grpcio-1.67.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:77196216d5dd6f99af1c51e235af2dd339159f657280e65ce7e12c1a8feffd1d"},
{file = "grpcio-1.67.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15c05a26a0f7047f720da41dc49406b395c1470eef44ff7e2c506a47ac2c0591"},
{file = "grpcio-1.67.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3840994689cc8cbb73d60485c594424ad8adb56c71a30d8948d6453083624b52"},
{file = "grpcio-1.67.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5a1e03c3102b6451028d5dc9f8591131d6ab3c8a0e023d94c28cb930ed4b5f81"},
{file = "grpcio-1.67.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:682968427a63d898759474e3b3178d42546e878fdce034fd7474ef75143b64e3"},
{file = "grpcio-1.67.0-cp312-cp312-win32.whl", hash = "sha256:d01793653248f49cf47e5695e0a79805b1d9d4eacef85b310118ba1dfcd1b955"},
{file = "grpcio-1.67.0-cp312-cp312-win_amd64.whl", hash = "sha256:985b2686f786f3e20326c4367eebdaed3e7aa65848260ff0c6644f817042cb15"},
{file = "grpcio-1.67.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:8c9a35b8bc50db35ab8e3e02a4f2a35cfba46c8705c3911c34ce343bd777813a"},
{file = "grpcio-1.67.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:42199e704095b62688998c2d84c89e59a26a7d5d32eed86d43dc90e7a3bd04aa"},
{file = "grpcio-1.67.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:c4c425f440fb81f8d0237c07b9322fc0fb6ee2b29fbef5f62a322ff8fcce240d"},
{file = "grpcio-1.67.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:323741b6699cd2b04a71cb38f502db98f90532e8a40cb675393d248126a268af"},
{file = "grpcio-1.67.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:662c8e105c5e5cee0317d500eb186ed7a93229586e431c1bf0c9236c2407352c"},
{file = "grpcio-1.67.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f6bd2ab135c64a4d1e9e44679a616c9bc944547357c830fafea5c3caa3de5153"},
{file = "grpcio-1.67.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:2f55c1e0e2ae9bdd23b3c63459ee4c06d223b68aeb1961d83c48fb63dc29bc03"},
{file = "grpcio-1.67.0-cp313-cp313-win32.whl", hash = "sha256:fd6bc27861e460fe28e94226e3673d46e294ca4673d46b224428d197c5935e69"},
{file = "grpcio-1.67.0-cp313-cp313-win_amd64.whl", hash = "sha256:cf51d28063338608cd8d3cd64677e922134837902b70ce00dad7f116e3998210"},
{file = "grpcio-1.67.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:7f200aca719c1c5dc72ab68be3479b9dafccdf03df530d137632c534bb6f1ee3"},
{file = "grpcio-1.67.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0892dd200ece4822d72dd0952f7112c542a487fc48fe77568deaaa399c1e717d"},
{file = "grpcio-1.67.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:f4d613fbf868b2e2444f490d18af472ccb47660ea3df52f068c9c8801e1f3e85"},
{file = "grpcio-1.67.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c69bf11894cad9da00047f46584d5758d6ebc9b5950c0dc96fec7e0bce5cde9"},
{file = "grpcio-1.67.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9bca3ca0c5e74dea44bf57d27e15a3a3996ce7e5780d61b7c72386356d231db"},
{file = "grpcio-1.67.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:014dfc020e28a0d9be7e93a91f85ff9f4a87158b7df9952fe23cc42d29d31e1e"},
{file = "grpcio-1.67.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d4ea4509d42c6797539e9ec7496c15473177ce9abc89bc5c71e7abe50fc25737"},
{file = "grpcio-1.67.0-cp38-cp38-win32.whl", hash = "sha256:9d75641a2fca9ae1ae86454fd25d4c298ea8cc195dbc962852234d54a07060ad"},
{file = "grpcio-1.67.0-cp38-cp38-win_amd64.whl", hash = "sha256:cff8e54d6a463883cda2fab94d2062aad2f5edd7f06ae3ed030f2a74756db365"},
{file = "grpcio-1.67.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:62492bd534979e6d7127b8a6b29093161a742dee3875873e01964049d5250a74"},
{file = "grpcio-1.67.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eef1dce9d1a46119fd09f9a992cf6ab9d9178b696382439446ca5f399d7b96fe"},
{file = "grpcio-1.67.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:f623c57a5321461c84498a99dddf9d13dac0e40ee056d884d6ec4ebcab647a78"},
{file = "grpcio-1.67.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54d16383044e681f8beb50f905249e4e7261dd169d4aaf6e52eab67b01cbbbe2"},
{file = "grpcio-1.67.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2a44e572fb762c668e4812156b81835f7aba8a721b027e2d4bb29fb50ff4d33"},
{file = "grpcio-1.67.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:391df8b0faac84d42f5b8dfc65f5152c48ed914e13c522fd05f2aca211f8bfad"},
{file = "grpcio-1.67.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cfd9306511fdfc623a1ba1dc3bc07fbd24e6cfbe3c28b4d1e05177baa2f99617"},
{file = "grpcio-1.67.0-cp39-cp39-win32.whl", hash = "sha256:30d47dbacfd20cbd0c8be9bfa52fdb833b395d4ec32fe5cff7220afc05d08571"},
{file = "grpcio-1.67.0-cp39-cp39-win_amd64.whl", hash = "sha256:f55f077685f61f0fbd06ea355142b71e47e4a26d2d678b3ba27248abfe67163a"},
{file = "grpcio-1.67.0.tar.gz", hash = "sha256:e090b2553e0da1c875449c8e75073dd4415dd71c9bde6a406240fdf4c0ee467c"},
{file = "grpcio-1.67.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:8b0341d66a57f8a3119b77ab32207072be60c9bf79760fa609c5609f2deb1f3f"},
{file = "grpcio-1.67.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:f5a27dddefe0e2357d3e617b9079b4bfdc91341a91565111a21ed6ebbc51b22d"},
{file = "grpcio-1.67.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:43112046864317498a33bdc4797ae6a268c36345a910de9b9c17159d8346602f"},
{file = "grpcio-1.67.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9b929f13677b10f63124c1a410994a401cdd85214ad83ab67cc077fc7e480f0"},
{file = "grpcio-1.67.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d1797a8a3845437d327145959a2c0c47c05947c9eef5ff1a4c80e499dcc6fa"},
{file = "grpcio-1.67.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0489063974d1452436139501bf6b180f63d4977223ee87488fe36858c5725292"},
{file = "grpcio-1.67.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9fd042de4a82e3e7aca44008ee2fb5da01b3e5adb316348c21980f7f58adc311"},
{file = "grpcio-1.67.1-cp310-cp310-win32.whl", hash = "sha256:638354e698fd0c6c76b04540a850bf1db27b4d2515a19fcd5cf645c48d3eb1ed"},
{file = "grpcio-1.67.1-cp310-cp310-win_amd64.whl", hash = "sha256:608d87d1bdabf9e2868b12338cd38a79969eaf920c89d698ead08f48de9c0f9e"},
{file = "grpcio-1.67.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:7818c0454027ae3384235a65210bbf5464bd715450e30a3d40385453a85a70cb"},
{file = "grpcio-1.67.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ea33986b70f83844cd00814cee4451055cd8cab36f00ac64a31f5bb09b31919e"},
{file = "grpcio-1.67.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c7a01337407dd89005527623a4a72c5c8e2894d22bead0895306b23c6695698f"},
{file = "grpcio-1.67.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b866f73224b0634f4312a4674c1be21b2b4afa73cb20953cbbb73a6b36c3cc"},
{file = "grpcio-1.67.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fff78ba10d4250bfc07a01bd6254a6d87dc67f9627adece85c0b2ed754fa96"},
{file = "grpcio-1.67.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8a23cbcc5bb11ea7dc6163078be36c065db68d915c24f5faa4f872c573bb400f"},
{file = "grpcio-1.67.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a65b503d008f066e994f34f456e0647e5ceb34cfcec5ad180b1b44020ad4970"},
{file = "grpcio-1.67.1-cp311-cp311-win32.whl", hash = "sha256:e29ca27bec8e163dca0c98084040edec3bc49afd10f18b412f483cc68c712744"},
{file = "grpcio-1.67.1-cp311-cp311-win_amd64.whl", hash = "sha256:786a5b18544622bfb1e25cc08402bd44ea83edfb04b93798d85dca4d1a0b5be5"},
{file = "grpcio-1.67.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:267d1745894200e4c604958da5f856da6293f063327cb049a51fe67348e4f953"},
{file = "grpcio-1.67.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:85f69fdc1d28ce7cff8de3f9c67db2b0ca9ba4449644488c1e0303c146135ddb"},
{file = "grpcio-1.67.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f26b0b547eb8d00e195274cdfc63ce64c8fc2d3e2d00b12bf468ece41a0423a0"},
{file = "grpcio-1.67.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4422581cdc628f77302270ff839a44f4c24fdc57887dc2a45b7e53d8fc2376af"},
{file = "grpcio-1.67.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d7616d2ded471231c701489190379e0c311ee0a6c756f3c03e6a62b95a7146e"},
{file = "grpcio-1.67.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8a00efecde9d6fcc3ab00c13f816313c040a28450e5e25739c24f432fc6d3c75"},
{file = "grpcio-1.67.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:699e964923b70f3101393710793289e42845791ea07565654ada0969522d0a38"},
{file = "grpcio-1.67.1-cp312-cp312-win32.whl", hash = "sha256:4e7b904484a634a0fff132958dabdb10d63e0927398273917da3ee103e8d1f78"},
{file = "grpcio-1.67.1-cp312-cp312-win_amd64.whl", hash = "sha256:5721e66a594a6c4204458004852719b38f3d5522082be9061d6510b455c90afc"},
{file = "grpcio-1.67.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:aa0162e56fd10a5547fac8774c4899fc3e18c1aa4a4759d0ce2cd00d3696ea6b"},
{file = "grpcio-1.67.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:beee96c8c0b1a75d556fe57b92b58b4347c77a65781ee2ac749d550f2a365dc1"},
{file = "grpcio-1.67.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:a93deda571a1bf94ec1f6fcda2872dad3ae538700d94dc283c672a3b508ba3af"},
{file = "grpcio-1.67.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e6f255980afef598a9e64a24efce87b625e3e3c80a45162d111a461a9f92955"},
{file = "grpcio-1.67.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e838cad2176ebd5d4a8bb03955138d6589ce9e2ce5d51c3ada34396dbd2dba8"},
{file = "grpcio-1.67.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a6703916c43b1d468d0756c8077b12017a9fcb6a1ef13faf49e67d20d7ebda62"},
{file = "grpcio-1.67.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:917e8d8994eed1d86b907ba2a61b9f0aef27a2155bca6cbb322430fc7135b7bb"},
{file = "grpcio-1.67.1-cp313-cp313-win32.whl", hash = "sha256:e279330bef1744040db8fc432becc8a727b84f456ab62b744d3fdb83f327e121"},
{file = "grpcio-1.67.1-cp313-cp313-win_amd64.whl", hash = "sha256:fa0c739ad8b1996bd24823950e3cb5152ae91fca1c09cc791190bf1627ffefba"},
{file = "grpcio-1.67.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:178f5db771c4f9a9facb2ab37a434c46cb9be1a75e820f187ee3d1e7805c4f65"},
{file = "grpcio-1.67.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f3e49c738396e93b7ba9016e153eb09e0778e776df6090c1b8c91877cc1c426"},
{file = "grpcio-1.67.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:24e8a26dbfc5274d7474c27759b54486b8de23c709d76695237515bc8b5baeab"},
{file = "grpcio-1.67.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b6c16489326d79ead41689c4b84bc40d522c9a7617219f4ad94bc7f448c5085"},
{file = "grpcio-1.67.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e6a4dcf5af7bbc36fd9f81c9f372e8ae580870a9e4b6eafe948cd334b81cf3"},
{file = "grpcio-1.67.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:95b5f2b857856ed78d72da93cd7d09b6db8ef30102e5e7fe0961fe4d9f7d48e8"},
{file = "grpcio-1.67.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b49359977c6ec9f5d0573ea4e0071ad278ef905aa74e420acc73fd28ce39e9ce"},
{file = "grpcio-1.67.1-cp38-cp38-win32.whl", hash = "sha256:f5b76ff64aaac53fede0cc93abf57894ab2a7362986ba22243d06218b93efe46"},
{file = "grpcio-1.67.1-cp38-cp38-win_amd64.whl", hash = "sha256:804c6457c3cd3ec04fe6006c739579b8d35c86ae3298ffca8de57b493524b771"},
{file = "grpcio-1.67.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:a25bdea92b13ff4d7790962190bf6bf5c4639876e01c0f3dda70fc2769616335"},
{file = "grpcio-1.67.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cdc491ae35a13535fd9196acb5afe1af37c8237df2e54427be3eecda3653127e"},
{file = "grpcio-1.67.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:85f862069b86a305497e74d0dc43c02de3d1d184fc2c180993aa8aa86fbd19b8"},
{file = "grpcio-1.67.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec74ef02010186185de82cc594058a3ccd8d86821842bbac9873fd4a2cf8be8d"},
{file = "grpcio-1.67.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01f616a964e540638af5130469451cf580ba8c7329f45ca998ab66e0c7dcdb04"},
{file = "grpcio-1.67.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:299b3d8c4f790c6bcca485f9963b4846dd92cf6f1b65d3697145d005c80f9fe8"},
{file = "grpcio-1.67.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:60336bff760fbb47d7e86165408126f1dded184448e9a4c892189eb7c9d3f90f"},
{file = "grpcio-1.67.1-cp39-cp39-win32.whl", hash = "sha256:5ed601c4c6008429e3d247ddb367fe8c7259c355757448d7c1ef7bd4a6739e8e"},
{file = "grpcio-1.67.1-cp39-cp39-win_amd64.whl", hash = "sha256:5db70d32d6703b89912af16d6d45d78406374a8b8ef0d28140351dd0ec610e98"},
{file = "grpcio-1.67.1.tar.gz", hash = "sha256:3dc2ed4cabea4dc14d5e708c2b426205956077cc5de419b4d4079315017e9732"},
]
[package.extras]
protobuf = ["grpcio-tools (>=1.67.0)"]
protobuf = ["grpcio-tools (>=1.67.1)"]
[[package]]
name = "grpcio-status"
@ -2763,84 +2779,84 @@ i18n = ["Babel (>=2.7)"]
[[package]]
name = "jiter"
version = "0.6.1"
version = "0.7.0"
description = "Fast iterable JSON parser."
optional = false
python-versions = ">=3.8"
files = [
{file = "jiter-0.6.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d08510593cb57296851080018006dfc394070178d238b767b1879dc1013b106c"},
{file = "jiter-0.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adef59d5e2394ebbad13b7ed5e0306cceb1df92e2de688824232a91588e77aa7"},
{file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3e02f7a27f2bcc15b7d455c9df05df8ffffcc596a2a541eeda9a3110326e7a3"},
{file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed69a7971d67b08f152c17c638f0e8c2aa207e9dd3a5fcd3cba294d39b5a8d2d"},
{file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2019d966e98f7c6df24b3b8363998575f47d26471bfb14aade37630fae836a1"},
{file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36c0b51a285b68311e207a76c385650322734c8717d16c2eb8af75c9d69506e7"},
{file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:220e0963b4fb507c525c8f58cde3da6b1be0bfddb7ffd6798fb8f2531226cdb1"},
{file = "jiter-0.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa25c7a9bf7875a141182b9c95aed487add635da01942ef7ca726e42a0c09058"},
{file = "jiter-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e90552109ca8ccd07f47ca99c8a1509ced93920d271bb81780a973279974c5ab"},
{file = "jiter-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:67723a011964971864e0b484b0ecfee6a14de1533cff7ffd71189e92103b38a8"},
{file = "jiter-0.6.1-cp310-none-win32.whl", hash = "sha256:33af2b7d2bf310fdfec2da0177eab2fedab8679d1538d5b86a633ebfbbac4edd"},
{file = "jiter-0.6.1-cp310-none-win_amd64.whl", hash = "sha256:7cea41c4c673353799906d940eee8f2d8fd1d9561d734aa921ae0f75cb9732f4"},
{file = "jiter-0.6.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b03c24e7da7e75b170c7b2b172d9c5e463aa4b5c95696a368d52c295b3f6847f"},
{file = "jiter-0.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:47fee1be677b25d0ef79d687e238dc6ac91a8e553e1a68d0839f38c69e0ee491"},
{file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0d2f6e01a8a0fb0eab6d0e469058dab2be46ff3139ed2d1543475b5a1d8e7"},
{file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b809e39e342c346df454b29bfcc7bca3d957f5d7b60e33dae42b0e5ec13e027"},
{file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e9ac7c2f092f231f5620bef23ce2e530bd218fc046098747cc390b21b8738a7a"},
{file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e51a2d80d5fe0ffb10ed2c82b6004458be4a3f2b9c7d09ed85baa2fbf033f54b"},
{file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3343d4706a2b7140e8bd49b6c8b0a82abf9194b3f0f5925a78fc69359f8fc33c"},
{file = "jiter-0.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82521000d18c71e41c96960cb36e915a357bc83d63a8bed63154b89d95d05ad1"},
{file = "jiter-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c843e7c1633470708a3987e8ce617ee2979ee18542d6eb25ae92861af3f1d62"},
{file = "jiter-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a2e861658c3fe849efc39b06ebb98d042e4a4c51a8d7d1c3ddc3b1ea091d0784"},
{file = "jiter-0.6.1-cp311-none-win32.whl", hash = "sha256:7d72fc86474862c9c6d1f87b921b70c362f2b7e8b2e3c798bb7d58e419a6bc0f"},
{file = "jiter-0.6.1-cp311-none-win_amd64.whl", hash = "sha256:3e36a320634f33a07794bb15b8da995dccb94f944d298c8cfe2bd99b1b8a574a"},
{file = "jiter-0.6.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1fad93654d5a7dcce0809aff66e883c98e2618b86656aeb2129db2cd6f26f867"},
{file = "jiter-0.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4e6e340e8cd92edab7f6a3a904dbbc8137e7f4b347c49a27da9814015cc0420c"},
{file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:691352e5653af84ed71763c3c427cff05e4d658c508172e01e9c956dfe004aba"},
{file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:defee3949313c1f5b55e18be45089970cdb936eb2a0063f5020c4185db1b63c9"},
{file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26d2bdd5da097e624081c6b5d416d3ee73e5b13f1703bcdadbb1881f0caa1933"},
{file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18aa9d1626b61c0734b973ed7088f8a3d690d0b7f5384a5270cd04f4d9f26c86"},
{file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a3567c8228afa5ddcce950631c6b17397ed178003dc9ee7e567c4c4dcae9fa0"},
{file = "jiter-0.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5c0507131c922defe3f04c527d6838932fcdfd69facebafd7d3574fa3395314"},
{file = "jiter-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:540fcb224d7dc1bcf82f90f2ffb652df96f2851c031adca3c8741cb91877143b"},
{file = "jiter-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e7b75436d4fa2032b2530ad989e4cb0ca74c655975e3ff49f91a1a3d7f4e1df2"},
{file = "jiter-0.6.1-cp312-none-win32.whl", hash = "sha256:883d2ced7c21bf06874fdeecab15014c1c6d82216765ca6deef08e335fa719e0"},
{file = "jiter-0.6.1-cp312-none-win_amd64.whl", hash = "sha256:91e63273563401aadc6c52cca64a7921c50b29372441adc104127b910e98a5b6"},
{file = "jiter-0.6.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:852508a54fe3228432e56019da8b69208ea622a3069458252f725d634e955b31"},
{file = "jiter-0.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f491cc69ff44e5a1e8bc6bf2b94c1f98d179e1aaf4a554493c171a5b2316b701"},
{file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc56c8f0b2a28ad4d8047f3ae62d25d0e9ae01b99940ec0283263a04724de1f3"},
{file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51b58f7a0d9e084a43b28b23da2b09fc5e8df6aa2b6a27de43f991293cab85fd"},
{file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f79ce15099154c90ef900d69c6b4c686b64dfe23b0114e0971f2fecd306ec6c"},
{file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:03a025b52009f47e53ea619175d17e4ded7c035c6fbd44935cb3ada11e1fd592"},
{file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c74a8d93718137c021d9295248a87c2f9fdc0dcafead12d2930bc459ad40f885"},
{file = "jiter-0.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40b03b75f903975f68199fc4ec73d546150919cb7e534f3b51e727c4d6ccca5a"},
{file = "jiter-0.6.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:825651a3f04cf92a661d22cad61fc913400e33aa89b3e3ad9a6aa9dc8a1f5a71"},
{file = "jiter-0.6.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:928bf25eb69ddb292ab8177fe69d3fbf76c7feab5fce1c09265a7dccf25d3991"},
{file = "jiter-0.6.1-cp313-none-win32.whl", hash = "sha256:352cd24121e80d3d053fab1cc9806258cad27c53cad99b7a3cac57cf934b12e4"},
{file = "jiter-0.6.1-cp313-none-win_amd64.whl", hash = "sha256:be7503dd6f4bf02c2a9bacb5cc9335bc59132e7eee9d3e931b13d76fd80d7fda"},
{file = "jiter-0.6.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:31d8e00e1fb4c277df8ab6f31a671f509ebc791a80e5c61fdc6bc8696aaa297c"},
{file = "jiter-0.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:77c296d65003cd7ee5d7b0965f6acbe6cffaf9d1fa420ea751f60ef24e85fed5"},
{file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeeb0c0325ef96c12a48ea7e23e2e86fe4838e6e0a995f464cf4c79fa791ceeb"},
{file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a31c6fcbe7d6c25d6f1cc6bb1cba576251d32795d09c09961174fe461a1fb5bd"},
{file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59e2b37f3b9401fc9e619f4d4badcab2e8643a721838bcf695c2318a0475ae42"},
{file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bae5ae4853cb9644144e9d0755854ce5108d470d31541d83f70ca7ecdc2d1637"},
{file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9df588e9c830b72d8db1dd7d0175af6706b0904f682ea9b1ca8b46028e54d6e9"},
{file = "jiter-0.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15f8395e835cf561c85c1adee72d899abf2733d9df72e9798e6d667c9b5c1f30"},
{file = "jiter-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a99d4e0b5fc3b05ea732d67eb2092fe894e95a90e6e413f2ea91387e228a307"},
{file = "jiter-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a311df1fa6be0ccd64c12abcd85458383d96e542531bafbfc0a16ff6feda588f"},
{file = "jiter-0.6.1-cp38-none-win32.whl", hash = "sha256:81116a6c272a11347b199f0e16b6bd63f4c9d9b52bc108991397dd80d3c78aba"},
{file = "jiter-0.6.1-cp38-none-win_amd64.whl", hash = "sha256:13f9084e3e871a7c0b6e710db54444088b1dd9fbefa54d449b630d5e73bb95d0"},
{file = "jiter-0.6.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f1c53615fcfec3b11527c08d19cff6bc870da567ce4e57676c059a3102d3a082"},
{file = "jiter-0.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f791b6a4da23238c17a81f44f5b55d08a420c5692c1fda84e301a4b036744eb1"},
{file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c97e90fec2da1d5f68ef121444c2c4fa72eabf3240829ad95cf6bbeca42a301"},
{file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3cbc1a66b4e41511209e97a2866898733c0110b7245791ac604117b7fb3fedb7"},
{file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4e85f9e12cd8418ab10e1fcf0e335ae5bb3da26c4d13a0fd9e6a17a674783b6"},
{file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08be33db6dcc374c9cc19d3633af5e47961a7b10d4c61710bd39e48d52a35824"},
{file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:677be9550004f5e010d673d3b2a2b815a8ea07a71484a57d3f85dde7f14cf132"},
{file = "jiter-0.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e8bd065be46c2eecc328e419d6557bbc37844c88bb07b7a8d2d6c91c7c4dedc9"},
{file = "jiter-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bd95375ce3609ec079a97c5d165afdd25693302c071ca60c7ae1cf826eb32022"},
{file = "jiter-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db459ed22d0208940d87f614e1f0ea5a946d29a3cfef71f7e1aab59b6c6b2afb"},
{file = "jiter-0.6.1-cp39-none-win32.whl", hash = "sha256:d71c962f0971347bd552940ab96aa42ceefcd51b88c4ced8a27398182efa8d80"},
{file = "jiter-0.6.1-cp39-none-win_amd64.whl", hash = "sha256:d465db62d2d10b489b7e7a33027c4ae3a64374425d757e963f86df5b5f2e7fc5"},
{file = "jiter-0.6.1.tar.gz", hash = "sha256:e19cd21221fc139fb032e4112986656cb2739e9fe6d84c13956ab30ccc7d4449"},
{file = "jiter-0.7.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e14027f61101b3f5e173095d9ecf95c1cac03ffe45a849279bde1d97e559e314"},
{file = "jiter-0.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:979ec4711c2e37ac949561858bd42028884c9799516a923e1ff0b501ef341a4a"},
{file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:662d5d3cca58ad6af7a3c6226b641c8655de5beebcb686bfde0df0f21421aafa"},
{file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d89008fb47043a469f97ad90840b97ba54e7c3d62dc7cbb6cbf938bd0caf71d"},
{file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8b16c35c846a323ce9067170d5ab8c31ea3dbcab59c4f7608bbbf20c2c3b43f"},
{file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9e82daaa1b0a68704f9029b81e664a5a9de3e466c2cbaabcda5875f961702e7"},
{file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43a87a9f586636e1f0dd3651a91f79b491ea0d9fd7cbbf4f5c463eebdc48bda7"},
{file = "jiter-0.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2ec05b1615f96cc3e4901678bc863958611584072967d9962f9e571d60711d52"},
{file = "jiter-0.7.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a5cb97e35370bde7aa0d232a7f910f5a0fbbc96bc0a7dbaa044fd5cd6bcd7ec3"},
{file = "jiter-0.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb316dacaf48c8c187cea75d0d7f835f299137e6fdd13f691dff8f92914015c7"},
{file = "jiter-0.7.0-cp310-none-win32.whl", hash = "sha256:243f38eb4072763c54de95b14ad283610e0cd3bf26393870db04e520f60eebb3"},
{file = "jiter-0.7.0-cp310-none-win_amd64.whl", hash = "sha256:2221d5603c139f6764c54e37e7c6960c469cbcd76928fb10d15023ba5903f94b"},
{file = "jiter-0.7.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:91cec0ad755bd786c9f769ce8d843af955df6a8e56b17658771b2d5cb34a3ff8"},
{file = "jiter-0.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:feba70a28a27d962e353e978dbb6afd798e711c04cb0b4c5e77e9d3779033a1a"},
{file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d866ec066c3616cacb8535dbda38bb1d470b17b25f0317c4540182bc886ce2"},
{file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e7a7a00b6f9f18289dd563596f97ecaba6c777501a8ba04bf98e03087bcbc60"},
{file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9aaf564094c7db8687f2660605e099f3d3e6ea5e7135498486674fcb78e29165"},
{file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4d27e09825c1b3c7a667adb500ce8b840e8fc9f630da8454b44cdd4fb0081bb"},
{file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca7c287da9c1d56dda88da1d08855a787dbb09a7e2bd13c66a2e288700bd7c7"},
{file = "jiter-0.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db19a6d160f093cbc8cd5ea2abad420b686f6c0e5fb4f7b41941ebc6a4f83cda"},
{file = "jiter-0.7.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e46a63c7f877cf7441ffc821c28287cfb9f533ae6ed707bde15e7d4dfafa7ae"},
{file = "jiter-0.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ba426fa7ff21cb119fa544b75dd3fbee6a70e55a5829709c0338d07ccd30e6d"},
{file = "jiter-0.7.0-cp311-none-win32.whl", hash = "sha256:c07f55a64912b0c7982377831210836d2ea92b7bd343fca67a32212dd72e38e0"},
{file = "jiter-0.7.0-cp311-none-win_amd64.whl", hash = "sha256:ed27b2c43e1b5f6c7fedc5c11d4d8bfa627de42d1143d87e39e2e83ddefd861a"},
{file = "jiter-0.7.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac7930bcaaeb1e229e35c91c04ed2e9f39025b86ee9fc3141706bbf6fff4aeeb"},
{file = "jiter-0.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:571feae3e7c901a8eedde9fd2865b0dfc1432fb15cab8c675a8444f7d11b7c5d"},
{file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8af4df8a262fa2778b68c2a03b6e9d1cb4d43d02bea6976d46be77a3a331af1"},
{file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd028d4165097a611eb0c7494d8c1f2aebd46f73ca3200f02a175a9c9a6f22f5"},
{file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6b487247c7836810091e9455efe56a52ec51bfa3a222237e1587d04d3e04527"},
{file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6d28a92f28814e1a9f2824dc11f4e17e1df1f44dc4fdeb94c5450d34bcb2602"},
{file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90443994bbafe134f0b34201dad3ebe1c769f0599004084e046fb249ad912425"},
{file = "jiter-0.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f9abf464f9faac652542ce8360cea8e68fba2b78350e8a170248f9bcc228702a"},
{file = "jiter-0.7.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db7a8d99fc5f842f7d2852f06ccaed066532292c41723e5dff670c339b649f88"},
{file = "jiter-0.7.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:15cf691ebd8693b70c94627d6b748f01e6d697d9a6e9f2bc310934fcfb7cf25e"},
{file = "jiter-0.7.0-cp312-none-win32.whl", hash = "sha256:9dcd54fa422fb66ca398bec296fed5f58e756aa0589496011cfea2abb5be38a5"},
{file = "jiter-0.7.0-cp312-none-win_amd64.whl", hash = "sha256:cc989951f73f9375b8eacd571baaa057f3d7d11b7ce6f67b9d54642e7475bfad"},
{file = "jiter-0.7.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:24cecd18df540963cd27c08ca5ce1d0179f229ff78066d9eecbe5add29361340"},
{file = "jiter-0.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d41b46236b90b043cca73785674c23d2a67d16f226394079d0953f94e765ed76"},
{file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b160db0987171365c153e406a45dcab0ee613ae3508a77bfff42515cb4ce4d6e"},
{file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d1c8d91e0f0bd78602eaa081332e8ee4f512c000716f5bc54e9a037306d693a7"},
{file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:997706c683195eeff192d2e5285ce64d2a610414f37da3a3f2625dcf8517cf90"},
{file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ea52a8a0ff0229ab2920284079becd2bae0688d432fca94857ece83bb49c541"},
{file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d77449d2738cf74752bb35d75ee431af457e741124d1db5e112890023572c7c"},
{file = "jiter-0.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8203519907a1d81d6cb00902c98e27c2d0bf25ce0323c50ca594d30f5f1fbcf"},
{file = "jiter-0.7.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41d15ccc53931c822dd7f1aebf09faa3cda2d7b48a76ef304c7dbc19d1302e51"},
{file = "jiter-0.7.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:febf3179b2fabf71fbd2fd52acb8594163bb173348b388649567a548f356dbf6"},
{file = "jiter-0.7.0-cp313-none-win32.whl", hash = "sha256:4a8e2d866e7eda19f012444e01b55079d8e1c4c30346aaac4b97e80c54e2d6d3"},
{file = "jiter-0.7.0-cp313-none-win_amd64.whl", hash = "sha256:7417c2b928062c496f381fb0cb50412eee5ad1d8b53dbc0e011ce45bb2de522c"},
{file = "jiter-0.7.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9c62c737b5368e51e74960a08fe1adc807bd270227291daede78db24d5fbf556"},
{file = "jiter-0.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e4640722b1bef0f6e342fe4606aafaae0eb4f4be5c84355bb6867f34400f6688"},
{file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f367488c3b9453eab285424c61098faa1cab37bb49425e69c8dca34f2dfe7d69"},
{file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0cf5d42beb3514236459454e3287db53d9c4d56c4ebaa3e9d0efe81b19495129"},
{file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cc5190ea1113ee6f7252fa8a5fe5a6515422e378356c950a03bbde5cafbdbaab"},
{file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63ee47a149d698796a87abe445fc8dee21ed880f09469700c76c8d84e0d11efd"},
{file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48592c26ea72d3e71aa4bea0a93454df907d80638c3046bb0705507b6704c0d7"},
{file = "jiter-0.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:79fef541199bd91cfe8a74529ecccb8eaf1aca38ad899ea582ebbd4854af1e51"},
{file = "jiter-0.7.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d1ef6bb66041f2514739240568136c81b9dcc64fd14a43691c17ea793b6535c0"},
{file = "jiter-0.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aca4d950863b1c238e315bf159466e064c98743eef3bd0ff9617e48ff63a4715"},
{file = "jiter-0.7.0-cp38-none-win32.whl", hash = "sha256:897745f230350dcedb8d1ebe53e33568d48ea122c25e6784402b6e4e88169be7"},
{file = "jiter-0.7.0-cp38-none-win_amd64.whl", hash = "sha256:b928c76a422ef3d0c85c5e98c498ce3421b313c5246199541e125b52953e1bc0"},
{file = "jiter-0.7.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c9b669ff6f8ba08270dee9ccf858d3b0203b42314a428a1676762f2d390fbb64"},
{file = "jiter-0.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b5be919bacd73ca93801c3042bce6e95cb9c555a45ca83617b9b6c89df03b9c2"},
{file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a282e1e8a396dabcea82d64f9d05acf7efcf81ecdd925b967020dcb0e671c103"},
{file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:17ecb1a578a56e97a043c72b463776b5ea30343125308f667fb8fce4b3796735"},
{file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b6045fa0527129218cdcd8a8b839f678219686055f31ebab35f87d354d9c36e"},
{file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:189cc4262a92e33c19d4fd24018f5890e4e6da5b2581f0059938877943f8298c"},
{file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c138414839effbf30d185e30475c6dc8a16411a1e3681e5fd4605ab1233ac67a"},
{file = "jiter-0.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2791604acef33da6b72d5ecf885a32384bcaf9aa1e4be32737f3b8b9588eef6a"},
{file = "jiter-0.7.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ae60ec89037a78d60bbf3d8b127f1567769c8fa24886e0abed3f622791dea478"},
{file = "jiter-0.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:836f03dea312967635233d826f783309b98cfd9ccc76ac776e224cfcef577862"},
{file = "jiter-0.7.0-cp39-none-win32.whl", hash = "sha256:ebc30ae2ce4bc4986e1764c404b4ea1924f926abf02ce92516485098f8545374"},
{file = "jiter-0.7.0-cp39-none-win_amd64.whl", hash = "sha256:abf596f951370c648f37aa9899deab296c42a3829736e598b0dd10b08f77a44d"},
{file = "jiter-0.7.0.tar.gz", hash = "sha256:c061d9738535497b5509f8970584f20de1e900806b239a39a9994fc191dad630"},
]
[[package]]
@ -3633,13 +3649,13 @@ files = [
[[package]]
name = "openai"
version = "1.52.2"
version = "1.53.0"
description = "The official Python library for the openai API"
optional = false
python-versions = ">=3.7.1"
files = [
{file = "openai-1.52.2-py3-none-any.whl", hash = "sha256:57e9e37bc407f39bb6ec3a27d7e8fb9728b2779936daa1fcf95df17d3edfaccc"},
{file = "openai-1.52.2.tar.gz", hash = "sha256:87b7d0f69d85f5641678d414b7ee3082363647a5c66a462ed7f3ccb59582da0d"},
{file = "openai-1.53.0-py3-none-any.whl", hash = "sha256:20f408c32fc5cb66e60c6882c994cdca580a5648e10045cd840734194f033418"},
{file = "openai-1.53.0.tar.gz", hash = "sha256:be2c4e77721b166cce8130e544178b7d579f751b4b074ffbaade3854b6f85ec5"},
]
[package.dependencies]
@ -4015,13 +4031,13 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p
[[package]]
name = "prettytable"
version = "3.11.0"
version = "3.12.0"
description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format"
optional = false
python-versions = ">=3.8"
python-versions = ">=3.9"
files = [
{file = "prettytable-3.11.0-py3-none-any.whl", hash = "sha256:aa17083feb6c71da11a68b2c213b04675c4af4ce9c541762632ca3f2cb3546dd"},
{file = "prettytable-3.11.0.tar.gz", hash = "sha256:7e23ca1e68bbfd06ba8de98bf553bf3493264c96d5e8a615c0471025deeba722"},
{file = "prettytable-3.12.0-py3-none-any.whl", hash = "sha256:77ca0ad1c435b6e363d7e8623d7cc4fcf2cf15513bf77a1c1b2e814930ac57cc"},
{file = "prettytable-3.12.0.tar.gz", hash = "sha256:f04b3e1ba35747ac86e96ec33e3bb9748ce08e254dc2a1c6253945901beec804"},
]
[package.dependencies]
@ -5502,23 +5518,23 @@ tests = ["coverage[toml] (>=5.0.2)", "pytest"]
[[package]]
name = "setuptools"
version = "75.2.0"
version = "75.3.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
optional = false
python-versions = ">=3.8"
files = [
{file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"},
{file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"},
{file = "setuptools-75.3.0-py3-none-any.whl", hash = "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd"},
{file = "setuptools-75.3.0.tar.gz", hash = "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686"},
]
[package.extras]
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"]
core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
cover = ["pytest-cov"]
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
enabler = ["pytest-enabler (>=2.2)"]
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"]
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.12.*)", "pytest-mypy"]
[[package]]
name = "simplejson"
@ -6367,93 +6383,93 @@ files = [
[[package]]
name = "yarl"
version = "1.17.0"
version = "1.17.1"
description = "Yet another URL library"
optional = false
python-versions = ">=3.9"
files = [
{file = "yarl-1.17.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2d8715edfe12eee6f27f32a3655f38d6c7410deb482158c0b7d4b7fad5d07628"},
{file = "yarl-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1803bf2a7a782e02db746d8bd18f2384801bc1d108723840b25e065b116ad726"},
{file = "yarl-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e66589110e20c2951221a938fa200c7aa134a8bdf4e4dc97e6b21539ff026d4"},
{file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7069d411cfccf868e812497e0ec4acb7c7bf8d684e93caa6c872f1e6f5d1664d"},
{file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cbf70ba16118db3e4b0da69dcde9d4d4095d383c32a15530564c283fa38a7c52"},
{file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0bc53cc349675b32ead83339a8de79eaf13b88f2669c09d4962322bb0f064cbc"},
{file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6aa18a402d1c80193ce97c8729871f17fd3e822037fbd7d9b719864018df746"},
{file = "yarl-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d89c5bc701861cfab357aa0cd039bc905fe919997b8c312b4b0c358619c38d4d"},
{file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b728bdf38ca58f2da1d583e4af4ba7d4cd1a58b31a363a3137a8159395e7ecc7"},
{file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:5542e57dc15d5473da5a39fbde14684b0cc4301412ee53cbab677925e8497c11"},
{file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e564b57e5009fb150cb513804d7e9e9912fee2e48835638f4f47977f88b4a39c"},
{file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:eb3c4cff524b4c1c1dba3a6da905edb1dfd2baf6f55f18a58914bbb2d26b59e1"},
{file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:05e13f389038842da930d439fbed63bdce3f7644902714cb68cf527c971af804"},
{file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:153c38ee2b4abba136385af4467459c62d50f2a3f4bde38c7b99d43a20c143ef"},
{file = "yarl-1.17.0-cp310-cp310-win32.whl", hash = "sha256:4065b4259d1ae6f70fd9708ffd61e1c9c27516f5b4fae273c41028afcbe3a094"},
{file = "yarl-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:abf366391a02a8335c5c26163b5fe6f514cc1d79e74d8bf3ffab13572282368e"},
{file = "yarl-1.17.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19a4fe0279626c6295c5b0c8c2bb7228319d2e985883621a6e87b344062d8135"},
{file = "yarl-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cadd0113f4db3c6b56868d6a19ca6286f5ccfa7bc08c27982cf92e5ed31b489a"},
{file = "yarl-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:60d6693eef43215b1ccfb1df3f6eae8db30a9ff1e7989fb6b2a6f0b468930ee8"},
{file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb8bf3843e1fa8cf3fe77813c512818e57368afab7ebe9ef02446fe1a10b492"},
{file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2a5b35fd1d8d90443e061d0c8669ac7600eec5c14c4a51f619e9e105b136715"},
{file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5bf17b32f392df20ab5c3a69d37b26d10efaa018b4f4e5643c7520d8eee7ac7"},
{file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48f51b529b958cd06e78158ff297a8bf57b4021243c179ee03695b5dbf9cb6e1"},
{file = "yarl-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fcaa06bf788e19f913d315d9c99a69e196a40277dc2c23741a1d08c93f4d430"},
{file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:32f3ee19ff0f18a7a522d44e869e1ebc8218ad3ae4ebb7020445f59b4bbe5897"},
{file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:a4fb69a81ae2ec2b609574ae35420cf5647d227e4d0475c16aa861dd24e840b0"},
{file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7bacc8b77670322132a1b2522c50a1f62991e2f95591977455fd9a398b4e678d"},
{file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:437bf6eb47a2d20baaf7f6739895cb049e56896a5ffdea61a4b25da781966e8b"},
{file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:30534a03c87484092080e3b6e789140bd277e40f453358900ad1f0f2e61fc8ec"},
{file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b30df4ff98703649915144be6f0df3b16fd4870ac38a09c56d5d9e54ff2d5f96"},
{file = "yarl-1.17.0-cp311-cp311-win32.whl", hash = "sha256:263b487246858e874ab53e148e2a9a0de8465341b607678106829a81d81418c6"},
{file = "yarl-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:07055a9e8b647a362e7d4810fe99d8f98421575e7d2eede32e008c89a65a17bd"},
{file = "yarl-1.17.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:84095ab25ba69a8fa3fb4936e14df631b8a71193fe18bd38be7ecbe34d0f5512"},
{file = "yarl-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02608fb3f6df87039212fc746017455ccc2a5fc96555ee247c45d1e9f21f1d7b"},
{file = "yarl-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13468d291fe8c12162b7cf2cdb406fe85881c53c9e03053ecb8c5d3523822cd9"},
{file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8da3f8f368fb7e2f052fded06d5672260c50b5472c956a5f1bd7bf474ae504ab"},
{file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec0507ab6523980bed050137007c76883d941b519aca0e26d4c1ec1f297dd646"},
{file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08fc76df7fd8360e9ff30e6ccc3ee85b8dbd6ed5d3a295e6ec62bcae7601b932"},
{file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d522f390686acb6bab2b917dd9ca06740c5080cd2eaa5aef8827b97e967319d"},
{file = "yarl-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:147c527a80bb45b3dcd6e63401af8ac574125d8d120e6afe9901049286ff64ef"},
{file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:24cf43bcd17a0a1f72284e47774f9c60e0bf0d2484d5851f4ddf24ded49f33c6"},
{file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c28a44b9e0fba49c3857360e7ad1473fc18bc7f6659ca08ed4f4f2b9a52c75fa"},
{file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:350cacb2d589bc07d230eb995d88fcc646caad50a71ed2d86df533a465a4e6e1"},
{file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:fd1ab1373274dea1c6448aee420d7b38af163b5c4732057cd7ee9f5454efc8b1"},
{file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4934e0f96dadc567edc76d9c08181633c89c908ab5a3b8f698560124167d9488"},
{file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8d0a278170d75c88e435a1ce76557af6758bfebc338435b2eba959df2552163e"},
{file = "yarl-1.17.0-cp312-cp312-win32.whl", hash = "sha256:61584f33196575a08785bb56db6b453682c88f009cd9c6f338a10f6737ce419f"},
{file = "yarl-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:9987a439ad33a7712bd5bbd073f09ad10d38640425fa498ecc99d8aa064f8fc4"},
{file = "yarl-1.17.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8deda7b8eb15a52db94c2014acdc7bdd14cb59ec4b82ac65d2ad16dc234a109e"},
{file = "yarl-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56294218b348dcbd3d7fce0ffd79dd0b6c356cb2a813a1181af730b7c40de9e7"},
{file = "yarl-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1fab91292f51c884b290ebec0b309a64a5318860ccda0c4940e740425a67b6b7"},
{file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cf93fa61ff4d9c7d40482ce1a2c9916ca435e34a1b8451e17f295781ccc034f"},
{file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:261be774a0d71908c8830c33bacc89eef15c198433a8cc73767c10eeeb35a7d0"},
{file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deec9693b67f6af856a733b8a3e465553ef09e5e8ead792f52c25b699b8f9e6e"},
{file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c804b07622ba50a765ca7fb8145512836ab65956de01307541def869e4a456c9"},
{file = "yarl-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d013a7c9574e98c14831a8f22d27277688ec3b2741d0188ac01a910b009987a"},
{file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e2cfcba719bd494c7413dcf0caafb51772dec168c7c946e094f710d6aa70494e"},
{file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:c068aba9fc5b94dfae8ea1cedcbf3041cd4c64644021362ffb750f79837e881f"},
{file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3616df510ffac0df3c9fa851a40b76087c6c89cbcea2de33a835fc80f9faac24"},
{file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:755d6176b442fba9928a4df787591a6a3d62d4969f05c406cad83d296c5d4e05"},
{file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:c18f6e708d1cf9ff5b1af026e697ac73bea9cb70ee26a2b045b112548579bed2"},
{file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5b937c216b6dee8b858c6afea958de03c5ff28406257d22b55c24962a2baf6fd"},
{file = "yarl-1.17.0-cp313-cp313-win32.whl", hash = "sha256:d0131b14cb545c1a7bd98f4565a3e9bdf25a1bd65c83fc156ee5d8a8499ec4a3"},
{file = "yarl-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:01c96efa4313c01329e88b7e9e9e1b2fc671580270ddefdd41129fa8d0db7696"},
{file = "yarl-1.17.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0d44f67e193f0a7acdf552ecb4d1956a3a276c68e7952471add9f93093d1c30d"},
{file = "yarl-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:16ea0aa5f890cdcb7ae700dffa0397ed6c280840f637cd07bffcbe4b8d68b985"},
{file = "yarl-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cf5469dc7dcfa65edf5cc3a6add9f84c5529c6b556729b098e81a09a92e60e51"},
{file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e662bf2f6e90b73cf2095f844e2bc1fda39826472a2aa1959258c3f2a8500a2f"},
{file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8260e88f1446904ba20b558fa8ce5d0ab9102747238e82343e46d056d7304d7e"},
{file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dc16477a4a2c71e64c5d3d15d7ae3d3a6bb1e8b955288a9f73c60d2a391282f"},
{file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46027e326cecd55e5950184ec9d86c803f4f6fe4ba6af9944a0e537d643cdbe0"},
{file = "yarl-1.17.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc95e46c92a2b6f22e70afe07e34dbc03a4acd07d820204a6938798b16f4014f"},
{file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:16ca76c7ac9515320cd09d6cc083d8d13d1803f6ebe212b06ea2505fd66ecff8"},
{file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:eb1a5b97388f2613f9305d78a3473cdf8d80c7034e554d8199d96dcf80c62ac4"},
{file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:41fd5498975418cdc34944060b8fbeec0d48b2741068077222564bea68daf5a6"},
{file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:146ca582ed04a5664ad04b0e0603934281eaab5c0115a5a46cce0b3c061a56a1"},
{file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:6abb8c06107dbec97481b2392dafc41aac091a5d162edf6ed7d624fe7da0587a"},
{file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4d14be4613dd4f96c25feb4bd8c0d8ce0f529ab0ae555a17df5789e69d8ec0c5"},
{file = "yarl-1.17.0-cp39-cp39-win32.whl", hash = "sha256:174d6a6cad1068f7850702aad0c7b1bca03bcac199ca6026f84531335dfc2646"},
{file = "yarl-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:6af417ca2c7349b101d3fd557ad96b4cd439fdb6ab0d288e3f64a068eea394d0"},
{file = "yarl-1.17.0-py3-none-any.whl", hash = "sha256:62dd42bb0e49423f4dd58836a04fcf09c80237836796025211bbe913f1524993"},
{file = "yarl-1.17.0.tar.gz", hash = "sha256:d3f13583f378930377e02002b4085a3d025b00402d5a80911726d43a67911cd9"},
{file = "yarl-1.17.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1794853124e2f663f0ea54efb0340b457f08d40a1cef78edfa086576179c91"},
{file = "yarl-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fbea1751729afe607d84acfd01efd95e3b31db148a181a441984ce9b3d3469da"},
{file = "yarl-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ee427208c675f1b6e344a1f89376a9613fc30b52646a04ac0c1f6587c7e46ec"},
{file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b74ff4767d3ef47ffe0cd1d89379dc4d828d4873e5528976ced3b44fe5b0a21"},
{file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:62a91aefff3d11bf60e5956d340eb507a983a7ec802b19072bb989ce120cd948"},
{file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:846dd2e1243407133d3195d2d7e4ceefcaa5f5bf7278f0a9bda00967e6326b04"},
{file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e844be8d536afa129366d9af76ed7cb8dfefec99f5f1c9e4f8ae542279a6dc3"},
{file = "yarl-1.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc7c92c1baa629cb03ecb0c3d12564f172218fb1739f54bf5f3881844daadc6d"},
{file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ae3476e934b9d714aa8000d2e4c01eb2590eee10b9d8cd03e7983ad65dfbfcba"},
{file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c7e177c619342e407415d4f35dec63d2d134d951e24b5166afcdfd1362828e17"},
{file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64cc6e97f14cf8a275d79c5002281f3040c12e2e4220623b5759ea7f9868d6a5"},
{file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:84c063af19ef5130084db70ada40ce63a84f6c1ef4d3dbc34e5e8c4febb20822"},
{file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:482c122b72e3c5ec98f11457aeb436ae4aecca75de19b3d1de7cf88bc40db82f"},
{file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:380e6c38ef692b8fd5a0f6d1fa8774d81ebc08cfbd624b1bca62a4d4af2f9931"},
{file = "yarl-1.17.1-cp310-cp310-win32.whl", hash = "sha256:16bca6678a83657dd48df84b51bd56a6c6bd401853aef6d09dc2506a78484c7b"},
{file = "yarl-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:561c87fea99545ef7d692403c110b2f99dced6dff93056d6e04384ad3bc46243"},
{file = "yarl-1.17.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cbad927ea8ed814622305d842c93412cb47bd39a496ed0f96bfd42b922b4a217"},
{file = "yarl-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fca4b4307ebe9c3ec77a084da3a9d1999d164693d16492ca2b64594340999988"},
{file = "yarl-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff5c6771c7e3511a06555afa317879b7db8d640137ba55d6ab0d0c50425cab75"},
{file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b29beab10211a746f9846baa39275e80034e065460d99eb51e45c9a9495bcca"},
{file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a52a1ffdd824fb1835272e125385c32fd8b17fbdefeedcb4d543cc23b332d74"},
{file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:58c8e9620eb82a189c6c40cb6b59b4e35b2ee68b1f2afa6597732a2b467d7e8f"},
{file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d216e5d9b8749563c7f2c6f7a0831057ec844c68b4c11cb10fc62d4fd373c26d"},
{file = "yarl-1.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881764d610e3269964fc4bb3c19bb6fce55422828e152b885609ec176b41cf11"},
{file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8c79e9d7e3d8a32d4824250a9c6401194fb4c2ad9a0cec8f6a96e09a582c2cc0"},
{file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:299f11b44d8d3a588234adbe01112126010bd96d9139c3ba7b3badd9829261c3"},
{file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cc7d768260f4ba4ea01741c1b5fe3d3a6c70eb91c87f4c8761bbcce5181beafe"},
{file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:de599af166970d6a61accde358ec9ded821234cbbc8c6413acfec06056b8e860"},
{file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2b24ec55fad43e476905eceaf14f41f6478780b870eda5d08b4d6de9a60b65b4"},
{file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9fb815155aac6bfa8d86184079652c9715c812d506b22cfa369196ef4e99d1b4"},
{file = "yarl-1.17.1-cp311-cp311-win32.whl", hash = "sha256:7615058aabad54416ddac99ade09a5510cf77039a3b903e94e8922f25ed203d7"},
{file = "yarl-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:14bc88baa44e1f84164a392827b5defb4fa8e56b93fecac3d15315e7c8e5d8b3"},
{file = "yarl-1.17.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:327828786da2006085a4d1feb2594de6f6d26f8af48b81eb1ae950c788d97f61"},
{file = "yarl-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc353841428d56b683a123a813e6a686e07026d6b1c5757970a877195f880c2d"},
{file = "yarl-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c73df5b6e8fabe2ddb74876fb82d9dd44cbace0ca12e8861ce9155ad3c886139"},
{file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bdff5e0995522706c53078f531fb586f56de9c4c81c243865dd5c66c132c3b5"},
{file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:06157fb3c58f2736a5e47c8fcbe1afc8b5de6fb28b14d25574af9e62150fcaac"},
{file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1654ec814b18be1af2c857aa9000de7a601400bd4c9ca24629b18486c2e35463"},
{file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f6595c852ca544aaeeb32d357e62c9c780eac69dcd34e40cae7b55bc4fb1147"},
{file = "yarl-1.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:459e81c2fb920b5f5df744262d1498ec2c8081acdcfe18181da44c50f51312f7"},
{file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7e48cdb8226644e2fbd0bdb0a0f87906a3db07087f4de77a1b1b1ccfd9e93685"},
{file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d9b6b28a57feb51605d6ae5e61a9044a31742db557a3b851a74c13bc61de5172"},
{file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e594b22688d5747b06e957f1ef822060cb5cb35b493066e33ceac0cf882188b7"},
{file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5f236cb5999ccd23a0ab1bd219cfe0ee3e1c1b65aaf6dd3320e972f7ec3a39da"},
{file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a2a64e62c7a0edd07c1c917b0586655f3362d2c2d37d474db1a509efb96fea1c"},
{file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d0eea830b591dbc68e030c86a9569826145df485b2b4554874b07fea1275a199"},
{file = "yarl-1.17.1-cp312-cp312-win32.whl", hash = "sha256:46ddf6e0b975cd680eb83318aa1d321cb2bf8d288d50f1754526230fcf59ba96"},
{file = "yarl-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:117ed8b3732528a1e41af3aa6d4e08483c2f0f2e3d3d7dca7cf538b3516d93df"},
{file = "yarl-1.17.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5d1d42556b063d579cae59e37a38c61f4402b47d70c29f0ef15cee1acaa64488"},
{file = "yarl-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c0167540094838ee9093ef6cc2c69d0074bbf84a432b4995835e8e5a0d984374"},
{file = "yarl-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2f0a6423295a0d282d00e8701fe763eeefba8037e984ad5de44aa349002562ac"},
{file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5b078134f48552c4d9527db2f7da0b5359abd49393cdf9794017baec7506170"},
{file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d401f07261dc5aa36c2e4efc308548f6ae943bfff20fcadb0a07517a26b196d8"},
{file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5f1ac7359e17efe0b6e5fec21de34145caef22b260e978336f325d5c84e6938"},
{file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f63d176a81555984e91f2c84c2a574a61cab7111cc907e176f0f01538e9ff6e"},
{file = "yarl-1.17.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e275792097c9f7e80741c36de3b61917aebecc08a67ae62899b074566ff8556"},
{file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:81713b70bea5c1386dc2f32a8f0dab4148a2928c7495c808c541ee0aae614d67"},
{file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:aa46dce75078fceaf7cecac5817422febb4355fbdda440db55206e3bd288cfb8"},
{file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1ce36ded585f45b1e9bb36d0ae94765c6608b43bd2e7f5f88079f7a85c61a4d3"},
{file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:2d374d70fdc36f5863b84e54775452f68639bc862918602d028f89310a034ab0"},
{file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2d9f0606baaec5dd54cb99667fcf85183a7477f3766fbddbe3f385e7fc253299"},
{file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b0341e6d9a0c0e3cdc65857ef518bb05b410dbd70d749a0d33ac0f39e81a4258"},
{file = "yarl-1.17.1-cp313-cp313-win32.whl", hash = "sha256:2e7ba4c9377e48fb7b20dedbd473cbcbc13e72e1826917c185157a137dac9df2"},
{file = "yarl-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:949681f68e0e3c25377462be4b658500e85ca24323d9619fdc41f68d46a1ffda"},
{file = "yarl-1.17.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8994b29c462de9a8fce2d591028b986dbbe1b32f3ad600b2d3e1c482c93abad6"},
{file = "yarl-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f9cbfbc5faca235fbdf531b93aa0f9f005ec7d267d9d738761a4d42b744ea159"},
{file = "yarl-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b40d1bf6e6f74f7c0a567a9e5e778bbd4699d1d3d2c0fe46f4b717eef9e96b95"},
{file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5efe0661b9fcd6246f27957f6ae1c0eb29bc60552820f01e970b4996e016004"},
{file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5c4804e4039f487e942c13381e6c27b4b4e66066d94ef1fae3f6ba8b953f383"},
{file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5d6a6c9602fd4598fa07e0389e19fe199ae96449008d8304bf5d47cb745462e"},
{file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4c9156c4d1eb490fe374fb294deeb7bc7eaccda50e23775b2354b6a6739934"},
{file = "yarl-1.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6324274b4e0e2fa1b3eccb25997b1c9ed134ff61d296448ab8269f5ac068c4c"},
{file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d8a8b74d843c2638f3864a17d97a4acda58e40d3e44b6303b8cc3d3c44ae2d29"},
{file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:7fac95714b09da9278a0b52e492466f773cfe37651cf467a83a1b659be24bf71"},
{file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c180ac742a083e109c1a18151f4dd8675f32679985a1c750d2ff806796165b55"},
{file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:578d00c9b7fccfa1745a44f4eddfdc99d723d157dad26764538fbdda37209857"},
{file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:1a3b91c44efa29e6c8ef8a9a2b583347998e2ba52c5d8280dbd5919c02dfc3b5"},
{file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a7ac5b4984c468ce4f4a553df281450df0a34aefae02e58d77a0847be8d1e11f"},
{file = "yarl-1.17.1-cp39-cp39-win32.whl", hash = "sha256:7294e38f9aa2e9f05f765b28ffdc5d81378508ce6dadbe93f6d464a8c9594473"},
{file = "yarl-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:eb6dce402734575e1a8cc0bb1509afca508a400a57ce13d306ea2c663bad1138"},
{file = "yarl-1.17.1-py3-none-any.whl", hash = "sha256:f1790a4b1e8e8e028c391175433b9c8122c39b46e1663228158e61e6f915bf06"},
{file = "yarl-1.17.1.tar.gz", hash = "sha256:067a63fcfda82da6b198fa73079b1ca40b7c9b7994995b6ee38acda728b64d47"},
]
[package.dependencies]
@ -6518,4 +6534,4 @@ testing = ["coverage[toml]", "zope.event", "zope.testing"]
[metadata]
lock-version = "2.0"
python-versions = "^3.11"
content-hash = "640112e60d1b7d8922042a0f07f28f7bb57f667defe3ede55e9e3dbf3aff7512"
content-hash = "2f1bfef17282836499515a115a405e410a4cda257c8525a5fd272f1f5e591230"

3
pyproject.toml

@ -158,6 +158,8 @@ tqdm = "4.66.4"
elasticsearch7 = "7.17.9"
elasticsearch8 = "8.13.2"
polib = "^1.2.0"
azure-identity = "1.13.0"
azure-keyvault-secrets = "4.9.0"
# psycopg2 = "2.9.6"
psycopg2-binary = "2.9.6"
pycountry = "^24.6.1"
@ -176,7 +178,6 @@ optional = true
[tool.poetry.group.xpack.dependencies]
qingcloud-sdk = "1.2.15"
azure-mgmt-subscription = "3.1.1"
azure-identity = "1.13.0"
azure-mgmt-compute = "30.0.0"
azure-mgmt-network = "23.1.0"
google-cloud-compute = "1.15.0"

Loading…
Cancel
Save