From bb52765f5141f367c923655a673a4fb02dbcbda2 Mon Sep 17 00:00:00 2001 From: Ken Sternberg <133134217+kensternberg-authentik@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:24:59 -0800 Subject: [PATCH 01/47] web: refactor sidebar capabilities for categorical subsections (#7482) * web: break circular dependency between AKElement & Interface. This commit changes the way the root node of the web application shell is discovered by child components, such that the base class shared by both no longer results in a circular dependency between the two models. I've run this in isolation and have seen no failures of discovery; the identity token exists as soon as the Interface is constructed and is found by every item on the page. * web: fix broken typescript references This built... and then it didn't? Anyway, the current fix is to provide type information the AkInterface for the data that consumers require. * web: rollback dependabot's upgrade of context The most frustrating part of this is that I RAN THIS, dammit, with the updated context and the current Wizard, and it finished the End-to-End tests without complaint. * Due for amendment * Revert "Due for amendment" This reverts commit 829ad5d3f214fa163958593636b28300d010da42. * web: refactor sidebar capabilities for categorical subsections The project "Change Admin UI lists to have sublists per type" requires some initial changes to the UI to facilitate this request. The AdminSidebar is the principle target of this project, and it is embedded in the AdminInterface. To facilitate editing the AdminSidebar as an independent entity, AdminInterface has been moved into its own folder and the AdminSidebar extracted as a standalone Web Component. This removes, oh, about half the code from AdminInterface. A little cleanup with `classMap` was also committed. The rollup config was adjusted to find the new AdminInterface location. The Sidebar uses the global `config: Config` object to check for Enterprise capabilities. Rather than plumb all the way down through the Interface => AdminInterface -> AdminSidebar, I chose to make provide an alternative way of reaching the `config` object, as a *context*. Other configuration objects (Me, UiConfig, Tenant) interfaces will be contextualized as demand warrants. Demand will warrant. Just not yet. 1 The Sidebar has been refactored only slightly; the renderers are entirely the same as they were prior to extraction. What has been changed is the source of information: when we retrieve the current version we story *only* the information, and use type information to ensure that the version we store is the version we care about. The same is true of `impersonation`; we care only about the name of the person being impersonated being present, so we don't store anything else. Fetches have been moved from `firstUpdated` to the constructor. No reason to have the sidebar render twice if the network returns before the render is scheduled. Because the path used to identify the user being impersonated has changed, the `str()` references in the XLIFF files had to be adjusted. **This change is to a variable only and does not require translation.** --- 1 The code is littered with checks to `me()?`, `uiConfig?`, `config?`, etc. In the *context* of being logged in as an administrator those should never be in doubt. I intend to make our interfaces not have any doubt. * Function to help generate sizing solutions across Javascript and CSS. * web: refactor sidebar capabilities for categorical subsections Move open/close logic into the ak-admin-sidebar itself. This commit removes the responsibility for opening/closing the sidebar from the interface parent code and places it inside the sidebar entirely. Since the Django invocation passes none of the properties ak-interface-admin is capable of receiving, this seems like a safe operation. The sidebar now assumes the responsibility for hooking up the window event listeners for open/close and resize. On connection to the DOM, and on resize, the sidebar checks to see if the viewport width meets the criteria for a behavioral change (slide-overlay vs slide-push), and on slide-push automatically opens the sidebar on the assumption that there's plenty of room. In order to support more dynamic styling going forward, I've substituted the 1280px with 80rem, which is the same, but allows for some better styling if someone with older eyes needs to "zoom in" on the whole thing with a larger font size. The hide/show code involves "reaching up" to touch the host's classList. There's a comment indicating that this is a slightly fragile thing to do, but in a well-known way. --- web/rollup.config.mjs | 2 +- web/src/admin/AdminInterface.ts | 296 ------------------ .../admin/AdminInterface/AdminInterface.ts | 160 ++++++++++ web/src/admin/AdminInterface/AdminSidebar.ts | 214 +++++++++++++ web/src/admin/AdminInterface/index.ts | 5 + web/src/common/styles/authentik.css | 3 + web/src/elements/AuthentikContexts.ts | 7 + web/src/elements/Base.ts | 19 +- web/src/elements/sidebar/SidebarItem.ts | 111 ++++--- web/src/elements/utils/getRootStyle.ts | 5 + web/xliff/de.xlf | 4 +- web/xliff/en.xlf | 4 +- web/xliff/es.xlf | 4 +- web/xliff/fr.xlf | 4 +- web/xliff/nl.xlf | 4 +- web/xliff/pl.xlf | 4 +- web/xliff/pseudo-LOCALE.xlf | 4 +- web/xliff/tr.xlf | 4 +- web/xliff/zh-Hans.xlf | 4 +- web/xliff/zh-Hant.xlf | 4 +- web/xliff/zh_CN.xlf | 4 +- web/xliff/zh_TW.xlf | 4 +- 22 files changed, 511 insertions(+), 359 deletions(-) delete mode 100644 web/src/admin/AdminInterface.ts create mode 100644 web/src/admin/AdminInterface/AdminInterface.ts create mode 100644 web/src/admin/AdminInterface/AdminSidebar.ts create mode 100644 web/src/admin/AdminInterface/index.ts create mode 100644 web/src/elements/AuthentikContexts.ts create mode 100644 web/src/elements/utils/getRootStyle.ts diff --git a/web/rollup.config.mjs b/web/rollup.config.mjs index db9caf6ee..49825a29d 100644 --- a/web/rollup.config.mjs +++ b/web/rollup.config.mjs @@ -148,7 +148,7 @@ export default [ }, // Admin interface { - input: "./src/admin/AdminInterface.ts", + input: "./src/admin/AdminInterface/AdminInterface.ts", output: [ { format: "es", diff --git a/web/src/admin/AdminInterface.ts b/web/src/admin/AdminInterface.ts deleted file mode 100644 index e59793706..000000000 --- a/web/src/admin/AdminInterface.ts +++ /dev/null @@ -1,296 +0,0 @@ -import { ROUTES } from "@goauthentik/admin/Routes"; -import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; -import { - EVENT_API_DRAWER_TOGGLE, - EVENT_NOTIFICATION_DRAWER_TOGGLE, - EVENT_SIDEBAR_TOGGLE, - VERSION, -} from "@goauthentik/common/constants"; -import { configureSentry } from "@goauthentik/common/sentry"; -import { me } from "@goauthentik/common/users"; -import { WebsocketClient } from "@goauthentik/common/ws"; -import { Interface } from "@goauthentik/elements/Base"; -import "@goauthentik/elements/ak-locale-context"; -import "@goauthentik/elements/enterprise/EnterpriseStatusBanner"; -import "@goauthentik/elements/messages/MessageContainer"; -import "@goauthentik/elements/messages/MessageContainer"; -import "@goauthentik/elements/notifications/APIDrawer"; -import "@goauthentik/elements/notifications/NotificationDrawer"; -import { ID_REGEX, SLUG_REGEX, UUID_REGEX } from "@goauthentik/elements/router/Route"; -import { getURLParam, updateURLParams } from "@goauthentik/elements/router/RouteMatch"; -import "@goauthentik/elements/router/RouterOutlet"; -import "@goauthentik/elements/sidebar/Sidebar"; -import "@goauthentik/elements/sidebar/SidebarItem"; -import { spread } from "@open-wc/lit-helpers"; - -import { msg, str } from "@lit/localize"; -import { CSSResult, TemplateResult, css, html, nothing } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; -import { map } from "lit/directives/map.js"; - -import PFButton from "@patternfly/patternfly/components/Button/button.css"; -import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css"; -import PFPage from "@patternfly/patternfly/components/Page/page.css"; -import PFBase from "@patternfly/patternfly/patternfly-base.css"; - -import { - AdminApi, - CapabilitiesEnum, - CoreApi, - SessionUser, - UiThemeEnum, - Version, -} from "@goauthentik/api"; - -@customElement("ak-interface-admin") -export class AdminInterface extends Interface { - @property({ type: Boolean }) - sidebarOpen = true; - - @property({ type: Boolean }) - notificationDrawerOpen = getURLParam("notificationDrawerOpen", false); - - @property({ type: Boolean }) - apiDrawerOpen = getURLParam("apiDrawerOpen", false); - - ws: WebsocketClient; - - @state() - version?: Version; - - @state() - user?: SessionUser; - - static get styles(): CSSResult[] { - return [ - PFBase, - PFPage, - PFButton, - PFDrawer, - css` - .pf-c-page__main, - .pf-c-drawer__content, - .pf-c-page__drawer { - z-index: auto !important; - background-color: transparent; - } - .display-none { - display: none; - } - .pf-c-page { - background-color: var(--pf-c-page--BackgroundColor) !important; - } - /* Global page background colour */ - :host([theme="dark"]) .pf-c-page { - --pf-c-page--BackgroundColor: var(--ak-dark-background); - } - `, - ]; - } - - constructor() { - super(); - this.ws = new WebsocketClient(); - this.sidebarOpen = window.innerWidth >= 1280; - window.addEventListener("resize", () => { - this.sidebarOpen = window.innerWidth >= 1280; - }); - window.addEventListener(EVENT_SIDEBAR_TOGGLE, () => { - this.sidebarOpen = !this.sidebarOpen; - }); - window.addEventListener(EVENT_NOTIFICATION_DRAWER_TOGGLE, () => { - this.notificationDrawerOpen = !this.notificationDrawerOpen; - updateURLParams({ - notificationDrawerOpen: this.notificationDrawerOpen, - }); - }); - window.addEventListener(EVENT_API_DRAWER_TOGGLE, () => { - this.apiDrawerOpen = !this.apiDrawerOpen; - updateURLParams({ - apiDrawerOpen: this.apiDrawerOpen, - }); - }); - } - - async firstUpdated(): Promise { - configureSentry(true); - this.version = await new AdminApi(DEFAULT_CONFIG).adminVersionRetrieve(); - this.user = await me(); - const canAccessAdmin = - this.user.user.isSuperuser || - // TODO: somehow add `access_admin_interface` to the API schema - this.user.user.systemPermissions.includes("access_admin_interface"); - if (!canAccessAdmin && this.user.user.pk > 0) { - window.location.assign("/if/user/"); - } - } - - render(): TemplateResult { - return html` -
- - ${this.renderSidebarItems()} - -
-
-
-
-
-
- - -
-
-
- - -
-
-
`; - } - - renderSidebarItems(): TemplateResult { - // The second attribute type is of string[] to help with the 'activeWhen' control, which was - // commonplace and singular enough to merit its own handler. - type SidebarEntry = [ - path: string | null, - label: string, - attributes?: Record | string[] | null, // eslint-disable-line - children?: SidebarEntry[], - ]; - - // prettier-ignore - const sidebarContent: SidebarEntry[] = [ - ["/if/user/", msg("User interface"), { "?isAbsoluteLink": true, "?highlight": true }], - [null, msg("Dashboards"), { "?expanded": true }, [ - ["/administration/overview", msg("Overview")], - ["/administration/dashboard/users", msg("User Statistics")], - ["/administration/system-tasks", msg("System Tasks")]]], - [null, msg("Applications"), null, [ - ["/core/providers", msg("Providers"), [`^/core/providers/(?${ID_REGEX})$`]], - ["/core/applications", msg("Applications"), [`^/core/applications/(?${SLUG_REGEX})$`]], - ["/outpost/outposts", msg("Outposts")]]], - [null, msg("Events"), null, [ - ["/events/log", msg("Logs"), [`^/events/log/(?${UUID_REGEX})$`]], - ["/events/rules", msg("Notification Rules")], - ["/events/transports", msg("Notification Transports")]]], - [null, msg("Customisation"), null, [ - ["/policy/policies", msg("Policies")], - ["/core/property-mappings", msg("Property Mappings")], - ["/blueprints/instances", msg("Blueprints")], - ["/policy/reputation", msg("Reputation scores")]]], - [null, msg("Flows and Stages"), null, [ - ["/flow/flows", msg("Flows"), [`^/flow/flows/(?${SLUG_REGEX})$`]], - ["/flow/stages", msg("Stages")], - ["/flow/stages/prompts", msg("Prompts")]]], - [null, msg("Directory"), null, [ - ["/identity/users", msg("Users"), [`^/identity/users/(?${ID_REGEX})$`]], - ["/identity/groups", msg("Groups"), [`^/identity/groups/(?${UUID_REGEX})$`]], - ["/identity/roles", msg("Roles"), [`^/identity/roles/(?${UUID_REGEX})$`]], - ["/core/sources", msg("Federation and Social login"), [`^/core/sources/(?${SLUG_REGEX})$`]], - ["/core/tokens", msg("Tokens and App passwords")], - ["/flow/stages/invitations", msg("Invitations")]]], - [null, msg("System"), null, [ - ["/core/tenants", msg("Tenants")], - ["/crypto/certificates", msg("Certificates")], - ["/outpost/integrations", msg("Outpost Integrations")]]] - ]; - - // Typescript requires the type here to correctly type the recursive path - type SidebarRenderer = (_: SidebarEntry) => TemplateResult; - - const renderOneSidebarItem: SidebarRenderer = ([path, label, attributes, children]) => { - const properties = Array.isArray(attributes) - ? { ".activeWhen": attributes } - : attributes ?? {}; - if (path) { - properties["path"] = path; - } - return html` - ${label ? html`${label}` : nothing} - ${map(children, renderOneSidebarItem)} - `; - }; - - // prettier-ignore - return html` - ${this.renderNewVersionMessage()} - ${this.renderImpersonationMessage()} - ${map(sidebarContent, renderOneSidebarItem)} - ${this.renderEnterpriseMessage()} - `; - } - - renderNewVersionMessage() { - return this.version && this.version.versionCurrent !== VERSION - ? html` - - ${msg("A newer version of the frontend is available.")} - - ` - : nothing; - } - - renderImpersonationMessage() { - return this.user?.original - ? html` { - new CoreApi(DEFAULT_CONFIG).coreUsersImpersonateEndRetrieve().then(() => { - window.location.reload(); - }); - }} - > - ${msg( - str`You're currently impersonating ${this.user.user.username}. Click to stop.`, - )} - ` - : nothing; - } - - renderEnterpriseMessage() { - return this.config?.capabilities.includes(CapabilitiesEnum.IsEnterprise) - ? html` - - ${msg("Enterprise")} - - ${msg("Licenses")} - - - ` - : nothing; - } -} diff --git a/web/src/admin/AdminInterface/AdminInterface.ts b/web/src/admin/AdminInterface/AdminInterface.ts new file mode 100644 index 000000000..834c98f37 --- /dev/null +++ b/web/src/admin/AdminInterface/AdminInterface.ts @@ -0,0 +1,160 @@ +import { ROUTES } from "@goauthentik/admin/Routes"; +import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; +import { + EVENT_API_DRAWER_TOGGLE, + EVENT_NOTIFICATION_DRAWER_TOGGLE, +} from "@goauthentik/common/constants"; +import { configureSentry } from "@goauthentik/common/sentry"; +import { me } from "@goauthentik/common/users"; +import { WebsocketClient } from "@goauthentik/common/ws"; +import { Interface } from "@goauthentik/elements/Base"; +import "@goauthentik/elements/ak-locale-context"; +import "@goauthentik/elements/enterprise/EnterpriseStatusBanner"; +import "@goauthentik/elements/messages/MessageContainer"; +import "@goauthentik/elements/messages/MessageContainer"; +import "@goauthentik/elements/notifications/APIDrawer"; +import "@goauthentik/elements/notifications/NotificationDrawer"; +import { getURLParam, updateURLParams } from "@goauthentik/elements/router/RouteMatch"; +import "@goauthentik/elements/router/RouterOutlet"; +import "@goauthentik/elements/sidebar/Sidebar"; +import "@goauthentik/elements/sidebar/SidebarItem"; + +import { CSSResult, TemplateResult, css, html } from "lit"; +import { customElement, property, state } from "lit/decorators.js"; +import { classMap } from "lit/directives/class-map.js"; + +import PFButton from "@patternfly/patternfly/components/Button/button.css"; +import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css"; +import PFPage from "@patternfly/patternfly/components/Page/page.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; + +import { AdminApi, SessionUser, UiThemeEnum, Version } from "@goauthentik/api"; + +import "./AdminSidebar"; + +@customElement("ak-interface-admin") +export class AdminInterface extends Interface { + @property({ type: Boolean }) + notificationDrawerOpen = getURLParam("notificationDrawerOpen", false); + + @property({ type: Boolean }) + apiDrawerOpen = getURLParam("apiDrawerOpen", false); + + ws: WebsocketClient; + + @state() + version?: Version; + + @state() + user?: SessionUser; + + static get styles(): CSSResult[] { + return [ + PFBase, + PFPage, + PFButton, + PFDrawer, + css` + .pf-c-page__main, + .pf-c-drawer__content, + .pf-c-page__drawer { + z-index: auto !important; + background-color: transparent; + } + .display-none { + display: none; + } + .pf-c-page { + background-color: var(--pf-c-page--BackgroundColor) !important; + } + /* Global page background colour */ + :host([theme="dark"]) .pf-c-page { + --pf-c-page--BackgroundColor: var(--ak-dark-background); + } + `, + ]; + } + + constructor() { + super(); + this.ws = new WebsocketClient(); + window.addEventListener(EVENT_NOTIFICATION_DRAWER_TOGGLE, () => { + this.notificationDrawerOpen = !this.notificationDrawerOpen; + updateURLParams({ + notificationDrawerOpen: this.notificationDrawerOpen, + }); + }); + window.addEventListener(EVENT_API_DRAWER_TOGGLE, () => { + this.apiDrawerOpen = !this.apiDrawerOpen; + updateURLParams({ + apiDrawerOpen: this.apiDrawerOpen, + }); + }); + } + + async firstUpdated(): Promise { + configureSentry(true); + this.version = await new AdminApi(DEFAULT_CONFIG).adminVersionRetrieve(); + this.user = await me(); + const canAccessAdmin = + this.user.user.isSuperuser || + // TODO: somehow add `access_admin_interface` to the API schema + this.user.user.systemPermissions.includes("access_admin_interface"); + if (!canAccessAdmin && this.user.user.pk > 0) { + window.location.assign("/if/user/"); + } + } + + render(): TemplateResult { + const sidebarClasses = { + "pf-m-light": this.activeTheme === UiThemeEnum.Light, + }; + + const drawerOpen = this.notificationDrawerOpen || this.apiDrawerOpen; + const drawerClasses = { + "pf-m-expanded": drawerOpen, + "pf-m-collapsed": !drawerOpen, + }; + + return html` +
+ +
+
+
+
+
+
+ + +
+
+
+ + +
+
+
`; + } +} diff --git a/web/src/admin/AdminInterface/AdminSidebar.ts b/web/src/admin/AdminInterface/AdminSidebar.ts new file mode 100644 index 000000000..2f973ca7e --- /dev/null +++ b/web/src/admin/AdminInterface/AdminSidebar.ts @@ -0,0 +1,214 @@ +import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; +import { EVENT_SIDEBAR_TOGGLE, VERSION } from "@goauthentik/common/constants"; +import { me } from "@goauthentik/common/users"; +import { authentikConfigContext } from "@goauthentik/elements/AuthentikContexts"; +import { AKElement } from "@goauthentik/elements/Base"; +import { ID_REGEX, SLUG_REGEX, UUID_REGEX } from "@goauthentik/elements/router/Route"; +import { getRootStyle } from "@goauthentik/elements/utils/getRootStyle"; +import { spread } from "@open-wc/lit-helpers"; + +import { consume } from "@lit-labs/context"; +import { msg, str } from "@lit/localize"; +import { TemplateResult, html, nothing } from "lit"; +import { customElement, property, state } from "lit/decorators.js"; +import { map } from "lit/directives/map.js"; + +import { AdminApi, CapabilitiesEnum, CoreApi, UiThemeEnum, Version } from "@goauthentik/api"; +import type { Config, SessionUser, UserSelf } from "@goauthentik/api"; + +@customElement("ak-admin-sidebar") +export class AkAdminSidebar extends AKElement { + @property({ type: Boolean, reflect: true }) + open = true; + + @state() + version: Version["versionCurrent"] | null = null; + + @state() + impersonation: UserSelf["username"] | null = null; + + @consume({ context: authentikConfigContext }) + public config!: Config; + + constructor() { + super(); + new AdminApi(DEFAULT_CONFIG).adminVersionRetrieve().then((version) => { + this.version = version.versionCurrent; + }); + me().then((user: SessionUser) => { + this.impersonation = user.original ? user.user.username : null; + }); + this.toggleOpen = this.toggleOpen.bind(this); + this.checkWidth = this.checkWidth.bind(this); + } + + // This has to be a bound method so the event listener can be removed on disconnection as + // needed. + toggleOpen() { + this.open = !this.open; + } + + checkWidth() { + // This works just fine, but it assumes that the `--ak-sidebar--minimum-auto-width` is in + // REMs. If that changes, this code will have to be adjusted as well. + const minWidth = + parseFloat(getRootStyle("--ak-sidebar--minimum-auto-width")) * + parseFloat(getRootStyle("font-size")); + this.open = window.innerWidth >= minWidth; + } + + connectedCallback() { + super.connectedCallback(); + window.addEventListener(EVENT_SIDEBAR_TOGGLE, this.toggleOpen); + window.addEventListener("resize", this.checkWidth); + // After connecting to the DOM, we can now perform this check to see if the sidebar should + // be open by default. + this.checkWidth(); + } + + // The symmetry (☟, ☝) here is critical in that you want to start adding these handlers after + // connection, and removing them before disconnection. + + disconnectedCallback() { + window.removeEventListener(EVENT_SIDEBAR_TOGGLE, this.toggleOpen); + window.removeEventListener("resize", this.checkWidth); + super.disconnectedCallback(); + } + + render() { + return html` + + ${this.renderSidebarItems()} + + `; + } + + updated() { + // This is permissible as`:host.classList` is not one of the properties Lit uses as a + // scheduling trigger. This sort of shenanigans can trigger an loop, in that it will trigger + // a browser reflow, which may trigger some other styling the application is monitoring, + // triggering a re-render which triggers a browser reflow, ad infinitum. But we've been + // living with that since jQuery, and it's both well-known and fortunately rare. + this.classList.remove("pf-m-expanded", "pf-m-collapsed"); + this.classList.add(this.open ? "pf-m-expanded" : "pf-m-collapsed"); + } + + renderSidebarItems(): TemplateResult { + // The second attribute type is of string[] to help with the 'activeWhen' control, which was + // commonplace and singular enough to merit its own handler. + type SidebarEntry = [ + path: string | null, + label: string, + attributes?: Record | string[] | null, // eslint-disable-line + children?: SidebarEntry[], + ]; + + // prettier-ignore + const sidebarContent: SidebarEntry[] = [ + ["/if/user/", msg("User interface"), { "?isAbsoluteLink": true, "?highlight": true }], + [null, msg("Dashboards"), { "?expanded": true }, [ + ["/administration/overview", msg("Overview")], + ["/administration/dashboard/users", msg("User Statistics")], + ["/administration/system-tasks", msg("System Tasks")]]], + [null, msg("Applications"), null, [ + ["/core/applications", msg("Applications"), [`^/core/applications/(?${SLUG_REGEX})$`]], + ["/core/providers", msg("Providers"), [`^/core/providers/(?${ID_REGEX})$`]], + ["/outpost/outposts", msg("Outposts")]]], + [null, msg("Events"), null, [ + ["/events/log", msg("Logs"), [`^/events/log/(?${UUID_REGEX})$`]], + ["/events/rules", msg("Notification Rules")], + ["/events/transports", msg("Notification Transports")]]], + [null, msg("Customisation"), null, [ + ["/policy/policies", msg("Policies")], + ["/core/property-mappings", msg("Property Mappings")], + ["/blueprints/instances", msg("Blueprints")], + ["/policy/reputation", msg("Reputation scores")]]], + [null, msg("Flows and Stages"), null, [ + ["/flow/flows", msg("Flows"), [`^/flow/flows/(?${SLUG_REGEX})$`]], + ["/flow/stages", msg("Stages")], + ["/flow/stages/prompts", msg("Prompts")]]], + [null, msg("Directory"), null, [ + ["/identity/users", msg("Users"), [`^/identity/users/(?${ID_REGEX})$`]], + ["/identity/groups", msg("Groups"), [`^/identity/groups/(?${UUID_REGEX})$`]], + ["/identity/roles", msg("Roles"), [`^/identity/roles/(?${UUID_REGEX})$`]], + ["/core/sources", msg("Federation and Social login"), [`^/core/sources/(?${SLUG_REGEX})$`]], + ["/core/tokens", msg("Tokens and App passwords")], + ["/flow/stages/invitations", msg("Invitations")]]], + [null, msg("System"), null, [ + ["/core/tenants", msg("Tenants")], + ["/crypto/certificates", msg("Certificates")], + ["/outpost/integrations", msg("Outpost Integrations")]]] + ]; + + // Typescript requires the type here to correctly type the recursive path + type SidebarRenderer = (_: SidebarEntry) => TemplateResult; + + const renderOneSidebarItem: SidebarRenderer = ([path, label, attributes, children]) => { + const properties = Array.isArray(attributes) + ? { ".activeWhen": attributes } + : attributes ?? {}; + if (path) { + properties["path"] = path; + } + return html` + ${label ? html`${label}` : nothing} + ${map(children, renderOneSidebarItem)} + `; + }; + + // prettier-ignore + return html` + ${this.renderNewVersionMessage()} + ${this.renderImpersonationMessage()} + ${map(sidebarContent, renderOneSidebarItem)} + ${this.renderEnterpriseMessage()} + `; + } + + renderNewVersionMessage() { + return this.version && this.version !== VERSION + ? html` + + ${msg("A newer version of the frontend is available.")} + + ` + : nothing; + } + + renderImpersonationMessage() { + const reload = () => + new CoreApi(DEFAULT_CONFIG).coreUsersImpersonateEndRetrieve().then(() => { + window.location.reload(); + }); + + return this.impersonation + ? html` + ${msg( + str`You're currently impersonating ${this.impersonation}. Click to stop.`, + )} + ` + : nothing; + } + + renderEnterpriseMessage() { + return this.config?.capabilities.includes(CapabilitiesEnum.IsEnterprise) + ? html` + + ${msg("Enterprise")} + + ${msg("Licenses")} + + + ` + : nothing; + } +} diff --git a/web/src/admin/AdminInterface/index.ts b/web/src/admin/AdminInterface/index.ts new file mode 100644 index 000000000..570b87e3b --- /dev/null +++ b/web/src/admin/AdminInterface/index.ts @@ -0,0 +1,5 @@ +import { AdminInterface } from "./AdminInterface"; +import "./AdminInterface"; + +export { AdminInterface }; +export default AdminInterface; diff --git a/web/src/common/styles/authentik.css b/web/src/common/styles/authentik.css index a46ec8eb1..6a0000e4e 100644 --- a/web/src/common/styles/authentik.css +++ b/web/src/common/styles/authentik.css @@ -12,6 +12,9 @@ /* PatternFly likes to override global variables for some reason */ --ak-global--Color--100: var(--pf-global--Color--100); + + /* Minimum width after which the sidebar becomes automatic */ + --ak-sidebar--minimum-auto-width: 80rem; } ::-webkit-scrollbar { diff --git a/web/src/elements/AuthentikContexts.ts b/web/src/elements/AuthentikContexts.ts new file mode 100644 index 000000000..97a89a881 --- /dev/null +++ b/web/src/elements/AuthentikContexts.ts @@ -0,0 +1,7 @@ +import { createContext } from "@lit-labs/context"; + +import { type Config } from "@goauthentik/api"; + +export const authentikConfigContext = createContext(Symbol("authentik-config-context")); + +export default authentikConfigContext; diff --git a/web/src/elements/Base.ts b/web/src/elements/Base.ts index 7b2420454..46c983aad 100644 --- a/web/src/elements/Base.ts +++ b/web/src/elements/Base.ts @@ -2,7 +2,9 @@ import { config, tenant } from "@goauthentik/common/api/config"; import { EVENT_THEME_CHANGE } from "@goauthentik/common/constants"; import { UIConfig, uiConfig } from "@goauthentik/common/ui/config"; import { adaptCSS } from "@goauthentik/common/utils"; +import { authentikConfigContext } from "@goauthentik/elements/AuthentikContexts"; +import { ContextProvider } from "@lit-labs/context"; import { localized } from "@lit/localize"; import { CSSResult, LitElement } from "lit"; import { state } from "lit/decorators.js"; @@ -181,8 +183,23 @@ export class Interface extends AKElement implements AkInterface { @state() uiConfig?: UIConfig; + _configContext = new ContextProvider(this, { + context: authentikConfigContext, + initialValue: undefined, + }); + + _config?: Config; + @state() - config?: Config; + set config(c: Config) { + this._config = c; + this._configContext.setValue(c); + this.requestUpdate(); + } + + get config(): Config | undefined { + return this._config; + } constructor() { super(); diff --git a/web/src/elements/sidebar/SidebarItem.ts b/web/src/elements/sidebar/SidebarItem.ts index 9d5374736..26cdb975e 100644 --- a/web/src/elements/sidebar/SidebarItem.ts +++ b/web/src/elements/sidebar/SidebarItem.ts @@ -144,47 +144,84 @@ export class SidebarItem extends AKElement { return this.renderInner(); } - renderInner(): TemplateResult { - if (this.childItems.length > 0) { - return html`
  • + -
    -
      - -
    -
    -
  • `; + + +
    +
      + +
    +
    + `; + } + + renderWithPathAndChildren() { + return html`
  • + + +
    +
      + +
    +
    +
  • `; + } + + renderWithPath() { + return html` + + + + `; + } + + renderWithLabel() { + html` + + + + `; + } + + renderInner() { + if (this.childItems.length > 0) { + return this.path ? this.renderWithPathAndChildren() : this.renderWithChildren(); } + return html`
  • - ${this.path - ? html` - - - - ` - : html` - - - - `} + ${this.path ? this.renderWithPath() : this.renderWithLabel()}
  • `; } } diff --git a/web/src/elements/utils/getRootStyle.ts b/web/src/elements/utils/getRootStyle.ts new file mode 100644 index 000000000..f91d63e5f --- /dev/null +++ b/web/src/elements/utils/getRootStyle.ts @@ -0,0 +1,5 @@ +export function getRootStyle(selector: string, element: HTMLElement = document.documentElement) { + return getComputedStyle(element, null).getPropertyValue(selector); +} + +export default getRootStyle; diff --git a/web/xliff/de.xlf b/web/xliff/de.xlf index 38ac63d46..cacf5580c 100644 --- a/web/xliff/de.xlf +++ b/web/xliff/de.xlf @@ -4989,9 +4989,9 @@ Bindings to groups/users are checked against the user of the event. Eine neuere Version des Frontends ist verfügbar. - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. Sie geben sich gerade als - aus. Klicken Sie zum Stoppen. + aus. Klicken Sie zum Stoppen. User interface diff --git a/web/xliff/en.xlf b/web/xliff/en.xlf index fd6274b44..11d8ee1a5 100644 --- a/web/xliff/en.xlf +++ b/web/xliff/en.xlf @@ -5248,9 +5248,9 @@ Bindings to groups/users are checked against the user of the event. A newer version of the frontend is available. - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. You're currently impersonating - . Click to stop. + . Click to stop. User interface diff --git a/web/xliff/es.xlf b/web/xliff/es.xlf index e6f6fc899..b5708c7ac 100644 --- a/web/xliff/es.xlf +++ b/web/xliff/es.xlf @@ -4914,9 +4914,9 @@ Bindings to groups/users are checked against the user of the event. Está disponible una versión más reciente de la interfaz. - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. Estás suplantando a - . Haga clic para parar. + . Haga clic para parar. User interface diff --git a/web/xliff/fr.xlf b/web/xliff/fr.xlf index 4343e0ab3..eb5cbb2f1 100644 --- a/web/xliff/fr.xlf +++ b/web/xliff/fr.xlf @@ -6558,9 +6558,9 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. Vous vous faites actuellement passer pour - . Cliquer pour arrêter. + . Cliquer pour arrêter. diff --git a/web/xliff/nl.xlf b/web/xliff/nl.xlf index c6ac85543..f2ceeb89c 100644 --- a/web/xliff/nl.xlf +++ b/web/xliff/nl.xlf @@ -6797,8 +6797,8 @@ Bindingen naar groepen/gebruikers worden gecontroleerd tegen de gebruiker van de - You're currently impersonating . Click to stop. - Je doet momenteel alsof je bent. Klik om te stoppen. + You're currently impersonating . Click to stop. + Je doet momenteel alsof je bent. Klik om te stoppen. diff --git a/web/xliff/pl.xlf b/web/xliff/pl.xlf index d50ab62c2..0c8118ae8 100644 --- a/web/xliff/pl.xlf +++ b/web/xliff/pl.xlf @@ -5104,9 +5104,9 @@ Bindings to groups/users are checked against the user of the event. Dostępna jest nowsza wersja frontendu. - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. Obecnie podszywasz się pod - . Kliknij, aby zatrzymać. + . Kliknij, aby zatrzymać. User interface diff --git a/web/xliff/pseudo-LOCALE.xlf b/web/xliff/pseudo-LOCALE.xlf index bd038e1be..78b560613 100644 --- a/web/xliff/pseudo-LOCALE.xlf +++ b/web/xliff/pseudo-LOCALE.xlf @@ -6515,8 +6515,8 @@ Bindings to groups/users are checked against the user of the event. - You're currently impersonating . Click to stop. - Ŷōũ'ŕē ćũŕŕēńţĺŷ ĩmƥēŕśōńàţĩńĝ . Ćĺĩćķ ţō śţōƥ. + You're currently impersonating . Click to stop. + Ŷōũ'ŕē ćũŕŕēńţĺŷ ĩmƥēŕśōńàţĩńĝ . Ćĺĩćķ ţō śţōƥ. diff --git a/web/xliff/tr.xlf b/web/xliff/tr.xlf index dd82e3e39..f2eb13ba5 100644 --- a/web/xliff/tr.xlf +++ b/web/xliff/tr.xlf @@ -4907,9 +4907,9 @@ Bindings to groups/users are checked against the user of the event. Ön yüzün daha yeni bir sürümü mevcuttur. - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. Şu anda - kimliğine bürünüyorsunuz. Durdurmak için tıklayın. + kimliğine bürünüyorsunuz. Durdurmak için tıklayın. User interface diff --git a/web/xliff/zh-Hans.xlf b/web/xliff/zh-Hans.xlf index aa8d0b510..f314f44a2 100644 --- a/web/xliff/zh-Hans.xlf +++ b/web/xliff/zh-Hans.xlf @@ -6560,9 +6560,9 @@ Bindings to groups/users are checked against the user of the event. - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. 您目前正在模拟 - 的身份。点击以停止。 + 的身份。点击以停止。 diff --git a/web/xliff/zh-Hant.xlf b/web/xliff/zh-Hant.xlf index b19eae4ca..e836104f2 100644 --- a/web/xliff/zh-Hant.xlf +++ b/web/xliff/zh-Hant.xlf @@ -4951,9 +4951,9 @@ Bindings to groups/users are checked against the user of the event. 有较新版本的前端可用。 - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. 你目前正在模拟 - 。单击停止。 + 。单击停止。 User interface diff --git a/web/xliff/zh_CN.xlf b/web/xliff/zh_CN.xlf index e11e7e4ad..e661cbaa4 100644 --- a/web/xliff/zh_CN.xlf +++ b/web/xliff/zh_CN.xlf @@ -6560,9 +6560,9 @@ Bindings to groups/users are checked against the user of the event. - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. 您目前正在模拟 - 的身份。点击以停止。 + 的身份。点击以停止。 diff --git a/web/xliff/zh_TW.xlf b/web/xliff/zh_TW.xlf index 2367c4581..bc39005a9 100644 --- a/web/xliff/zh_TW.xlf +++ b/web/xliff/zh_TW.xlf @@ -4950,9 +4950,9 @@ Bindings to groups/users are checked against the user of the event. 有较新版本的前端可用。 - You're currently impersonating . Click to stop. + You're currently impersonating . Click to stop. 你目前正在模拟 - 。单击停止。 + 。单击停止。 User interface From 73751e5cd950e719655a61b538b88c61a9a70856 Mon Sep 17 00:00:00 2001 From: Ken Sternberg <133134217+kensternberg-authentik@users.noreply.github.com> Date: Mon, 20 Nov 2023 11:24:48 -0800 Subject: [PATCH 02/47] web: refactor status label to separate component (#7407) * web: break circular dependency between AKElement & Interface. This commit changes the way the root node of the web application shell is discovered by child components, such that the base class shared by both no longer results in a circular dependency between the two models. I've run this in isolation and have seen no failures of discovery; the identity token exists as soon as the Interface is constructed and is found by every item on the page. * web: fix broken typescript references This built... and then it didn't? Anyway, the current fix is to provide type information the AkInterface for the data that consumers require. * A quality of life thing: `` There's an idiom throughout the UI: ``` HTML ${item.enabled ? msg("Yes") : msg("No")} ``` There are two problems with this. - Repeating the conditional multiple times is error-prone - The color scheme doesn't communicate much. There are uses for ak-label that aren't like this, but I'm focusing on this particular use case, which occurs about 20 times throughout the UI. Since it's so common, let's isolate the most common case: `` gives you the "good" status, and `` gives you the "bad" status, which is the default (no arguments to the function). There wasn't much clarity in the system for when to use orange vs red vs grey, but looking through the use cases, it became clear that Red meant fail/inaccessible, Orange meant "Warning, but not blocking," and Grey just means "info: this thing is off". So let's define that with meaning: there are three types, error, warning, and info. Which corresponds to debugging levels, but whatever, nerds grok that stuff. So that example at the top becomes `````` ... and we can now more clearly understand what that conveys. There is some heavy tension in this case: this is an easier and quicker-to-write solution to informing the user of a binary status in an iconic way, but the developer has to remember that it exists. Story provided, and changes to the existing uses of the existing idiom provided. * Added the 'compact label' story to storybook. --- .../ApplicationCheckAccessForm.ts | 6 +- web/src/admin/blueprints/BlueprintListPage.ts | 6 +- .../crypto/CertificateKeyPairListPage.ts | 12 +- web/src/admin/flows/FlowImportForm.ts | 6 +- web/src/admin/groups/GroupListPage.ts | 8 +- web/src/admin/groups/GroupViewPage.ts | 11 +- web/src/admin/groups/MemberSelectModal.ts | 6 +- web/src/admin/groups/RelatedGroupList.ts | 6 +- web/src/admin/groups/RelatedUserList.ts | 6 +- .../outposts/ServiceConnectionListPage.ts | 5 +- web/src/admin/policies/BoundPoliciesList.ts | 6 +- web/src/admin/policies/PolicyTestForm.ts | 6 +- .../providers/proxy/ProxyProviderViewPage.ts | 15 +-- web/src/admin/tenants/TenantListPage.ts | 7 +- web/src/admin/tokens/TokenListPage.ts | 6 +- web/src/admin/users/GroupSelectModal.ts | 6 +- web/src/admin/users/UserListPage.ts | 6 +- web/src/admin/users/UserViewPage.ts | 16 +-- web/src/components/ak-status-label.ts | 116 ++++++++++++++++++ .../stories/ak-status-label.stories.ts | 101 +++++++++++++++ web/src/elements/oauth/UserRefreshList.ts | 6 +- .../user-settings/tokens/UserTokenList.ts | 6 +- 22 files changed, 277 insertions(+), 92 deletions(-) create mode 100644 web/src/components/ak-status-label.ts create mode 100644 web/src/components/stories/ak-status-label.stories.ts diff --git a/web/src/admin/applications/ApplicationCheckAccessForm.ts b/web/src/admin/applications/ApplicationCheckAccessForm.ts index 59292e17d..7f1c18e17 100644 --- a/web/src/admin/applications/ApplicationCheckAccessForm.ts +++ b/web/src/admin/applications/ApplicationCheckAccessForm.ts @@ -1,5 +1,5 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import { Form } from "@goauthentik/elements/forms/Form"; import "@goauthentik/elements/forms/HorizontalFormElement"; import "@goauthentik/elements/forms/SearchSelect"; @@ -57,9 +57,7 @@ export class ApplicationCheckAccessForm extends Form<{ forUser: number }> {
    - - ${this.result?.passing ? msg("Yes") : msg("No")} - +
    diff --git a/web/src/admin/blueprints/BlueprintListPage.ts b/web/src/admin/blueprints/BlueprintListPage.ts index f038cc957..188bb4be5 100644 --- a/web/src/admin/blueprints/BlueprintListPage.ts +++ b/web/src/admin/blueprints/BlueprintListPage.ts @@ -2,7 +2,7 @@ import "@goauthentik/admin/blueprints/BlueprintForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { EVENT_REFRESH } from "@goauthentik/common/constants"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/ActionButton"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -144,9 +144,7 @@ export class BlueprintListPage extends TablePage { ${description ? html`${description}` : html``}`, html`${BlueprintStatus(item)}`, html`${item.lastApplied.toLocaleString()}`, - html` - ${item.enabled ? msg("Yes") : msg("No")} - `, + html``, html` ${msg("Update")} ${msg("Update Blueprint")} diff --git a/web/src/admin/crypto/CertificateKeyPairListPage.ts b/web/src/admin/crypto/CertificateKeyPairListPage.ts index 990f3446e..c76feff3a 100644 --- a/web/src/admin/crypto/CertificateKeyPairListPage.ts +++ b/web/src/admin/crypto/CertificateKeyPairListPage.ts @@ -2,6 +2,7 @@ import "@goauthentik/admin/crypto/CertificateGenerateForm"; import "@goauthentik/admin/crypto/CertificateKeyPairForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; +import "@goauthentik/components/ak-status-label"; import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -117,11 +118,12 @@ export class CertificateKeyPairListPage extends TablePage { return [ html`
    ${item.name}
    ${item.managed ? html`${managedSubText}` : html``}`, - html` - ${item.privateKeyAvailable - ? msg(str`Yes (${item.privateKeyType?.toUpperCase()})`) - : msg("No")} - `, + html` + `, html` ${item.certExpiry?.toLocaleString()} `, html` ${msg("Update")} diff --git a/web/src/admin/flows/FlowImportForm.ts b/web/src/admin/flows/FlowImportForm.ts index d04f0c8e9..310269ff8 100644 --- a/web/src/admin/flows/FlowImportForm.ts +++ b/web/src/admin/flows/FlowImportForm.ts @@ -1,6 +1,6 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { SentryIgnoredError } from "@goauthentik/common/errors"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import { Form } from "@goauthentik/elements/forms/Form"; import "@goauthentik/elements/forms/HorizontalFormElement"; @@ -46,9 +46,7 @@ export class FlowImportForm extends Form {
    - - ${this.result?.success ? msg("Yes") : msg("No")} - +
    diff --git a/web/src/admin/groups/GroupListPage.ts b/web/src/admin/groups/GroupListPage.ts index f634b0378..c35f17f8c 100644 --- a/web/src/admin/groups/GroupListPage.ts +++ b/web/src/admin/groups/GroupListPage.ts @@ -1,7 +1,7 @@ import "@goauthentik/admin/groups/GroupForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; import "@goauthentik/elements/forms/ModalForm"; @@ -81,10 +81,8 @@ export class GroupListPage extends TablePage { html`${item.name}`, html`${item.parentName || msg("-")}`, html`${Array.from(item.users || []).length}`, - html` - ${item.isSuperuser ? msg("Yes") : msg("No")} - `, - html` + html``, + html` ${msg("Update")} ${msg("Update Group")} diff --git a/web/src/admin/groups/GroupViewPage.ts b/web/src/admin/groups/GroupViewPage.ts index 3e6cbddcb..a2f704363 100644 --- a/web/src/admin/groups/GroupViewPage.ts +++ b/web/src/admin/groups/GroupViewPage.ts @@ -3,10 +3,10 @@ import "@goauthentik/app/admin/groups/RelatedUserList"; import "@goauthentik/app/elements/rbac/ObjectPermissionsPage"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { EVENT_REFRESH } from "@goauthentik/common/constants"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/components/events/ObjectChangelog"; import { AKElement } from "@goauthentik/elements/Base"; import "@goauthentik/elements/CodeMirror"; -import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/PageHeader"; import "@goauthentik/elements/Tabs"; import "@goauthentik/elements/buttons/ActionButton"; @@ -116,11 +116,10 @@ export class GroupViewPage extends AKElement {
    - +
    diff --git a/web/src/admin/groups/MemberSelectModal.ts b/web/src/admin/groups/MemberSelectModal.ts index 1d5a53cc7..f573644b2 100644 --- a/web/src/admin/groups/MemberSelectModal.ts +++ b/web/src/admin/groups/MemberSelectModal.ts @@ -1,7 +1,7 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; import { first } from "@goauthentik/common/utils"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import { PaginatedResponse } from "@goauthentik/elements/table/Table"; import { TableColumn } from "@goauthentik/elements/table/Table"; @@ -48,9 +48,7 @@ export class MemberSelectTable extends TableModal { return [ html`
    ${item.username}
    ${item.name}`, - html` - ${item.isActive ? msg("Yes") : msg("No")} - `, + html` `, html`${first(item.lastLogin?.toLocaleString(), msg("-"))}`, ]; } diff --git a/web/src/admin/groups/RelatedGroupList.ts b/web/src/admin/groups/RelatedGroupList.ts index d0b965648..19adf1276 100644 --- a/web/src/admin/groups/RelatedGroupList.ts +++ b/web/src/admin/groups/RelatedGroupList.ts @@ -3,7 +3,7 @@ import "@goauthentik/admin/groups/GroupForm"; import "@goauthentik/admin/users/GroupSelectModal"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; import { Form } from "@goauthentik/elements/forms/Form"; @@ -145,9 +145,7 @@ export class RelatedGroupList extends Table { return [ html`${item.name}`, html`${item.parentName || msg("-")}`, - html` - ${item.isSuperuser ? msg("Yes") : msg("No")} - `, + html``, html` ${msg("Update")} ${msg("Update Group")} diff --git a/web/src/admin/groups/RelatedUserList.ts b/web/src/admin/groups/RelatedUserList.ts index 0023c5515..2474ee2fe 100644 --- a/web/src/admin/groups/RelatedUserList.ts +++ b/web/src/admin/groups/RelatedUserList.ts @@ -8,8 +8,8 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { MessageLevel } from "@goauthentik/common/messages"; import { uiConfig } from "@goauthentik/common/ui/config"; import { first } from "@goauthentik/common/utils"; +import "@goauthentik/components/ak-status-label"; import { rootInterface } from "@goauthentik/elements/Base"; -import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/buttons/ActionButton"; import "@goauthentik/elements/buttons/Dropdown"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -195,9 +195,7 @@ export class RelatedUserList extends Table {
    ${item.username}
    ${item.name} `, - html` - ${item.isActive ? msg("Yes") : msg("No")} - `, + html``, html`${first(item.lastLogin?.toLocaleString(), msg("-"))}`, html` ${msg("Update")} diff --git a/web/src/admin/outposts/ServiceConnectionListPage.ts b/web/src/admin/outposts/ServiceConnectionListPage.ts index 49ef585a4..a212358f5 100644 --- a/web/src/admin/outposts/ServiceConnectionListPage.ts +++ b/web/src/admin/outposts/ServiceConnectionListPage.ts @@ -4,6 +4,7 @@ import "@goauthentik/admin/outposts/ServiceConnectionKubernetesForm"; import "@goauthentik/admin/outposts/ServiceConnectionWizard"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; +import "@goauthentik/components/ak-status-label"; import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -83,9 +84,7 @@ export class OutpostServiceConnectionListPage extends TablePage - ${item.local ? msg("Yes") : msg("No")} - `, + html``, html`${itemState?.healthy ? html`${ifDefined(itemState.version)}` : html`${msg("Unhealthy")}`}`, diff --git a/web/src/admin/policies/BoundPoliciesList.ts b/web/src/admin/policies/BoundPoliciesList.ts index b7470a422..c9e29bf67 100644 --- a/web/src/admin/policies/BoundPoliciesList.ts +++ b/web/src/admin/policies/BoundPoliciesList.ts @@ -4,7 +4,7 @@ import "@goauthentik/admin/policies/PolicyWizard"; import "@goauthentik/admin/users/UserForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import { PFSize } from "@goauthentik/elements/Spinner"; import "@goauthentik/elements/Tabs"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -147,9 +147,7 @@ export class BoundPoliciesList extends Table { return [ html`
    ${item.order}
    `, html`${this.getPolicyUserGroupRow(item)}`, - html` - ${item.enabled ? msg("Yes") : msg("No")} - `, + html``, html`${item.timeout}`, html` ${this.getObjectEditButton(item)} diff --git a/web/src/admin/policies/PolicyTestForm.ts b/web/src/admin/policies/PolicyTestForm.ts index aa874f37e..50771abbd 100644 --- a/web/src/admin/policies/PolicyTestForm.ts +++ b/web/src/admin/policies/PolicyTestForm.ts @@ -1,8 +1,8 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { first } from "@goauthentik/common/utils"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/CodeMirror"; import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; -import { PFColor } from "@goauthentik/elements/Label"; import { Form } from "@goauthentik/elements/forms/Form"; import "@goauthentik/elements/forms/HorizontalFormElement"; import "@goauthentik/elements/forms/SearchSelect"; @@ -58,9 +58,7 @@ export class PolicyTestForm extends Form {
    - - ${this.result?.passing ? msg("Yes") : msg("No")} - +
    diff --git a/web/src/admin/providers/proxy/ProxyProviderViewPage.ts b/web/src/admin/providers/proxy/ProxyProviderViewPage.ts index a0ce2792d..bdce04194 100644 --- a/web/src/admin/providers/proxy/ProxyProviderViewPage.ts +++ b/web/src/admin/providers/proxy/ProxyProviderViewPage.ts @@ -4,6 +4,7 @@ import "@goauthentik/app/elements/rbac/ObjectPermissionsPage"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { EVENT_REFRESH } from "@goauthentik/common/constants"; import { convertToSlug } from "@goauthentik/common/utils"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/components/events/ObjectChangelog"; import MDCaddyStandalone from "@goauthentik/docs/providers/proxy/_caddy_standalone.md"; import MDNginxIngress from "@goauthentik/docs/providers/proxy/_nginx_ingress.md"; @@ -15,7 +16,6 @@ import MDTraefikStandalone from "@goauthentik/docs/providers/proxy/_traefik_stan import MDHeaderAuthentication from "@goauthentik/docs/providers/proxy/header_authentication.md"; import { AKElement } from "@goauthentik/elements/Base"; import "@goauthentik/elements/CodeMirror"; -import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/Markdown"; import "@goauthentik/elements/Markdown"; import { Replacer } from "@goauthentik/elements/Markdown"; @@ -330,15 +330,10 @@ export class ProxyProviderViewPage extends AKElement {
    - - ${this.provider.basicAuthEnabled - ? msg("Yes") - : msg("No")} - +
    diff --git a/web/src/admin/tenants/TenantListPage.ts b/web/src/admin/tenants/TenantListPage.ts index 2edaeb2d4..1e4cd5d8a 100644 --- a/web/src/admin/tenants/TenantListPage.ts +++ b/web/src/admin/tenants/TenantListPage.ts @@ -1,7 +1,8 @@ import "@goauthentik/admin/tenants/TenantForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; import "@goauthentik/elements/forms/ModalForm"; @@ -82,9 +83,7 @@ export class TenantListPage extends TablePage { row(item: Tenant): TemplateResult[] { return [ html`${item.domain}`, - html` - ${item._default ? msg("Yes") : msg("No")} - `, + html``, html` ${msg("Update")} ${msg("Update Tenant")} diff --git a/web/src/admin/tokens/TokenListPage.ts b/web/src/admin/tokens/TokenListPage.ts index ec4d1018d..953cd17dd 100644 --- a/web/src/admin/tokens/TokenListPage.ts +++ b/web/src/admin/tokens/TokenListPage.ts @@ -2,7 +2,7 @@ import "@goauthentik/admin/tokens/TokenForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { intentToLabel } from "@goauthentik/common/labels"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/Dropdown"; import "@goauthentik/elements/buttons/TokenCopyButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; @@ -109,9 +109,7 @@ export class TokenListPage extends TablePage { ? html`${msg("Token is managed by authentik.")}` : html``}`, html`${item.userObj?.username}`, - html` - ${item.expiring ? msg("Yes") : msg("No")} - `, + html``, html`${item.expiring ? item.expires?.toLocaleString() : msg("-")}`, html`${intentToLabel(item.intent ?? IntentEnum.Api)}`, html` diff --git a/web/src/admin/users/GroupSelectModal.ts b/web/src/admin/users/GroupSelectModal.ts index 350095c9b..eac99d4ae 100644 --- a/web/src/admin/users/GroupSelectModal.ts +++ b/web/src/admin/users/GroupSelectModal.ts @@ -1,6 +1,6 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import { PaginatedResponse } from "@goauthentik/elements/table/Table"; import { TableColumn } from "@goauthentik/elements/table/Table"; @@ -54,9 +54,7 @@ export class GroupSelectModal extends TableModal { html`
    ${item.name}
    `, - html` - ${item.isSuperuser ? msg("Yes") : msg("No")} - `, + html` `, html`${(item.users || []).length}`, ]; } diff --git a/web/src/admin/users/UserListPage.ts b/web/src/admin/users/UserListPage.ts index 266ebf438..1d861b568 100644 --- a/web/src/admin/users/UserListPage.ts +++ b/web/src/admin/users/UserListPage.ts @@ -10,8 +10,8 @@ import { userTypeToLabel } from "@goauthentik/common/labels"; import { MessageLevel } from "@goauthentik/common/messages"; import { DefaultUIConfig, uiConfig } from "@goauthentik/common/ui/config"; import { first } from "@goauthentik/common/utils"; +import "@goauthentik/components/ak-status-label"; import { rootInterface } from "@goauthentik/elements/Base"; -import { PFColor } from "@goauthentik/elements/Label"; import { PFSize } from "@goauthentik/elements/Spinner"; import "@goauthentik/elements/TreeView"; import "@goauthentik/elements/buttons/ActionButton"; @@ -251,9 +251,7 @@ export class UserListPage extends TablePage {
    ${item.username}
    ${item.name === "" ? msg("") : item.name}  ${userTypeToLabel(item.type)}`, - html` - ${item.isActive ? msg("Yes") : msg("No")} - `, + html``, html`${first(item.lastLogin?.toLocaleString(), msg("-"))}`, html` ${msg("Update")} diff --git a/web/src/admin/users/UserViewPage.ts b/web/src/admin/users/UserViewPage.ts index d752f645a..25915b64a 100644 --- a/web/src/admin/users/UserViewPage.ts +++ b/web/src/admin/users/UserViewPage.ts @@ -14,11 +14,11 @@ import "@goauthentik/app/elements/rbac/ObjectPermissionsPage"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { EVENT_REFRESH } from "@goauthentik/common/constants"; import { userTypeToLabel } from "@goauthentik/common/labels"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/components/events/ObjectChangelog"; import "@goauthentik/components/events/UserEvents"; import { AKElement, rootInterface } from "@goauthentik/elements/Base"; import "@goauthentik/elements/CodeMirror"; -import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/PageHeader"; import { PFSize } from "@goauthentik/elements/Spinner"; import "@goauthentik/elements/Tabs"; @@ -185,9 +185,10 @@ export class UserViewPage extends AKElement {
    - +
    @@ -207,9 +208,10 @@ export class UserViewPage extends AKElement {
    - +
    diff --git a/web/src/components/ak-status-label.ts b/web/src/components/ak-status-label.ts new file mode 100644 index 000000000..f2ff005bf --- /dev/null +++ b/web/src/components/ak-status-label.ts @@ -0,0 +1,116 @@ +import { AKElement } from "@goauthentik/elements/Base"; + +import { msg } from "@lit/localize"; +import { css, html } from "lit"; +import { customElement, property } from "lit/decorators.js"; +import { classMap } from "lit/directives/class-map.js"; + +import PFLabel from "@patternfly/patternfly/components/Label/label.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; + +const statusNames = ["error", "warning", "info"] as const; +type StatusName = (typeof statusNames)[number]; + +const statusToDetails = new Map([ + ["error", ["pf-m-red", "fa-times"]], + ["warning", ["pf-m-orange", "fa-exclamation-triangle"]], + ["info", ["pf-m-gray", "fa-info-circle"]], +]); + +const styles = css` + :host { + --pf-c-label--m-gray--BackgroundColor: var(--pf-global--palette--black-100); + --pf-c-label--m-gray__icon--Color: var(--pf-global--primary-color--100); + --pf-c-label--m-gray__content--Color: var(--pf-global--info-color--200); + --pf-c-label--m-gray__content--before--BorderColor: var(--pf-global--palette--black-400); + --pf-c-label--m-gray__content--link--hover--before--BorderColor: var( + --pf-global--primary-color--100 + ); + --pf-c-label--m-gray__content--link--focus--before--BorderColor: var( + --pf-global--primary-color--100 + ); + } + + .pf-c-label.pf-m-gray { + --pf-c-label--BackgroundColor: var(--pf-c-label--m-gray--BackgroundColor); + --pf-c-label__icon--Color: var(--pf-c-label--m-gray__icon--Color); + --pf-c-label__content--Color: var(--pf-c-label--m-gray__content--Color); + --pf-c-label__content--before--BorderColor: var( + --pf-c-label--m-gray__content--before--BorderColor + ); + --pf-c-label__content--link--hover--before--BorderColor: var( + --pf-c-label--m-gray__content--link--hover--before--BorderColor + ); + --pf-c-label__content--link--focus--before--BorderColor: var( + --pf-c-label--m-gray__content--link--focus--before--BorderColor + ); + } +`; + +/** + * A boolean status indicator + * + * Based on the Patternfly "label" pattern, this component exists to display "Yes" or "No", but this + * is configurable. + * + * When the boolean attribute `good` is present, the background will be green and the icon will be a + * ✓. If the `good` attribute is not present, the background will be a warning color and an + * alternative symbol. Which color and symbol depends on the `type` of the negative status we want + * to show: + * + * - type="error" (default): A Red ✖ + * - type="warning" An orange ⚠ + * - type="info" A grey ⓘ + * + * By default, the messages for "good" and "other" are "Yes" and "No" respectively, but these can be + * customized with the attributes `good-label` and `bad-label`. + */ + +@customElement("ak-status-label") +export class AkStatusLabel extends AKElement { + static get styles() { + return [PFBase, PFLabel, styles]; + } + + @property({ type: Boolean }) + good = false; + + @property({ type: String, attribute: "good-label" }) + goodLabel = msg("Yes"); + + @property({ type: String, attribute: "bad-label" }) + badLabel = msg("No"); + + @property({ type: Boolean }) + compact = false; + + @property({ type: String }) + type: StatusName = "error"; + + render() { + const details = statusToDetails.get(this.type); + if (!details) { + throw new Error(`Bad status type [${this.type}] passed to ak-status-label`); + } + + const [label, color, icon] = this.good + ? [this.goodLabel, "pf-m-green", "fa-check"] + : [this.badLabel, ...details]; + + const classes = { + "pf-c-label": true, + [color]: true, + "pf-m-compact": this.compact, + }; + + return html` + + + ${label} + + `; + } +} + +export default AkStatusLabel; diff --git a/web/src/components/stories/ak-status-label.stories.ts b/web/src/components/stories/ak-status-label.stories.ts new file mode 100644 index 000000000..ab525a20e --- /dev/null +++ b/web/src/components/stories/ak-status-label.stories.ts @@ -0,0 +1,101 @@ +import "@goauthentik/elements/messages/MessageContainer"; +import { Meta } from "@storybook/web-components"; + +import { TemplateResult, html } from "lit"; + +import "../ak-status-label"; +import AkStatusLabel from "../ak-status-label"; + +const metadata: Meta = { + title: "Components / App Status Label", + component: "ak-status-label", + parameters: { + docs: { + description: { + component: "A status label display", + }, + }, + }, +}; + +export default metadata; + +const container = (testItem: TemplateResult) => + html`
    + + ${testItem} +
    `; + +export const AppIcon = () => { + // prettier-ignore + return container(html` +
    +
    Good
    + + + +
    +
    Bad (Default)
    + + + +
    +
    Programmatically Good
    + + + +
    +
    Programmatically Bad
    + + + +
    +
    Good Warning
    + + + +
    +
    Bad Warning
    + + + +
    +
    Good Info
    + + + +
    +
    Bad Info
    + + + +
    +
    Good With Alternative Message
    + + + +
    +
    Bad with Alternative Message
    + + + +
    +
    Good, Compact
    + + + +
    +
    Bad, Compact
    + + + +
    +
    + `); +}; diff --git a/web/src/elements/oauth/UserRefreshList.ts b/web/src/elements/oauth/UserRefreshList.ts index 288bf032b..2c5915f74 100644 --- a/web/src/elements/oauth/UserRefreshList.ts +++ b/web/src/elements/oauth/UserRefreshList.ts @@ -1,6 +1,6 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/forms/DeleteBulkForm"; import { PaginatedResponse } from "@goauthentik/elements/table/Table"; import { Table, TableColumn } from "@goauthentik/elements/table/Table"; @@ -85,9 +85,7 @@ export class UserOAuthRefreshList extends Table { row(item: TokenModel): TemplateResult[] { return [ html` ${item.provider?.name} `, - html` - ${item.revoked ? msg("Yes") : msg("No")} - `, + html``, html`${item.expires?.toLocaleString()}`, html`${item.scope.join(", ")}`, ]; diff --git a/web/src/user/user-settings/tokens/UserTokenList.ts b/web/src/user/user-settings/tokens/UserTokenList.ts index f32b06173..82cadeee1 100644 --- a/web/src/user/user-settings/tokens/UserTokenList.ts +++ b/web/src/user/user-settings/tokens/UserTokenList.ts @@ -2,7 +2,7 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { intentToLabel } from "@goauthentik/common/labels"; import { uiConfig } from "@goauthentik/common/ui/config"; import { me } from "@goauthentik/common/users"; -import { PFColor } from "@goauthentik/elements/Label"; +import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/Dropdown"; import "@goauthentik/elements/buttons/ModalButton"; import "@goauthentik/elements/buttons/TokenCopyButton"; @@ -97,9 +97,7 @@ export class UserTokenList extends Table {
    - - ${item.expiring ? msg("Yes") : msg("No")} - +
    From fc1a7368160135969b2bc2bad68822730f8e5ef3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:20:54 +0100 Subject: [PATCH 03/47] web: bump wdio-wait-for from 3.0.8 to 3.0.9 in /tests/wdio (#7657) Bumps [wdio-wait-for](https://github.com/webdriverio/wdio-wait-for) from 3.0.8 to 3.0.9. - [Release notes](https://github.com/webdriverio/wdio-wait-for/releases) - [Commits](https://github.com/webdriverio/wdio-wait-for/compare/3.0.8...3.0.9) --- updated-dependencies: - dependency-name: wdio-wait-for dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/wdio/package-lock.json | 8 ++++---- tests/wdio/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/wdio/package-lock.json b/tests/wdio/package-lock.json index 1ce9d60b5..e690b96b4 100644 --- a/tests/wdio/package-lock.json +++ b/tests/wdio/package-lock.json @@ -20,7 +20,7 @@ "prettier": "^3.1.0", "ts-node": "^10.9.1", "typescript": "^5.2.2", - "wdio-wait-for": "^3.0.8" + "wdio-wait-for": "^3.0.9" }, "engines": { "node": ">=20" @@ -8581,9 +8581,9 @@ } }, "node_modules/wdio-wait-for": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/wdio-wait-for/-/wdio-wait-for-3.0.8.tgz", - "integrity": "sha512-Lptqzqso57sia7q6BRG2M+4S0YysXobcj9gchZxJBqYewgoH4e6Rime6i4WseIW85zmDMJu8pMSWNK4efong8A==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/wdio-wait-for/-/wdio-wait-for-3.0.9.tgz", + "integrity": "sha512-f7SZ916X9DpN1ZpY82wbwS0UwpRl8fOmT3v5TIfSn/XNLwDS1qZiGndayd5sNKhzYZFlDQDIIcfOcZDr7YBMcA==", "dev": true, "engines": { "node": "^16.13 || >=18" diff --git a/tests/wdio/package.json b/tests/wdio/package.json index 90ba2d765..8b7a3cdf7 100644 --- a/tests/wdio/package.json +++ b/tests/wdio/package.json @@ -17,7 +17,7 @@ "prettier": "^3.1.0", "ts-node": "^10.9.1", "typescript": "^5.2.2", - "wdio-wait-for": "^3.0.8" + "wdio-wait-for": "^3.0.9" }, "scripts": { "wdio": "wdio run ./wdio.conf.ts", From c443997cfede63a9642872c60838d847dc90050e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:21:02 +0100 Subject: [PATCH 04/47] web: bump the wdio group in /tests/wdio with 2 updates (#7655) Bumps the wdio group in /tests/wdio with 2 updates: [@wdio/cli](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-cli) and [@wdio/local-runner](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-local-runner). Updates `@wdio/cli` from 8.23.1 to 8.23.3 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.23.3/packages/wdio-cli) Updates `@wdio/local-runner` from 8.23.1 to 8.23.3 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.23.3/packages/wdio-local-runner) --- updated-dependencies: - dependency-name: "@wdio/cli" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: wdio - dependency-name: "@wdio/local-runner" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: wdio ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/wdio/package-lock.json | 65 +++++++++++++++++++----------------- tests/wdio/package.json | 4 +-- 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/tests/wdio/package-lock.json b/tests/wdio/package-lock.json index e690b96b4..ddb322f94 100644 --- a/tests/wdio/package-lock.json +++ b/tests/wdio/package-lock.json @@ -9,8 +9,8 @@ "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", - "@wdio/cli": "^8.23.1", - "@wdio/local-runner": "^8.23.1", + "@wdio/cli": "^8.23.3", + "@wdio/local-runner": "^8.23.3", "@wdio/mocha-framework": "^8.23.1", "@wdio/spec-reporter": "^8.23.1", "eslint": "^8.54.0", @@ -652,10 +652,13 @@ } }, "node_modules/@ljharb/through": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.9.tgz", - "integrity": "sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.11.tgz", + "integrity": "sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, "engines": { "node": ">= 0.4" } @@ -1138,14 +1141,14 @@ "dev": true }, "node_modules/@wdio/cli": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.23.1.tgz", - "integrity": "sha512-So8gl6iEoFtChJaOhE0vl0nJVoate1JfmGeMTLoKaeDf1PzSD9fj1Xvyp83elSjnSLV+QbJ07ew8c8+JEcsHRg==", + "version": "8.23.3", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.23.3.tgz", + "integrity": "sha512-iD4s8994u/nR1hZBcVY6yWBKqcyfVbwOtbjEcPoti4KcH5hs2u0ec0CpAh841NDx24fimDuPSh1znOsbrzvELw==", "dev": true, "dependencies": { "@types/node": "^20.1.1", "@wdio/config": "8.23.1", - "@wdio/globals": "8.23.1", + "@wdio/globals": "8.23.3", "@wdio/logger": "8.16.17", "@wdio/protocols": "8.23.0", "@wdio/types": "8.23.1", @@ -1159,13 +1162,13 @@ "ejs": "^3.1.9", "execa": "^8.0.1", "import-meta-resolve": "^3.0.0", - "inquirer": "9.2.11", + "inquirer": "9.2.12", "lodash.flattendeep": "^4.4.0", "lodash.pickby": "^4.6.0", "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", "recursive-readdir": "^2.2.3", - "webdriverio": "8.23.1", + "webdriverio": "8.23.3", "yargs": "^17.7.2" }, "bin": { @@ -1206,28 +1209,28 @@ } }, "node_modules/@wdio/globals": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.23.1.tgz", - "integrity": "sha512-bh60QmqueSzqdE+UnNODSSl+w7ECaSQCIYqVs7td3/WM5T17AxQgsom0IapSBFsItHf0g7SQGInkrh3lJ0XclA==", + "version": "8.23.3", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.23.3.tgz", + "integrity": "sha512-pmsR82CvbQu2zonwsIblsvNv+wOL0hCm4eJmCzLEMQ9WBB36kO28im8B/itsh/XKzqvQ1aidhCUdSSHFwFwZsQ==", "dev": true, "engines": { "node": "^16.13 || >=18" }, "optionalDependencies": { "expect-webdriverio": "^4.5.1", - "webdriverio": "8.23.1" + "webdriverio": "8.23.3" } }, "node_modules/@wdio/local-runner": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.23.1.tgz", - "integrity": "sha512-d/hnHj3omiAqUtcmAx42OhUTJIM2UU5HtG13gkXzI6NYd0cxicBAV3shkk9EzMFmvFiSDzYHO9Niddoo4IWPgw==", + "version": "8.23.3", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.23.3.tgz", + "integrity": "sha512-ELiD+zWR7PxvV+kIjnlIh2pUZ2dWSld7c6XeKff/e+YLnhc3AG7+/b3ml+JhLrtQqFt6X43V9IV9lfbNRiHWoQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@wdio/logger": "8.16.17", "@wdio/repl": "8.23.1", - "@wdio/runner": "8.23.1", + "@wdio/runner": "8.23.3", "@wdio/types": "8.23.1", "async-exit-hook": "^2.0.1", "split2": "^4.1.0", @@ -1316,14 +1319,14 @@ } }, "node_modules/@wdio/runner": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.23.1.tgz", - "integrity": "sha512-lENjpAEfhzCo5a06S+qB3r9wcdavC6BHHHxMmNYxdbH2Fuyt5OGzVB0iFquPnNxwajBn6O7YaIibIw2aLoXP/A==", + "version": "8.23.3", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.23.3.tgz", + "integrity": "sha512-vbSNfEvgMcDdWgBoRSo2GRiV8ccsh5QJYP8b5FfRoHBAvC4OZV6ZVx9Xzh7QsEfSaXXA9G/vaUGX0PPrS0gmgQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@wdio/config": "8.23.1", - "@wdio/globals": "8.23.1", + "@wdio/globals": "8.23.3", "@wdio/logger": "8.16.17", "@wdio/types": "8.23.1", "@wdio/utils": "8.23.1", @@ -1331,7 +1334,7 @@ "expect-webdriverio": "^4.5.1", "gaze": "^1.1.2", "webdriver": "8.23.1", - "webdriverio": "8.23.1" + "webdriverio": "8.23.3" }, "engines": { "node": "^16.13 || >=18" @@ -4302,12 +4305,12 @@ "dev": true }, "node_modules/inquirer": { - "version": "9.2.11", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.11.tgz", - "integrity": "sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==", + "version": "9.2.12", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz", + "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==", "dev": true, "dependencies": { - "@ljharb/through": "^2.3.9", + "@ljharb/through": "^2.3.11", "ansi-escapes": "^4.3.2", "chalk": "^5.3.0", "cli-cursor": "^3.1.0", @@ -8658,9 +8661,9 @@ } }, "node_modules/webdriverio": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.23.1.tgz", - "integrity": "sha512-M5F7J3J0L7GpHbcgz5rZNAX5/JgsCggVg8AGY2pYISiS1eN3WJdXve8VVXB2GtcLy12qCZwjoowl91nWTqNclQ==", + "version": "8.23.3", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.23.3.tgz", + "integrity": "sha512-kH+GAQrC6GfrF0LDX5odqn3CVvVrdIeTAYsQtji9tmb2YTJMIx57GNL1NIXhV4MFtalcEc9UjhZCwekLMemEOg==", "dev": true, "dependencies": { "@types/node": "^20.1.0", diff --git a/tests/wdio/package.json b/tests/wdio/package.json index 8b7a3cdf7..70e922bd2 100644 --- a/tests/wdio/package.json +++ b/tests/wdio/package.json @@ -6,8 +6,8 @@ "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", - "@wdio/cli": "^8.23.1", - "@wdio/local-runner": "^8.23.1", + "@wdio/cli": "^8.23.3", + "@wdio/local-runner": "^8.23.3", "@wdio/mocha-framework": "^8.23.1", "@wdio/spec-reporter": "^8.23.1", "eslint": "^8.54.0", From 86adfcd8a8e037c58b52c8c79f18faae0a8c0a40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:21:12 +0100 Subject: [PATCH 05/47] web: bump typescript from 5.2.2 to 5.3.2 in /web (#7653) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.2.2 to 5.3.2. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.2.2...v5.3.2) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 35 ++++++++++++++++++++++++++++++----- web/package.json | 2 +- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 9ca1477d4..0228bccf5 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -15,7 +15,6 @@ "@codemirror/lang-xml": "^6.0.2", "@codemirror/legacy-modes": "^6.3.3", "@codemirror/theme-one-dark": "^6.1.2", - "@esbuild/linux-arm64": "^0.19.6", "@formatjs/intl-listformat": "^7.5.3", "@fortawesome/fontawesome-free": "^6.4.2", "@goauthentik/api": "^2023.10.3-1700268969", @@ -98,7 +97,7 @@ "ts-lit-plugin": "^2.0.1", "tslib": "^2.6.2", "turnstile-types": "^1.1.3", - "typescript": "^5.2.2", + "typescript": "^5.3.2", "vite-tsconfig-paths": "^4.2.1" }, "engines": { @@ -3591,6 +3590,19 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/@lit/localize-tools/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@lit/reactive-element": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", @@ -20918,9 +20930,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -21492,6 +21504,19 @@ "web-component-analyzer": "cli.js" } }, + "node_modules/web-component-analyzer/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/web-streams-polyfill": { "version": "4.0.0-beta.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", diff --git a/web/package.json b/web/package.json index b246c5b22..c380e7145 100644 --- a/web/package.json +++ b/web/package.json @@ -118,7 +118,7 @@ "ts-lit-plugin": "^2.0.1", "tslib": "^2.6.2", "turnstile-types": "^1.1.3", - "typescript": "^5.2.2", + "typescript": "^5.3.2", "vite-tsconfig-paths": "^4.2.1" }, "optionalDependencies": { From 4b885281782a82690071c6b8a982de6dad80c835 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:21:24 +0100 Subject: [PATCH 06/47] web: bump @types/chart.js from 2.9.40 to 2.9.41 in /web (#7652) Bumps [@types/chart.js](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chart.js) from 2.9.40 to 2.9.41. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chart.js) --- updated-dependencies: - dependency-name: "@types/chart.js" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 8 ++++---- web/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 0228bccf5..87a6ccc0b 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -67,7 +67,7 @@ "@storybook/web-components": "^7.5.3", "@storybook/web-components-vite": "^7.5.3", "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@types/chart.js": "^2.9.40", + "@types/chart.js": "^2.9.41", "@types/codemirror": "5.60.13", "@types/grecaptcha": "^3.0.7", "@typescript-eslint/eslint-plugin": "^6.11.0", @@ -10120,9 +10120,9 @@ } }, "node_modules/@types/chart.js": { - "version": "2.9.40", - "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.40.tgz", - "integrity": "sha512-ApIH2LIDXzKTNtG4oTMmn2CIII6lvRvxyKnmLb1zYFlwXtE4lTOb2ywgXQJYVuhgWpqaCSHSYOlzO+5gs6hL+A==", + "version": "2.9.41", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.41.tgz", + "integrity": "sha512-3dvkDvueckY83UyUXtJMalYoH6faOLkWQoaTlJgB4Djde3oORmNP0Jw85HtzTuXyliUHcdp704s0mZFQKio/KQ==", "dev": true, "dependencies": { "moment": "^2.10.2" diff --git a/web/package.json b/web/package.json index c380e7145..536027998 100644 --- a/web/package.json +++ b/web/package.json @@ -88,7 +88,7 @@ "@storybook/web-components": "^7.5.3", "@storybook/web-components-vite": "^7.5.3", "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@types/chart.js": "^2.9.40", + "@types/chart.js": "^2.9.41", "@types/codemirror": "5.60.13", "@types/grecaptcha": "^3.0.7", "@typescript-eslint/eslint-plugin": "^6.11.0", From 0902aa408ef6877c2da44920bc51bff5aa4bd29e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:21:48 +0100 Subject: [PATCH 07/47] website: bump typescript from 5.2.2 to 5.3.2 in /website (#7644) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.2.2 to 5.3.2. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.2.2...v5.3.2) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 11 +++++++---- website/package.json | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index a14bd7cb9..3f9201845 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -35,7 +35,10 @@ "@docusaurus/types": "3.0.0", "@types/react": "^18.2.37", "prettier": "3.1.0", - "typescript": "~5.2.2" + "typescript": "~5.3.2" + }, + "engines": { + "node": ">=20" } }, "node_modules/@algolia/autocomplete-core": { @@ -16128,9 +16131,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/website/package.json b/website/package.json index c9f1b0c2a..a48b02156 100644 --- a/website/package.json +++ b/website/package.json @@ -54,7 +54,7 @@ "@docusaurus/types": "3.0.0", "@types/react": "^18.2.37", "prettier": "3.1.0", - "typescript": "~5.2.2" + "typescript": "~5.3.2" }, "engines": { "node": ">=20" From bb04b51521de75425fc8b5bb1bd373c5f682bf8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:21:59 +0100 Subject: [PATCH 08/47] core: bump django-filter from 23.3 to 23.4 (#7646) Bumps [django-filter](https://github.com/carltongibson/django-filter) from 23.3 to 23.4. - [Release notes](https://github.com/carltongibson/django-filter/releases) - [Changelog](https://github.com/carltongibson/django-filter/blob/main/CHANGES.rst) - [Commits](https://github.com/carltongibson/django-filter/compare/23.3...23.4) --- updated-dependencies: - dependency-name: django-filter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0247fbe3c..d7733b786 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1137,13 +1137,13 @@ bcrypt = ["bcrypt"] [[package]] name = "django-filter" -version = "23.3" +version = "23.4" description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically." optional = false python-versions = ">=3.7" files = [ - {file = "django-filter-23.3.tar.gz", hash = "sha256:015fe155582e1805b40629344e4a6cf3cc40450827d294d040b4b8c1749a9fa6"}, - {file = "django_filter-23.3-py3-none-any.whl", hash = "sha256:65bc5d1d8f4fff3aaf74cb5da537b6620e9214fb4b3180f6c560776b1b6dccd0"}, + {file = "django-filter-23.4.tar.gz", hash = "sha256:bed070b38359dce7d2dbe057b165d59773057986356cb809ded983b36c77a976"}, + {file = "django_filter-23.4-py3-none-any.whl", hash = "sha256:526954f18bd7d6423f232a9a7974f58fbc6863908b9fc160de075e01adcc2a5f"}, ] [package.dependencies] From e5e09d816d9018586ea1b9d47f712b6aabe19b83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:22:12 +0100 Subject: [PATCH 09/47] web: bump the babel group in /web with 2 updates (#7648) Bumps the babel group in /web with 2 updates: [@babel/plugin-transform-private-property-in-object](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-private-property-in-object) and [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime). Updates `@babel/plugin-transform-private-property-in-object` from 7.23.3 to 7.23.4 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.4/packages/babel-plugin-transform-private-property-in-object) Updates `@babel/plugin-transform-runtime` from 7.23.3 to 7.23.4 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.4/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-private-property-in-object" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: babel - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: babel ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 16 ++++++++-------- web/package.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 87a6ccc0b..d18caf913 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -47,8 +47,8 @@ "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-decorators": "^7.23.3", "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", - "@babel/plugin-transform-runtime": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-runtime": "^7.23.4", "@babel/preset-env": "^7.23.3", "@babel/preset-typescript": "^7.23.3", "@hcaptcha/types": "^1.0.3", @@ -1602,9 +1602,9 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz", - "integrity": "sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1666,9 +1666,9 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.3.tgz", - "integrity": "sha512-XcQ3X58CKBdBnnZpPaQjgVMePsXtSZzHoku70q9tUAQp02ggPQNM04BF3RvlW1GSM/McbSOQAzEK4MXbS7/JFg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", + "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", diff --git a/web/package.json b/web/package.json index 536027998..9182363e4 100644 --- a/web/package.json +++ b/web/package.json @@ -68,8 +68,8 @@ "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-decorators": "^7.23.3", "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", - "@babel/plugin-transform-runtime": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-runtime": "^7.23.4", "@babel/preset-env": "^7.23.3", "@babel/preset-typescript": "^7.23.3", "@hcaptcha/types": "^1.0.3", From a3f318d7bf4fd584f9378ea805efa941b29f52da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:22:43 +0100 Subject: [PATCH 10/47] web: bump typescript from 5.2.2 to 5.3.2 in /tests/wdio (#7656) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.2.2 to 5.3.2. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.2.2...v5.3.2) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/wdio/package-lock.json | 21 +++++++++++++++++---- tests/wdio/package.json | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/tests/wdio/package-lock.json b/tests/wdio/package-lock.json index ddb322f94..c921ada31 100644 --- a/tests/wdio/package-lock.json +++ b/tests/wdio/package-lock.json @@ -19,7 +19,7 @@ "npm-run-all": "^4.1.5", "prettier": "^3.1.0", "ts-node": "^10.9.1", - "typescript": "^5.2.2", + "typescript": "^5.3.2", "wdio-wait-for": "^3.0.9" }, "engines": { @@ -8245,6 +8245,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/tshy/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -8341,9 +8354,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/tests/wdio/package.json b/tests/wdio/package.json index 70e922bd2..226ee8bbf 100644 --- a/tests/wdio/package.json +++ b/tests/wdio/package.json @@ -16,7 +16,7 @@ "npm-run-all": "^4.1.5", "prettier": "^3.1.0", "ts-node": "^10.9.1", - "typescript": "^5.2.2", + "typescript": "^5.3.2", "wdio-wait-for": "^3.0.9" }, "scripts": { From 2ec904692a366e98f03a3a427171f062ef08a1bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:22:53 +0100 Subject: [PATCH 11/47] web: bump @types/codemirror from 5.60.13 to 5.60.14 in /web (#7651) Bumps [@types/codemirror](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/codemirror) from 5.60.13 to 5.60.14. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/codemirror) --- updated-dependencies: - dependency-name: "@types/codemirror" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 8 ++++---- web/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index d18caf913..51a51cf4f 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -68,7 +68,7 @@ "@storybook/web-components-vite": "^7.5.3", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/chart.js": "^2.9.41", - "@types/codemirror": "5.60.13", + "@types/codemirror": "5.60.14", "@types/grecaptcha": "^3.0.7", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", @@ -10129,9 +10129,9 @@ } }, "node_modules/@types/codemirror": { - "version": "5.60.13", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.13.tgz", - "integrity": "sha512-qLWcKUwYDYB7mZpE++0Jn3i1TJ2GW8nlhALRAfjaKgb1HRnk2qcNqWxZ+BpPY1h4n4IQT0foThaOxWHxEL8MnQ==", + "version": "5.60.14", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.14.tgz", + "integrity": "sha512-Gs+9yVSe7ceqhY7SJ6YUpU20aVnj/E2wjYHPWyntSD2ayr204xgPtVWyEp+8ARZjteEYVLJ/rVnHtdSCPbfYFQ==", "dev": true, "dependencies": { "@types/tern": "*" diff --git a/web/package.json b/web/package.json index 9182363e4..aa4a0c839 100644 --- a/web/package.json +++ b/web/package.json @@ -89,7 +89,7 @@ "@storybook/web-components-vite": "^7.5.3", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/chart.js": "^2.9.41", - "@types/codemirror": "5.60.13", + "@types/codemirror": "5.60.14", "@types/grecaptcha": "^3.0.7", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", From 3023da916e82546b5a73fd2110e89ba733b399e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:23:01 +0100 Subject: [PATCH 12/47] web: bump the eslint group in /web with 2 updates (#7649) Bumps the eslint group in /web with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 6.11.0 to 6.12.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.12.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 6.11.0 to 6.12.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.12.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: eslint - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: eslint ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 88 +++++++++++++++++++++---------------------- web/package.json | 4 +- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 51a51cf4f..65df2b204 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -70,8 +70,8 @@ "@types/chart.js": "^2.9.41", "@types/codemirror": "5.60.14", "@types/grecaptcha": "^3.0.7", - "@typescript-eslint/eslint-plugin": "^6.11.0", - "@typescript-eslint/parser": "^6.11.0", + "@typescript-eslint/eslint-plugin": "^6.12.0", + "@typescript-eslint/parser": "^6.12.0", "babel-plugin-macros": "^3.1.0", "babel-plugin-tsconfig-paths": "^1.0.3", "cross-env": "^7.0.3", @@ -10505,16 +10505,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.11.0.tgz", - "integrity": "sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz", + "integrity": "sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.11.0", - "@typescript-eslint/type-utils": "6.11.0", - "@typescript-eslint/utils": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0", + "@typescript-eslint/scope-manager": "6.12.0", + "@typescript-eslint/type-utils": "6.12.0", + "@typescript-eslint/utils": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -10573,15 +10573,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.11.0.tgz", - "integrity": "sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.12.0.tgz", + "integrity": "sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.11.0", - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/typescript-estree": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0", + "@typescript-eslint/scope-manager": "6.12.0", + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0", "debug": "^4.3.4" }, "engines": { @@ -10601,13 +10601,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz", - "integrity": "sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz", + "integrity": "sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0" + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -10618,13 +10618,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.11.0.tgz", - "integrity": "sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz", + "integrity": "sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.11.0", - "@typescript-eslint/utils": "6.11.0", + "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/utils": "6.12.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -10645,9 +10645,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.11.0.tgz", - "integrity": "sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.12.0.tgz", + "integrity": "sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -10658,13 +10658,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz", - "integrity": "sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz", + "integrity": "sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0", + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -10718,17 +10718,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.11.0.tgz", - "integrity": "sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.12.0.tgz", + "integrity": "sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.11.0", - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/typescript-estree": "6.11.0", + "@typescript-eslint/scope-manager": "6.12.0", + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/typescript-estree": "6.12.0", "semver": "^7.5.4" }, "engines": { @@ -10776,12 +10776,12 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz", - "integrity": "sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz", + "integrity": "sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.11.0", + "@typescript-eslint/types": "6.12.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { diff --git a/web/package.json b/web/package.json index aa4a0c839..f765b967b 100644 --- a/web/package.json +++ b/web/package.json @@ -91,8 +91,8 @@ "@types/chart.js": "^2.9.41", "@types/codemirror": "5.60.14", "@types/grecaptcha": "^3.0.7", - "@typescript-eslint/eslint-plugin": "^6.11.0", - "@typescript-eslint/parser": "^6.11.0", + "@typescript-eslint/eslint-plugin": "^6.12.0", + "@typescript-eslint/parser": "^6.12.0", "babel-plugin-macros": "^3.1.0", "babel-plugin-tsconfig-paths": "^1.0.3", "cross-env": "^7.0.3", From 4b35464acfbe4d6622e7a8c9d889426b0f7742b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:23:11 +0100 Subject: [PATCH 13/47] web: bump the sentry group in /web with 2 updates (#7647) Bumps the sentry group in /web with 2 updates: [@sentry/browser](https://github.com/getsentry/sentry-javascript) and [@sentry/tracing](https://github.com/getsentry/sentry-javascript). Updates `@sentry/browser` from 7.80.1 to 7.81.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.80.1...7.81.0) Updates `@sentry/tracing` from 7.80.1 to 7.81.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.80.1...7.81.0) --- updated-dependencies: - dependency-name: "@sentry/browser" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: sentry - dependency-name: "@sentry/tracing" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: sentry ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 78 +++++++++++++++++++++---------------------- web/package.json | 4 +-- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 65df2b204..54ec67b95 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -24,8 +24,8 @@ "@open-wc/lit-helpers": "^0.6.0", "@patternfly/elements": "^2.4.0", "@patternfly/patternfly": "^4.224.2", - "@sentry/browser": "^7.80.1", - "@sentry/tracing": "^7.80.1", + "@sentry/browser": "^7.81.0", + "@sentry/tracing": "^7.81.0", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "chart.js": "^4.4.0", @@ -4748,84 +4748,84 @@ ] }, "node_modules/@sentry-internal/tracing": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.80.1.tgz", - "integrity": "sha512-5gZ4LPIj2vpQl2/dHBM4uXMi9OI5E0VlOhJQt0foiuN6JJeiOjdpJFcfVqJk69wrc0deVENTtgKKktxqMwVeWQ==", + "version": "7.81.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.81.0.tgz", + "integrity": "sha512-mc3tdOEvAE6kaCvT3BpMwCgfTT2yfXjWpC7g+3N8U/yuQEmQSCDZA/ut7EkzU0DyhG3t8HzT0c+CAG3HtilEAQ==", "dependencies": { - "@sentry/core": "7.80.1", - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1" + "@sentry/core": "7.81.0", + "@sentry/types": "7.81.0", + "@sentry/utils": "7.81.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.80.1.tgz", - "integrity": "sha512-1dPR6vPJ9vOTzgXff9HGheb178XeEv5hyjBNhCO1f6rjCgnVj99XGNZIgO1Ee1ALJbqlfPWaeV+uSWbbcmgJMA==", + "version": "7.81.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.81.0.tgz", + "integrity": "sha512-/6xsdSeZspq7+LARg6Gt0KMUQRf6nZcuA20X9Y28uJqyZFYoXBnxG3+JJcxycxleEJRci20gjBwOtM157anUJA==", "dependencies": { - "@sentry-internal/tracing": "7.80.1", - "@sentry/core": "7.80.1", - "@sentry/replay": "7.80.1", - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1" + "@sentry-internal/tracing": "7.81.0", + "@sentry/core": "7.81.0", + "@sentry/replay": "7.81.0", + "@sentry/types": "7.81.0", + "@sentry/utils": "7.81.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.80.1.tgz", - "integrity": "sha512-3Yh+O9Q86MxwIuJFYtuSSoUCpdx99P1xDAqL0FIPTJ+ekaVMiUJq9NmyaNh9uN2myPSmxvEXW6q3z37zta9ZHg==", + "version": "7.81.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.81.0.tgz", + "integrity": "sha512-FCAKlqo9Z6fku69bkahw1AN+eBfAgRgOL1RpBLZgyG7YBW12vtSkHb5SDvZZTkm541Fo3hhepUTLtX0qmpA4yw==", "dependencies": { - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1" + "@sentry/types": "7.81.0", + "@sentry/utils": "7.81.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.80.1.tgz", - "integrity": "sha512-yjpftIyybQeWD2i0Nd7C96tZwjNbSMRW515EL9jwlNxYbQtGtMs0HavP9Y7uQvQrzwSHY0Wp+ooe9PMuvzqbHw==", + "version": "7.81.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.81.0.tgz", + "integrity": "sha512-kJRWjEzby1015Ds5TTNNVe9EkzfwPfPcM06ycba+DIXPJ2LiaSXvH3OU0s2HEJ9Vo/+jcpFMlODXFF/wrYIn9w==", "dependencies": { - "@sentry-internal/tracing": "7.80.1", - "@sentry/core": "7.80.1", - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1" + "@sentry-internal/tracing": "7.81.0", + "@sentry/core": "7.81.0", + "@sentry/types": "7.81.0", + "@sentry/utils": "7.81.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/tracing": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.80.1.tgz", - "integrity": "sha512-sFkcxCBtLNVa3EyeCafZqhJHZ714f2+ryPWTBckAmxAsON4yjh/YLs2X1FJ2n6Rnv16TP6gWGt4SnhFT03WStA==", + "version": "7.81.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.81.0.tgz", + "integrity": "sha512-3QRusk7AZzbNWuPalqSCQCPAEJ9L167txYUkL5x3Y+YK4gZt3/bNovoVNDaQ06XmIYL9ENXVw1hbdk0DIgirpw==", "dependencies": { - "@sentry-internal/tracing": "7.80.1" + "@sentry-internal/tracing": "7.81.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.80.1.tgz", - "integrity": "sha512-CVu4uPVTOI3U9kYiOdA085R7jX5H1oVODbs9y+A8opJ0dtJTMueCXgZyE8oXQ0NjGVs6HEeaLkOuiV0mj8X3yw==", + "version": "7.81.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.81.0.tgz", + "integrity": "sha512-rbYNYSSrrnwNndC7S+eVT84GRLEyCZNh9oXUQqzgSD6ngXCZ0xFJW6si75uv/XQBWIw4rkj9xfRcy8DU0Tj4fg==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.80.1.tgz", - "integrity": "sha512-bfFm2e/nEn+b9++QwjNEYCbS7EqmteT8uf0XUs7PljusSimIqqxDtK1pfD9zjynPgC8kW/fVBKv0pe2LufomeA==", + "version": "7.81.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.81.0.tgz", + "integrity": "sha512-yC9IvfeVbG4dygi4b+iUUMHp9xeHJfCn6XLbqjJVfq3xjAzBGHgfrpw6fYPNyTljXKb6CTiSXSqaNaQJE4CkPA==", "dependencies": { - "@sentry/types": "7.80.1" + "@sentry/types": "7.81.0" }, "engines": { "node": ">=8" diff --git a/web/package.json b/web/package.json index f765b967b..202bb047c 100644 --- a/web/package.json +++ b/web/package.json @@ -45,8 +45,8 @@ "@open-wc/lit-helpers": "^0.6.0", "@patternfly/elements": "^2.4.0", "@patternfly/patternfly": "^4.224.2", - "@sentry/browser": "^7.80.1", - "@sentry/tracing": "^7.80.1", + "@sentry/browser": "^7.81.0", + "@sentry/tracing": "^7.81.0", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "chart.js": "^4.4.0", From 98597a321a050017960e53df5792f9269cae7934 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:23:18 +0100 Subject: [PATCH 14/47] website: bump @types/react from 18.2.37 to 18.2.38 in /website (#7645) Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.37 to 18.2.38. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 8 ++++---- website/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index 3f9201845..0c7239845 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -33,7 +33,7 @@ "@docusaurus/module-type-aliases": "3.0.0", "@docusaurus/tsconfig": "3.0.0", "@docusaurus/types": "3.0.0", - "@types/react": "^18.2.37", + "@types/react": "^18.2.38", "prettier": "3.1.0", "typescript": "~5.3.2" }, @@ -4130,9 +4130,9 @@ "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==" }, "node_modules/@types/react": { - "version": "18.2.37", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.37.tgz", - "integrity": "sha512-RGAYMi2bhRgEXT3f4B92WTohopH6bIXw05FuGlmJEnv/omEn190+QYEIYxIAuIBdKgboYYdVved2p1AxZVQnaw==", + "version": "18.2.38", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.38.tgz", + "integrity": "sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", diff --git a/website/package.json b/website/package.json index a48b02156..b28d61f1e 100644 --- a/website/package.json +++ b/website/package.json @@ -52,7 +52,7 @@ "@docusaurus/module-type-aliases": "3.0.0", "@docusaurus/tsconfig": "3.0.0", "@docusaurus/types": "3.0.0", - "@types/react": "^18.2.37", + "@types/react": "^18.2.38", "prettier": "3.1.0", "typescript": "~5.3.2" }, From c9e3f1f4fe6d0dacfcc56fd7ec86423b69d6d727 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:23:35 +0100 Subject: [PATCH 15/47] web: bump the eslint group in /tests/wdio with 2 updates (#7654) Bumps the eslint group in /tests/wdio with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 6.11.0 to 6.12.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.12.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 6.11.0 to 6.12.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.12.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: eslint - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: eslint ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/wdio/package-lock.json | 94 ++++++++++++++++++------------------ tests/wdio/package.json | 4 +- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/tests/wdio/package-lock.json b/tests/wdio/package-lock.json index c921ada31..bcb1e33c4 100644 --- a/tests/wdio/package-lock.json +++ b/tests/wdio/package-lock.json @@ -7,8 +7,8 @@ "name": "@goauthentik/web-tests", "devDependencies": { "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^6.11.0", - "@typescript-eslint/parser": "^6.11.0", + "@typescript-eslint/eslint-plugin": "^6.12.0", + "@typescript-eslint/parser": "^6.12.0", "@wdio/cli": "^8.23.3", "@wdio/local-runner": "^8.23.3", "@wdio/mocha-framework": "^8.23.1", @@ -894,9 +894,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.5.tgz", - "integrity": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", "dev": true }, "node_modules/@types/stack-utils": { @@ -946,16 +946,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.11.0.tgz", - "integrity": "sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz", + "integrity": "sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.11.0", - "@typescript-eslint/type-utils": "6.11.0", - "@typescript-eslint/utils": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0", + "@typescript-eslint/scope-manager": "6.12.0", + "@typescript-eslint/type-utils": "6.12.0", + "@typescript-eslint/utils": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -981,15 +981,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.11.0.tgz", - "integrity": "sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.12.0.tgz", + "integrity": "sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.11.0", - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/typescript-estree": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0", + "@typescript-eslint/scope-manager": "6.12.0", + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0", "debug": "^4.3.4" }, "engines": { @@ -1009,13 +1009,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz", - "integrity": "sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz", + "integrity": "sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0" + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1026,13 +1026,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.11.0.tgz", - "integrity": "sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz", + "integrity": "sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.11.0", - "@typescript-eslint/utils": "6.11.0", + "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/utils": "6.12.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -1053,9 +1053,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.11.0.tgz", - "integrity": "sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.12.0.tgz", + "integrity": "sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1066,13 +1066,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz", - "integrity": "sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz", + "integrity": "sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/visitor-keys": "6.11.0", + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/visitor-keys": "6.12.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1093,17 +1093,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.11.0.tgz", - "integrity": "sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.12.0.tgz", + "integrity": "sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.11.0", - "@typescript-eslint/types": "6.11.0", - "@typescript-eslint/typescript-estree": "6.11.0", + "@typescript-eslint/scope-manager": "6.12.0", + "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/typescript-estree": "6.12.0", "semver": "^7.5.4" }, "engines": { @@ -1118,12 +1118,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz", - "integrity": "sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz", + "integrity": "sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.11.0", + "@typescript-eslint/types": "6.12.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { diff --git a/tests/wdio/package.json b/tests/wdio/package.json index 226ee8bbf..0a93cd6cb 100644 --- a/tests/wdio/package.json +++ b/tests/wdio/package.json @@ -4,8 +4,8 @@ "type": "module", "devDependencies": { "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^6.11.0", - "@typescript-eslint/parser": "^6.11.0", + "@typescript-eslint/eslint-plugin": "^6.12.0", + "@typescript-eslint/parser": "^6.12.0", "@wdio/cli": "^8.23.3", "@wdio/local-runner": "^8.23.3", "@wdio/mocha-framework": "^8.23.1", From 78f47a8726559dee73b1b65d0b09b917da1d334f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:24:04 +0100 Subject: [PATCH 16/47] web: bump the esbuild group in /web with 2 updates (#7650) Bumps the esbuild group in /web with 2 updates: [@esbuild/darwin-arm64](https://github.com/evanw/esbuild) and [@esbuild/linux-arm64](https://github.com/evanw/esbuild). Updates `@esbuild/darwin-arm64` from 0.19.6 to 0.19.7 - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.19.6...v0.19.7) Updates `@esbuild/linux-arm64` from 0.19.6 to 0.19.7 - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.19.6...v0.19.7) --- updated-dependencies: - dependency-name: "@esbuild/darwin-arm64" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: esbuild - dependency-name: "@esbuild/linux-arm64" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: esbuild ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 17 +++++++++-------- web/package.json | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 54ec67b95..e90dc247f 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -15,6 +15,7 @@ "@codemirror/lang-xml": "^6.0.2", "@codemirror/legacy-modes": "^6.3.3", "@codemirror/theme-one-dark": "^6.1.2", + "@esbuild/linux-arm64": "^0.19.7", "@formatjs/intl-listformat": "^7.5.3", "@fortawesome/fontawesome-free": "^6.4.2", "@goauthentik/api": "^2023.10.3-1700268969", @@ -104,9 +105,9 @@ "node": ">=20" }, "optionalDependencies": { - "@esbuild/darwin-arm64": "^0.19.6", + "@esbuild/darwin-arm64": "^0.19.7", "@esbuild/linux-amd64": "^0.18.11", - "@esbuild/linux-arm64": "^0.19.6" + "@esbuild/linux-arm64": "^0.19.7" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -2443,9 +2444,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.6.tgz", - "integrity": "sha512-91LoRp/uZAKx6ESNspL3I46ypwzdqyDLXZH7x2QYCLgtnaU08+AXEbabY2yExIz03/am0DivsTtbdxzGejfXpA==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.7.tgz", + "integrity": "sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==", "cpu": [ "arm64" ], @@ -2522,9 +2523,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.6.tgz", - "integrity": "sha512-HQCOrk9XlH3KngASLaBfHpcoYEGUt829A9MyxaI8RMkfRA8SakG6YQEITAuwmtzFdEu5GU4eyhKcpv27dFaOBg==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.7.tgz", + "integrity": "sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==", "cpu": [ "arm64" ], diff --git a/web/package.json b/web/package.json index 202bb047c..ccfb5e03a 100644 --- a/web/package.json +++ b/web/package.json @@ -122,9 +122,9 @@ "vite-tsconfig-paths": "^4.2.1" }, "optionalDependencies": { - "@esbuild/darwin-arm64": "^0.19.6", + "@esbuild/darwin-arm64": "^0.19.7", "@esbuild/linux-amd64": "^0.18.11", - "@esbuild/linux-arm64": "^0.19.6" + "@esbuild/linux-arm64": "^0.19.7" }, "engines": { "node": ">=20" From 2c6ac73e0a4aad8a7497cd0e47bc30dc4a22bf23 Mon Sep 17 00:00:00 2001 From: Jens L Date: Tue, 21 Nov 2023 15:07:30 +0100 Subject: [PATCH 17/47] web/flows: use aria-invalid attribute to better show invalid input fields (#7661) Signed-off-by: Jens Langhammer --- web/src/elements/forms/FormElement.ts | 24 +++++++++++++++---- web/src/flow/stages/password/PasswordStage.ts | 6 +++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/web/src/elements/forms/FormElement.ts b/web/src/elements/forms/FormElement.ts index bb408af88..b28c3bd7d 100644 --- a/web/src/elements/forms/FormElement.ts +++ b/web/src/elements/forms/FormElement.ts @@ -6,19 +6,20 @@ import { customElement, property } from "lit/decorators.js"; import PFForm from "@patternfly/patternfly/components/Form/form.css"; import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; import { ErrorDetail } from "@goauthentik/api"; /** * This is used in two places outside of Flow, and in both cases is used primarily to - * display content, not take input. It displays the TOPT QR code, and the static + * display content, not take input. It displays the TOTP QR code, and the static * recovery tokens. But it's used a lot in Flow. */ @customElement("ak-form-element") export class FormElement extends AKElement { static get styles(): CSSResult[] { - return [PFForm, PFFormControl]; + return [PFBase, PFForm, PFFormControl]; } @property() @@ -28,7 +29,16 @@ export class FormElement extends AKElement { required = false; @property({ attribute: false }) - errors?: ErrorDetail[]; + set errors(value: ErrorDetail[] | undefined) { + this._errors = value; + const hasError = (value || []).length > 0; + this.querySelectorAll("input").forEach((input) => { + input.setAttribute("aria-invalid", hasError.toString()); + }); + this.requestUpdate(); + } + + _errors?: ErrorDetail[]; updated(): void { this.querySelectorAll("input[autofocus]").forEach((input) => { @@ -45,8 +55,12 @@ export class FormElement extends AKElement { : html``} - ${(this.errors || []).map((error) => { - return html`

    ${error.string}

    `; + ${(this._errors || []).map((error) => { + return html`

    + + ${error.string} +

    `; })} `; } diff --git a/web/src/flow/stages/password/PasswordStage.ts b/web/src/flow/stages/password/PasswordStage.ts index 774a1f5b3..36e301749 100644 --- a/web/src/flow/stages/password/PasswordStage.ts +++ b/web/src/flow/stages/password/PasswordStage.ts @@ -28,6 +28,11 @@ export class PasswordStage extends BaseStage 0; + } + renderInput(): HTMLInputElement { this.input = document.createElement("input"); this.input.type = "password"; @@ -38,6 +43,7 @@ export class PasswordStage extends BaseStage { From b7055c583842f69f46f31a53c6b2fbc1fba17905 Mon Sep 17 00:00:00 2001 From: Jens L Date: Tue, 21 Nov 2023 15:08:02 +0100 Subject: [PATCH 18/47] web/admin: fix admins not able to delete MFA devices (#7660) Signed-off-by: Jens Langhammer --- web/src/admin/users/UserDevicesTable.ts | 17 +++++++++ web/xliff/zh-Hans.xlf | 48 ++++++++++++------------- 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/web/src/admin/users/UserDevicesTable.ts b/web/src/admin/users/UserDevicesTable.ts index b120c3265..06ead21df 100644 --- a/web/src/admin/users/UserDevicesTable.ts +++ b/web/src/admin/users/UserDevicesTable.ts @@ -15,6 +15,8 @@ export class UserDeviceTable extends Table { @property({ type: Number }) userId?: number; + checkbox = true; + async apiEndpoint(): Promise> { return new AuthenticatorsApi(DEFAULT_CONFIG) .authenticatorsAdminAllList({ @@ -64,6 +66,21 @@ export class UserDeviceTable extends Table { } } + renderToolbarSelected(): TemplateResult { + const disabled = this.selectedElements.length < 1; + return html` { + return this.deleteWrapper(item); + }} + > + + `; + } + renderToolbar(): TemplateResult { return html` { diff --git a/web/xliff/zh-Hans.xlf b/web/xliff/zh-Hans.xlf index f314f44a2..96bfb9808 100644 --- a/web/xliff/zh-Hans.xlf +++ b/web/xliff/zh-Hans.xlf @@ -1,4 +1,4 @@ - + @@ -613,9 +613,9 @@ - The URL "" was not found. - 未找到 URL " - "。 + The URL "" was not found. + 未找到 URL " + "。 @@ -1057,8 +1057,8 @@ - To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. - 要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。 + To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. + 要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。 @@ -1799,8 +1799,8 @@ - Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". - 输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。 + Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". + 输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。 @@ -2988,8 +2988,8 @@ doesn't pass when either or both of the selected options are equal or above the - Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' - 包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...' + Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' + 包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...' @@ -3781,8 +3781,8 @@ doesn't pass when either or both of the selected options are equal or above the - When using an external logging solution for archiving, this can be set to "minutes=5". - 使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。 + When using an external logging solution for archiving, this can be set to "minutes=5". + 使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。 @@ -3791,8 +3791,8 @@ doesn't pass when either or both of the selected options are equal or above the - Format: "weeks=3;days=2;hours=3,seconds=2". - 格式:"weeks=3;days=2;hours=3,seconds=2"。 + Format: "weeks=3;days=2;hours=3,seconds=2". + 格式:"weeks=3;days=2;hours=3,seconds=2"。 @@ -3988,10 +3988,10 @@ doesn't pass when either or both of the selected options are equal or above the - Are you sure you want to update ""? + Are you sure you want to update ""? 您确定要更新 - " - " 吗? + " + " 吗? @@ -5077,7 +5077,7 @@ doesn't pass when either or both of the selected options are equal or above the - A "roaming" authenticator, like a YubiKey + A "roaming" authenticator, like a YubiKey 像 YubiKey 这样的“漫游”身份验证器 @@ -5412,10 +5412,10 @@ doesn't pass when either or both of the selected options are equal or above the
    - ("", of type ) + ("", of type ) - (" - ",类型为 + (" + ",类型为 @@ -5464,7 +5464,7 @@ doesn't pass when either or both of the selected options are equal or above the - If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. + If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. 如果设置时长大于 0,用户可以选择“保持登录”选项,这将使用户的会话延长此处设置的时间。 @@ -7978,7 +7978,7 @@ Bindings to groups/users are checked against the user of the event. 成功创建用户并添加到组 - This user will be added to the group "". + This user will be added to the group "". 此用户将会被添加到组 &quot;&quot;。 @@ -7991,4 +7991,4 @@ Bindings to groups/users are checked against the user of the event. - \ No newline at end of file + From 6a437215245c80dc8fe1445876c7deaeaaf1c1e5 Mon Sep 17 00:00:00 2001 From: Jens L Date: Tue, 21 Nov 2023 18:01:55 +0100 Subject: [PATCH 19/47] website/docs: prepare 2023.10.4 release notes (#7641) Signed-off-by: Jens Langhammer --- website/docs/releases/2023/v2023.10.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/website/docs/releases/2023/v2023.10.md b/website/docs/releases/2023/v2023.10.md index 0d564da4e..6adfbf0d4 100644 --- a/website/docs/releases/2023/v2023.10.md +++ b/website/docs/releases/2023/v2023.10.md @@ -140,16 +140,29 @@ helm upgrade authentik authentik/authentik -f values.yaml --version ^2023.10 ## Fixed in 2023.10.3 - ci: explicitly give write permissions to packages (cherry-pick #7428) (#7430) +- core: fix worker beat toggle inverted (cherry-pick #7508) (#7509) +- events: fix gdpr compliance always running (cherry-pick #7491) (#7505) - providers/oauth2: set auth_via for token and other endpoints (cherry-pick #7417) (#7427) - providers/proxy: fix closed redis client (cherry-pick #7385) (#7429) - root: Improve multi arch Docker image build speed (cherry-pick #7355) (#7426) - sources/oauth: fix patreon (cherry-pick #7454) (#7456) - stages/email: fix duplicate querystring encoding (cherry-pick #7386) (#7425) +- web: bugfix: broken backchannel selector (cherry-pick #7480) (#7507) - web/admin: fix html error on oauth2 provider page (cherry-pick #7384) (#7424) - web/flows: attempt to fix bitwareden android compatibility (cherry-pick #7455) (#7457) -- events: fix gdpr compliance always running (cherry-pick #7491) (#7505) -- Web: bugfix: broken backchannel selector (cherry-pick #7480) (#7507) -- core: fix worker beat toggle inverted (cherry-pick #7508) (#7509) + +## Fixed in 2023.10.4 + +- ci: fix permissions for release pipeline to publish binaries (cherry-pick #7512) (#7621) +- core: bump golang from 1.21.3-bookworm to 1.21.4-bookworm (cherry-pick #7483) (#7622) +- events: don't update internal service accounts unless needed (cherry-pick #7611) (#7640) +- events: fix missing model\_\* events when not directly authenticated (cherry-pick #7588) (#7597) +- events: sanitize functions (cherry-pick #7587) (#7589) +- providers/proxy: Fix duplicate cookies when using file system store. (cherry-pick #7541) (#7544) +- providers/scim: fix missing schemas attribute for User and Group (cherry-pick #7477) (#7596) +- root: specify node and python versions in respective config files, deduplicate in CI (#7620) +- stages/email: use uuid for email confirmation token instead of username (cherry-pick #7581) (#7584) +- web/admin: fix admins not able to delete MFA devices (#7660) ## API Changes From b88e39411c12e3f9e04125a7887f12354f760a14 Mon Sep 17 00:00:00 2001 From: Jens L Date: Tue, 21 Nov 2023 18:10:07 +0100 Subject: [PATCH 20/47] security: fix CVE-2023-48228 (#7666) Signed-off-by: Jens Langhammer --- .../providers/oauth2/tests/test_token_pkce.py | 187 ++++++++++++++++++ authentik/providers/oauth2/views/token.py | 5 +- website/docs/security/CVE-2023-48228.md | 61 ++++++ website/sidebars.js | 1 + 4 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 authentik/providers/oauth2/tests/test_token_pkce.py create mode 100644 website/docs/security/CVE-2023-48228.md diff --git a/authentik/providers/oauth2/tests/test_token_pkce.py b/authentik/providers/oauth2/tests/test_token_pkce.py new file mode 100644 index 000000000..23bcf359f --- /dev/null +++ b/authentik/providers/oauth2/tests/test_token_pkce.py @@ -0,0 +1,187 @@ +"""Test token view""" +from base64 import b64encode, urlsafe_b64encode +from hashlib import sha256 + +from django.test import RequestFactory +from django.urls import reverse + +from authentik.core.models import Application +from authentik.core.tests.utils import create_test_admin_user, create_test_flow +from authentik.flows.challenge import ChallengeTypes +from authentik.lib.generators import generate_id +from authentik.providers.oauth2.constants import GRANT_TYPE_AUTHORIZATION_CODE +from authentik.providers.oauth2.models import AuthorizationCode, OAuth2Provider +from authentik.providers.oauth2.tests.utils import OAuthTestCase + + +class TestTokenPKCE(OAuthTestCase): + """Test token view""" + + def setUp(self) -> None: + super().setUp() + self.factory = RequestFactory() + self.app = Application.objects.create(name=generate_id(), slug="test") + + def test_pkce_missing_in_token(self): + """Test full with pkce""" + flow = create_test_flow() + provider = OAuth2Provider.objects.create( + name=generate_id(), + client_id="test", + authorization_flow=flow, + redirect_uris="foo://localhost", + access_code_validity="seconds=100", + ) + Application.objects.create(name="app", slug="app", provider=provider) + state = generate_id() + user = create_test_admin_user() + self.client.force_login(user) + challenge = generate_id() + header = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() + # Step 1, initiate params and get redirect to flow + self.client.get( + reverse("authentik_providers_oauth2:authorize"), + data={ + "response_type": "code", + "client_id": "test", + "state": state, + "redirect_uri": "foo://localhost", + "code_challenge": challenge, + "code_challenge_method": "S256", + }, + ) + response = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": flow.slug}), + ) + code: AuthorizationCode = AuthorizationCode.objects.filter(user=user).first() + self.assertJSONEqual( + response.content.decode(), + { + "component": "xak-flow-redirect", + "type": ChallengeTypes.REDIRECT.value, + "to": f"foo://localhost?code={code.code}&state={state}", + }, + ) + response = self.client.post( + reverse("authentik_providers_oauth2:token"), + data={ + "grant_type": GRANT_TYPE_AUTHORIZATION_CODE, + "code": code.code, + # Missing the code_verifier here + "redirect_uri": "foo://localhost", + }, + HTTP_AUTHORIZATION=f"Basic {header}", + ) + self.assertJSONEqual( + response.content, + {"error": "invalid_request", "error_description": "The request is otherwise malformed"}, + ) + self.assertEqual(response.status_code, 400) + + def test_pkce_correct_s256(self): + """Test full with pkce""" + flow = create_test_flow() + provider = OAuth2Provider.objects.create( + name=generate_id(), + client_id="test", + authorization_flow=flow, + redirect_uris="foo://localhost", + access_code_validity="seconds=100", + ) + Application.objects.create(name="app", slug="app", provider=provider) + state = generate_id() + user = create_test_admin_user() + self.client.force_login(user) + verifier = generate_id() + challenge = ( + urlsafe_b64encode(sha256(verifier.encode("ascii")).digest()) + .decode("utf-8") + .replace("=", "") + ) + header = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() + # Step 1, initiate params and get redirect to flow + self.client.get( + reverse("authentik_providers_oauth2:authorize"), + data={ + "response_type": "code", + "client_id": "test", + "state": state, + "redirect_uri": "foo://localhost", + "code_challenge": challenge, + "code_challenge_method": "S256", + }, + ) + response = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": flow.slug}), + ) + code: AuthorizationCode = AuthorizationCode.objects.filter(user=user).first() + self.assertJSONEqual( + response.content.decode(), + { + "component": "xak-flow-redirect", + "type": ChallengeTypes.REDIRECT.value, + "to": f"foo://localhost?code={code.code}&state={state}", + }, + ) + response = self.client.post( + reverse("authentik_providers_oauth2:token"), + data={ + "grant_type": GRANT_TYPE_AUTHORIZATION_CODE, + "code": code.code, + "code_verifier": verifier, + "redirect_uri": "foo://localhost", + }, + HTTP_AUTHORIZATION=f"Basic {header}", + ) + self.assertEqual(response.status_code, 200) + + def test_pkce_correct_plain(self): + """Test full with pkce""" + flow = create_test_flow() + provider = OAuth2Provider.objects.create( + name=generate_id(), + client_id="test", + authorization_flow=flow, + redirect_uris="foo://localhost", + access_code_validity="seconds=100", + ) + Application.objects.create(name="app", slug="app", provider=provider) + state = generate_id() + user = create_test_admin_user() + self.client.force_login(user) + verifier = generate_id() + header = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() + # Step 1, initiate params and get redirect to flow + self.client.get( + reverse("authentik_providers_oauth2:authorize"), + data={ + "response_type": "code", + "client_id": "test", + "state": state, + "redirect_uri": "foo://localhost", + "code_challenge": verifier, + }, + ) + response = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": flow.slug}), + ) + code: AuthorizationCode = AuthorizationCode.objects.filter(user=user).first() + self.assertJSONEqual( + response.content.decode(), + { + "component": "xak-flow-redirect", + "type": ChallengeTypes.REDIRECT.value, + "to": f"foo://localhost?code={code.code}&state={state}", + }, + ) + response = self.client.post( + reverse("authentik_providers_oauth2:token"), + data={ + "grant_type": GRANT_TYPE_AUTHORIZATION_CODE, + "code": code.code, + "code_verifier": verifier, + "redirect_uri": "foo://localhost", + }, + HTTP_AUTHORIZATION=f"Basic {header}", + ) + self.assertEqual(response.status_code, 200) diff --git a/authentik/providers/oauth2/views/token.py b/authentik/providers/oauth2/views/token.py index 146978fe1..0c0d7f4a8 100644 --- a/authentik/providers/oauth2/views/token.py +++ b/authentik/providers/oauth2/views/token.py @@ -222,7 +222,10 @@ class TokenParams: raise TokenError("invalid_grant") # Validate PKCE parameters. - if self.code_verifier: + if self.authorization_code.code_challenge: + # Authorization code had PKCE but we didn't get one + if not self.code_verifier: + raise TokenError("invalid_request") if self.authorization_code.code_challenge_method == PKCE_METHOD_S256: new_code_challenge = ( urlsafe_b64encode(sha256(self.code_verifier.encode("ascii")).digest()) diff --git a/website/docs/security/CVE-2023-48228.md b/website/docs/security/CVE-2023-48228.md new file mode 100644 index 000000000..dc0c73116 --- /dev/null +++ b/website/docs/security/CVE-2023-48228.md @@ -0,0 +1,61 @@ +# CVE-2023-48228 + +_Reported by [@Sapd](https://github.com/Sapd)_ + +## OAuth2: Insufficient PKCE check + +### Summary + +When initialising a OAuth2 flow with a `code_challenge` and `code_method` (thus requesting PKCE), the SSO provider (authentik) **must** check if there is a matching **and** existing `code_verifier` during the token step. + +authentik checks if the contents of code*verifier is matching \*\*\_ONLY*\*\* when it is provided. When it is left out completely, authentik simply accepts the token request with out it; even when the flow was started with a `code_challenge`. + +### Patches + +authentik 2023.8.5 and 2023.10.4 fix this issue. + +### Details + +The `code_verifier` is only checked when the user provides it. Note that in line 209 there is a check if the code_parameter is left out. But there is no check if the PKCE parameter simply was omitted WHEN the request was started with a `code_challenge_method`. + +This oversight likely did not stem from a coding error but from a misinterpretation of the RFC, where the backward compatibility section may be somewhat confusing. +https://datatracker.ietf.org/doc/html/rfc7636#section-4.5 +RFC7636 explicitly says in Section 4.5: + +> The "code_challenge_method" is bound to the Authorization Code when +> the Authorization Code is issued. That is the method that the token +> endpoint MUST use to verify the "code_verifier". + +Section 5, Compatibility + +> Server implementations of this specification MAY accept OAuth2.0 +> clients that do not implement this extension. If the "code_verifier" +> is not received from the client in the Authorization Request, servers +> supporting backwards compatibility revert to the OAuth 2.0 [[RFC6749](https://datatracker.ietf.org/doc/html/rfc6749)] +> protocol without this extension. + +Section 5, Compatibility, allows server implementations of this specification to accept OAuth 2.0 clients that do not implement this extension. However, if a `code_verifier` is not received from the client in the Authorization Request, servers that support backward compatibility should revert to the standard OAuth 2.0 protocol sans this extension (including all steps). + +It should be noted that this does not mean that the `code_verifier` check can be disregarded at any point if the initial request included `code_challenge` or `code_challenge_method`. Since Authentik supports PKCE, it **MUST** verify the code_verifier as described in Section 4.5 **AND** fail if it was not provided. + +Ofc verification can be skipped if the original authorization request did not invoke PKCE (no `code_challenge_method` and no `code_challenge`). + +Failure to check the `code_verifier` renders the PKCE flow ineffective. This vulnerability particularly endangers public or hybrid clients, as their `code` is deemed non-confidential. + +While not explicitly stated in the standard, it is generally recommended that OAuth2 flows accepting public clients should enforce PKCE - at least when redirecting to a non HTTPS URL (like http or an app link). + +### Impact + +The vulnerability poses a high risk to both public and hybrid clients. +When for example a mobile app implements oauth2, a malicious app can simply also register the same in-app-link (e.g. `mycoolapp://oauth2`) for the redirect callback URL, possibly receiving `code` during callback. With PKCE working, a malicious app would still receive a `code` but the `code` would not work without the correct unhashed code-challenge. +This is especially problematic, because authentik claims to support PKCE, and a developer can expect that the proper checks are in place. Note that app-links cannot be protected by HTTPS or similar mechanisms. + +Note also that this vulnerability poses a threat to confidential clients. Many confidential clients act as a proxy for OAuth2 API requests, typically from mobile apps or single-page applications. These proxies relay `code_challenge`, `code_challenge_method` (in auth request, which most libraries force and provide on default settings) and `code_verifier` in the token request unchanged and supplement the CLIENT_SECRET which only the relay knows. The relay can but does not have to check for an existing `code_verifier` as the standard does not define that PKCE can be ignored on confidential clients during the token request when the client requested PKCE during the authorization request. + +An attacker could potentially gain full access to the application. If the code grants access to an admin account, the confidentiality, integrity, and availability of that application are compromised. + +### For more information + +If you have any questions or comments about this advisory: + +- Email us at [security@goauthentik.io](mailto:security@goauthentik.io) diff --git a/website/sidebars.js b/website/sidebars.js index 310eeba17..fe1b6725e 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -407,6 +407,7 @@ const docsSidebar = { }, items: [ "security/policy", + "security/CVE-2023-48228", "security/GHSA-rjvp-29xq-f62w", "security/CVE-2023-39522", "security/CVE-2023-36456", From 2814a8e9513de2d196ae61c2373983030ed86aa9 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Tue, 21 Nov 2023 18:13:41 +0100 Subject: [PATCH 21/47] website/docs: add CVE-2023-48228 to release notes Signed-off-by: Jens Langhammer --- website/docs/releases/2023/v2023.10.md | 1 + website/docs/releases/2023/v2023.8.md | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/website/docs/releases/2023/v2023.10.md b/website/docs/releases/2023/v2023.10.md index 6adfbf0d4..a1f74470c 100644 --- a/website/docs/releases/2023/v2023.10.md +++ b/website/docs/releases/2023/v2023.10.md @@ -161,6 +161,7 @@ helm upgrade authentik authentik/authentik -f values.yaml --version ^2023.10 - providers/proxy: Fix duplicate cookies when using file system store. (cherry-pick #7541) (#7544) - providers/scim: fix missing schemas attribute for User and Group (cherry-pick #7477) (#7596) - root: specify node and python versions in respective config files, deduplicate in CI (#7620) +- security: fix [CVE-2023-48228](../../security/CVE-2023-48228.md), Reported by [@Sapd](https://github.com/Sapd) (#7666) - stages/email: use uuid for email confirmation token instead of username (cherry-pick #7581) (#7584) - web/admin: fix admins not able to delete MFA devices (#7660) diff --git a/website/docs/releases/2023/v2023.8.md b/website/docs/releases/2023/v2023.8.md index fc74e70e4..476a03caa 100644 --- a/website/docs/releases/2023/v2023.8.md +++ b/website/docs/releases/2023/v2023.8.md @@ -157,7 +157,11 @@ image: ## Fixed in 2023.8.4 -- \*: fix [GHSA-rjvp-29xq-f62w](../security/GHSA-rjvp-29xq-f62w), Reported by [@devSparkle](https://github.com/devSparkle) +- security: fix [GHSA-rjvp-29xq-f62w](../security/GHSA-rjvp-29xq-f62w), Reported by [@devSparkle](https://github.com/devSparkle) + +## Fixed in 2023.8.5 + +- security: fix [CVE-2023-48228](../../security/CVE-2023-48228.md), Reported by [@Sapd](https://github.com/Sapd) (#7666) ## API Changes From 18b2f489c0ff0b2abba26228ca4078f6a29fa4c8 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Tue, 21 Nov 2023 18:38:24 +0100 Subject: [PATCH 22/47] release: 2023.10.4 --- .bumpversion.cfg | 2 +- authentik/__init__.py | 2 +- docker-compose.yml | 4 ++-- internal/constants/constants.go | 2 +- pyproject.toml | 2 +- schema.yml | 2 +- web/src/common/constants.ts | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 6d7176b3c..f78e67f49 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 2023.10.3 +current_version = 2023.10.4 tag = True commit = True parse = (?P\d+)\.(?P\d+)\.(?P\d+) diff --git a/authentik/__init__.py b/authentik/__init__.py index 09916d0e2..fc368ceeb 100644 --- a/authentik/__init__.py +++ b/authentik/__init__.py @@ -2,7 +2,7 @@ from os import environ from typing import Optional -__version__ = "2023.10.3" +__version__ = "2023.10.4" ENV_GIT_HASH_KEY = "GIT_BUILD_HASH" diff --git a/docker-compose.yml b/docker-compose.yml index cb961c487..68e7530e7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,7 +32,7 @@ services: volumes: - redis:/data server: - image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.10.3} + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.10.4} restart: unless-stopped command: server environment: @@ -53,7 +53,7 @@ services: - postgresql - redis worker: - image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.10.3} + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.10.4} restart: unless-stopped command: worker environment: diff --git a/internal/constants/constants.go b/internal/constants/constants.go index a452599b7..fb12db690 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -29,4 +29,4 @@ func UserAgent() string { return fmt.Sprintf("authentik@%s", FullVersion()) } -const VERSION = "2023.10.3" +const VERSION = "2023.10.4" diff --git a/pyproject.toml b/pyproject.toml index 139c447aa..da0423827 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -113,7 +113,7 @@ filterwarnings = [ [tool.poetry] name = "authentik" -version = "2023.10.3" +version = "2023.10.4" description = "" authors = ["authentik Team "] diff --git a/schema.yml b/schema.yml index c83edbc15..5f0be7c2d 100644 --- a/schema.yml +++ b/schema.yml @@ -1,7 +1,7 @@ openapi: 3.0.3 info: title: authentik - version: 2023.10.3 + version: 2023.10.4 description: Making authentication simple. contact: email: hello@goauthentik.io diff --git a/web/src/common/constants.ts b/web/src/common/constants.ts index e5c7c3c65..459fc91a5 100644 --- a/web/src/common/constants.ts +++ b/web/src/common/constants.ts @@ -3,7 +3,7 @@ export const SUCCESS_CLASS = "pf-m-success"; export const ERROR_CLASS = "pf-m-danger"; export const PROGRESS_CLASS = "pf-m-in-progress"; export const CURRENT_CLASS = "pf-m-current"; -export const VERSION = "2023.10.3"; +export const VERSION = "2023.10.4"; export const TITLE_DEFAULT = "authentik"; export const ROUTE_SEPARATOR = ";"; From 39458a1ca5c2adfdf94f2eba3818e8c27b8e7786 Mon Sep 17 00:00:00 2001 From: "authentik-automation[bot]" <135050075+authentik-automation[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 19:32:00 +0100 Subject: [PATCH 23/47] web: bump API Client version (#7670) Signed-off-by: GitHub Co-authored-by: authentik-automation[bot] <135050075+authentik-automation[bot]@users.noreply.github.com> --- web/package-lock.json | 9 ++++----- web/package.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index e90dc247f..ce061adc3 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -15,10 +15,9 @@ "@codemirror/lang-xml": "^6.0.2", "@codemirror/legacy-modes": "^6.3.3", "@codemirror/theme-one-dark": "^6.1.2", - "@esbuild/linux-arm64": "^0.19.7", "@formatjs/intl-listformat": "^7.5.3", "@fortawesome/fontawesome-free": "^6.4.2", - "@goauthentik/api": "^2023.10.3-1700268969", + "@goauthentik/api": "^2023.10.4-1700591367", "@lit-labs/context": "^0.4.0", "@lit-labs/task": "^3.1.0", "@lit/localize": "^0.11.4", @@ -2924,9 +2923,9 @@ } }, "node_modules/@goauthentik/api": { - "version": "2023.10.3-1700268969", - "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2023.10.3-1700268969.tgz", - "integrity": "sha512-EwkNfFL8sgPzDRHQ+IlkYyFxlN9U79x3OaRgVR1GuEyKF2XXNm+ftdpqSmTSYeIrObEdOgvKItqKBGw5EYZXsg==" + "version": "2023.10.4-1700591367", + "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2023.10.4-1700591367.tgz", + "integrity": "sha512-ljC/SHH6ZgGC2qjvuA3gley8sRz9wVzr5FgRGKeqd1mi6G6TfnFYeA7tuuqgQc6WGN2MVMG17FnBraTI77Rl/A==" }, "node_modules/@hcaptcha/types": { "version": "1.0.3", diff --git a/web/package.json b/web/package.json index ccfb5e03a..35d1c524d 100644 --- a/web/package.json +++ b/web/package.json @@ -38,7 +38,7 @@ "@codemirror/theme-one-dark": "^6.1.2", "@formatjs/intl-listformat": "^7.5.3", "@fortawesome/fontawesome-free": "^6.4.2", - "@goauthentik/api": "^2023.10.3-1700268969", + "@goauthentik/api": "^2023.10.4-1700591367", "@lit-labs/context": "^0.4.0", "@lit-labs/task": "^3.1.0", "@lit/localize": "^0.11.4", From 86518ea825b971bf1651c61350e2629036970461 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 21:31:02 +0100 Subject: [PATCH 24/47] translate: Updates for file web/xliff/en.xlf in zh-Hans (#7665) Translate web/xliff/en.xlf in zh-Hans 100% translated source file: 'web/xliff/en.xlf' on 'zh-Hans'. Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- web/xliff/zh-Hans.xlf | 48 +++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/web/xliff/zh-Hans.xlf b/web/xliff/zh-Hans.xlf index 96bfb9808..f314f44a2 100644 --- a/web/xliff/zh-Hans.xlf +++ b/web/xliff/zh-Hans.xlf @@ -1,4 +1,4 @@ - + @@ -613,9 +613,9 @@ - The URL "" was not found. - 未找到 URL " - "。 + The URL "" was not found. + 未找到 URL " + "。 @@ -1057,8 +1057,8 @@ - To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. - 要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。 + To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. + 要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。 @@ -1799,8 +1799,8 @@ - Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". - 输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。 + Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". + 输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。 @@ -2988,8 +2988,8 @@ doesn't pass when either or both of the selected options are equal or above the - Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' - 包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...' + Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' + 包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...' @@ -3781,8 +3781,8 @@ doesn't pass when either or both of the selected options are equal or above the - When using an external logging solution for archiving, this can be set to "minutes=5". - 使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。 + When using an external logging solution for archiving, this can be set to "minutes=5". + 使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。 @@ -3791,8 +3791,8 @@ doesn't pass when either or both of the selected options are equal or above the - Format: "weeks=3;days=2;hours=3,seconds=2". - 格式:"weeks=3;days=2;hours=3,seconds=2"。 + Format: "weeks=3;days=2;hours=3,seconds=2". + 格式:"weeks=3;days=2;hours=3,seconds=2"。 @@ -3988,10 +3988,10 @@ doesn't pass when either or both of the selected options are equal or above the - Are you sure you want to update ""? + Are you sure you want to update ""? 您确定要更新 - " - " 吗? + " + " 吗? @@ -5077,7 +5077,7 @@ doesn't pass when either or both of the selected options are equal or above the - A "roaming" authenticator, like a YubiKey + A "roaming" authenticator, like a YubiKey 像 YubiKey 这样的“漫游”身份验证器 @@ -5412,10 +5412,10 @@ doesn't pass when either or both of the selected options are equal or above the - ("", of type ) + ("", of type ) - (" - ",类型为 + (" + ",类型为 @@ -5464,7 +5464,7 @@ doesn't pass when either or both of the selected options are equal or above the - If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. + If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. 如果设置时长大于 0,用户可以选择“保持登录”选项,这将使用户的会话延长此处设置的时间。 @@ -7978,7 +7978,7 @@ Bindings to groups/users are checked against the user of the event. 成功创建用户并添加到组 - This user will be added to the group "". + This user will be added to the group "". 此用户将会被添加到组 &quot;&quot;。 @@ -7991,4 +7991,4 @@ Bindings to groups/users are checked against the user of the event. - + \ No newline at end of file From b0c00d0e6c7b6ec87db561caa6a05440758e114f Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 21:31:17 +0100 Subject: [PATCH 25/47] translate: Updates for file web/xliff/en.xlf in fr (#7663) Translate web/xliff/en.xlf in fr 100% translated source file: 'web/xliff/en.xlf' on 'fr'. Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- web/xliff/fr.xlf | 75 +++++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/web/xliff/fr.xlf b/web/xliff/fr.xlf index eb5cbb2f1..fd335ca02 100644 --- a/web/xliff/fr.xlf +++ b/web/xliff/fr.xlf @@ -1,4 +1,4 @@ - + @@ -613,9 +613,9 @@ Il y a jour(s) - The URL "" was not found. - L'URL " - " n'a pas été trouvée. + The URL "" was not found. + L'URL " + " n'a pas été trouvée. @@ -1057,8 +1057,8 @@ Il y a jour(s) - To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. - Pour permettre n'importe quelle URI de redirection, définissez cette valeur sur ".*". Soyez conscient des possibles implications de sécurité que cela peut avoir. + To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. + Pour permettre n'importe quelle URI de redirection, définissez cette valeur sur ".*". Soyez conscient des possibles implications de sécurité que cela peut avoir. @@ -1630,7 +1630,7 @@ Il y a jour(s) Token to authenticate with. Currently only bearer authentication is supported. - Jeton d'authentification à utiliser. Actuellement, seule l'authentification "bearer authentication" est prise en charge. + Jeton d'authentification à utiliser. Actuellement, seule l'authentification "bearer authentication" est prise en charge. @@ -1798,8 +1798,8 @@ Il y a jour(s) - Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". - Entrez une URL complète, un chemin relatif ou utilisez 'fa://fa-test' pour utiliser l'icône Font Awesome "fa-test". + Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". + Entrez une URL complète, un chemin relatif ou utilisez 'fa://fa-test' pour utiliser l'icône Font Awesome "fa-test". @@ -2897,7 +2897,7 @@ doesn't pass when either or both of the selected options are equal or above the To use SSL instead, use 'ldaps://' and disable this option. - Pour utiliser SSL à la base, utilisez "ldaps://" et désactviez cette option. + Pour utiliser SSL à la base, utilisez "ldaps://" et désactviez cette option. @@ -2986,8 +2986,8 @@ doesn't pass when either or both of the selected options are equal or above the - Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' - Champ qui contient les membres d'un groupe. Si vous utilisez le champ "memberUid", la valeur est censée contenir un nom distinctif relatif, par exemple 'memberUid=un-utilisateur' au lieu de 'memberUid=cn=un-utilisateur,ou=groups,...' + Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' + Champ qui contient les membres d'un groupe. Si vous utilisez le champ "memberUid", la valeur est censée contenir un nom distinctif relatif, par exemple 'memberUid=un-utilisateur' au lieu de 'memberUid=cn=un-utilisateur,ou=groups,...' @@ -3282,7 +3282,7 @@ doesn't pass when either or both of the selected options are equal or above the Time offset when temporary users should be deleted. This only applies if your IDP uses the NameID Format 'transient', and the user doesn't log out manually. - Moment où les utilisateurs temporaires doivent être supprimés. Cela ne s'applique que si votre IDP utilise le format NameID "transient" et que l'utilisateur ne se déconnecte pas manuellement. + Moment où les utilisateurs temporaires doivent être supprimés. Cela ne s'applique que si votre IDP utilise le format NameID "transient" et que l'utilisateur ne se déconnecte pas manuellement. @@ -3450,7 +3450,7 @@ doesn't pass when either or both of the selected options are equal or above the Optionally set the 'FriendlyName' value of the Assertion attribute. - Indiquer la valeur "FriendlyName" de l'attribut d'assertion (optionnel) + Indiquer la valeur "FriendlyName" de l'attribut d'assertion (optionnel) @@ -3779,8 +3779,8 @@ doesn't pass when either or both of the selected options are equal or above the - When using an external logging solution for archiving, this can be set to "minutes=5". - En cas d'utilisation d'une solution de journalisation externe pour l'archivage, cette valeur peut être fixée à "minutes=5". + When using an external logging solution for archiving, this can be set to "minutes=5". + En cas d'utilisation d'une solution de journalisation externe pour l'archivage, cette valeur peut être fixée à "minutes=5". @@ -3789,8 +3789,8 @@ doesn't pass when either or both of the selected options are equal or above the - Format: "weeks=3;days=2;hours=3,seconds=2". - Format : "weeks=3;days=2;hours=3,seconds=2". + Format: "weeks=3;days=2;hours=3,seconds=2". + Format : "weeks=3;days=2;hours=3,seconds=2". @@ -3986,10 +3986,10 @@ doesn't pass when either or both of the selected options are equal or above the - Are you sure you want to update ""? + Are you sure you want to update ""? Êtes-vous sûr de vouloir mettre à jour - " - " ? + " + " ? @@ -5075,8 +5075,8 @@ doesn't pass when either or both of the selected options are equal or above the - A "roaming" authenticator, like a YubiKey - Un authentificateur "itinérant", comme une YubiKey + A "roaming" authenticator, like a YubiKey + Un authentificateur "itinérant", comme une YubiKey @@ -5401,7 +5401,7 @@ doesn't pass when either or both of the selected options are equal or above the Show arbitrary input fields to the user, for example during enrollment. Data is saved in the flow context under the 'prompt_data' variable. - Afficher des champs de saisie arbitraires à l'utilisateur, par exemple pendant l'inscription. Les données sont enregistrées dans le contexte du flux sous la variable "prompt_data". + Afficher des champs de saisie arbitraires à l'utilisateur, par exemple pendant l'inscription. Les données sont enregistrées dans le contexte du flux sous la variable "prompt_data". @@ -5410,10 +5410,10 @@ doesn't pass when either or both of the selected options are equal or above the - ("", of type ) + ("", of type ) - (" - ", de type + (" + ", de type ) @@ -5462,8 +5462,8 @@ doesn't pass when either or both of the selected options are equal or above the - If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. - Si défini à une durée supérieure à 0, l'utilisateur aura la possibilité de choisir de "rester connecté", ce qui prolongera sa session jusqu'à la durée spécifiée ici. + If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. + Si défini à une durée supérieure à 0, l'utilisateur aura la possibilité de choisir de "rester connecté", ce qui prolongera sa session jusqu'à la durée spécifiée ici. @@ -6247,7 +6247,7 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti Can be in the format of 'unix://' when connecting to a local docker daemon, using 'ssh://' to connect via SSH, or 'https://:2376' when connecting to a remote system. - Peut être au format "unix://" pour une connexion à un service docker local, "ssh://" pour une connexion via SSH, ou "https://:2376" pour une connexion à un système distant. + Peut être au format "unix://" pour une connexion à un service docker local, "ssh://" pour une connexion via SSH, ou "https://:2376" pour une connexion à un système distant. @@ -7554,7 +7554,7 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti Use this provider with nginx's auth_request or traefik's forwardAuth. Each application/domain needs its own provider. Additionally, on each domain, /outpost.goauthentik.io must be routed to the outpost (when using a managed outpost, this is done for you). - Utilisez ce fournisseur avec l'option "auth_request" de Nginx ou "forwardAuth" de Traefik. Chaque application/domaine a besoin de son propre fournisseur. De plus, sur chaque domaine, "/outpost.goauthentik.io" doit être routé vers le poste avancé (lorsque vous utilisez un poste avancé géré, cela est fait pour vous). + Utilisez ce fournisseur avec l'option "auth_request" de Nginx ou "forwardAuth" de Traefik. Chaque application/domaine a besoin de son propre fournisseur. De plus, sur chaque domaine, "/outpost.goauthentik.io" doit être routé vers le poste avancé (lorsque vous utilisez un poste avancé géré, cela est fait pour vous). Default relay state @@ -7953,31 +7953,40 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti 0: Too guessable: risky password. (guesses &lt; 10^3) + 0: Trop prévisible: mot de passe risqué. (essais &lt; 10^3) 1: Very guessable: protection from throttled online attacks. (guesses &lt; 10^6) + 1: Très prévisible: protection contre les attaques en ligne limitées. (essais &lt; 10^6) 2: Somewhat guessable: protection from unthrottled online attacks. (guesses &lt; 10^8) + 2: Quelque peu prévisible: protection contre les attaques en ligne non limitées. (essais &lt; 10^8) 3: Safely unguessable: moderate protection from offline slow-hash scenario. (guesses &lt; 10^10) + 3: Sûrement imprévisible: protection modérée contre les attaques de hash-lent hors ligne. (essais &lt; 10^10) 4: Very unguessable: strong protection from offline slow-hash scenario. (guesses &gt;= 10^10) + 4: Très imprévisible: forte protection control les attaques de hash-lent hors ligne. (essais &gt;= 10^10) Successfully created user and added to group + Utilisateur créé et ajouté au groupe avec succès - This user will be added to the group "". + This user will be added to the group "". + Cet utilisateur sera ajouté au groupe &quot;&quot;. Pretend user exists + Faire comme si l'utilisateur existe When enabled, the stage will always accept the given user identifier and continue. + Lorsqu'activé, l'étape acceptera toujours l'identifiant utilisateur donné et continuera. - + \ No newline at end of file From 68d266a480bdf615e88c9e86cdec057c6086c741 Mon Sep 17 00:00:00 2001 From: Jens L Date: Tue, 21 Nov 2023 21:38:30 +0100 Subject: [PATCH 26/47] core: fix sources get icon naming (#7674) * core: rename source's get_icon to clearer signify it being a property Signed-off-by: Jens Langhammer * remove deprecated vscode settings Signed-off-by: Jens Langhammer --------- Signed-off-by: Jens Langhammer --- .vscode/extensions.json | 1 + .vscode/settings.json | 2 -- authentik/core/models.py | 2 +- authentik/sources/oauth/models.py | 6 +++--- authentik/sources/plex/models.py | 4 ++-- authentik/sources/saml/models.py | 4 ++-- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 625e45489..dd280d682 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -14,6 +14,7 @@ "ms-python.pylint", "ms-python.python", "ms-python.vscode-pylance", + "ms-python.black-formatter", "redhat.vscode-yaml", "Tobermory.es6-string-html", "unifiedjs.vscode-mdx", diff --git a/.vscode/settings.json b/.vscode/settings.json index e674c02b5..218800d1e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,10 +19,8 @@ "slo", "scim", ], - "python.linting.pylintEnabled": true, "todo-tree.tree.showCountsInTree": true, "todo-tree.tree.showBadges": true, - "python.formatting.provider": "black", "yaml.customTags": [ "!Find sequence", "!KeyOf scalar", diff --git a/authentik/core/models.py b/authentik/core/models.py index 5365ef693..7d11af3d6 100644 --- a/authentik/core/models.py +++ b/authentik/core/models.py @@ -517,7 +517,7 @@ class Source(ManagedModel, SerializerModel, PolicyBindingModel): objects = InheritanceManager() @property - def get_icon(self) -> Optional[str]: + def icon_url(self) -> Optional[str]: """Get the URL to the Icon. If the name is /static or starts with http it is returned as-is""" if not self.icon: diff --git a/authentik/sources/oauth/models.py b/authentik/sources/oauth/models.py index 6b871fe55..7acbb9223 100644 --- a/authentik/sources/oauth/models.py +++ b/authentik/sources/oauth/models.py @@ -74,7 +74,7 @@ class OAuthSource(Source): def ui_login_button(self, request: HttpRequest) -> UILoginButton: provider_type = self.source_type provider = provider_type() - icon = self.get_icon + icon = self.icon_url if not icon: icon = provider.icon_url() return UILoginButton( @@ -85,7 +85,7 @@ class OAuthSource(Source): def ui_user_settings(self) -> Optional[UserSettingSerializer]: provider_type = self.source_type - icon = self.get_icon + icon = self.icon_url if not icon: icon = provider_type().icon_url() return UserSettingSerializer( @@ -232,7 +232,7 @@ class UserOAuthSourceConnection(UserSourceConnection): access_token = models.TextField(blank=True, null=True, default=None) @property - def serializer(self) -> Serializer: + def serializer(self) -> type[Serializer]: from authentik.sources.oauth.api.source_connection import ( UserOAuthSourceConnectionSerializer, ) diff --git a/authentik/sources/plex/models.py b/authentik/sources/plex/models.py index 06d46dc67..e20c809a3 100644 --- a/authentik/sources/plex/models.py +++ b/authentik/sources/plex/models.py @@ -62,7 +62,7 @@ class PlexSource(Source): return PlexSourceSerializer def ui_login_button(self, request: HttpRequest) -> UILoginButton: - icon = self.get_icon + icon = self.icon_url if not icon: icon = static("authentik/sources/plex.svg") return UILoginButton( @@ -79,7 +79,7 @@ class PlexSource(Source): ) def ui_user_settings(self) -> Optional[UserSettingSerializer]: - icon = self.get_icon + icon = self.icon_url if not icon: icon = static("authentik/sources/plex.svg") return UserSettingSerializer( diff --git a/authentik/sources/saml/models.py b/authentik/sources/saml/models.py index 5f01b034e..6c24abf8d 100644 --- a/authentik/sources/saml/models.py +++ b/authentik/sources/saml/models.py @@ -200,11 +200,11 @@ class SAMLSource(Source): } ), name=self.name, - icon_url=self.get_icon, + icon_url=self.icon_url, ) def ui_user_settings(self) -> Optional[UserSettingSerializer]: - icon = self.get_icon + icon = self.icon_url if not icon: icon = static(f"authentik/sources/{self.slug}.svg") return UserSettingSerializer( From 6f8d21620bb50755a1d86b256e0cf0e5052ca426 Mon Sep 17 00:00:00 2001 From: Jens L Date: Tue, 21 Nov 2023 23:50:43 +0100 Subject: [PATCH 27/47] tests: fix flaky tests (#7676) * tests: fix flaky tests Signed-off-by: Jens Langhammer * make test-from-stable use actual latest version Signed-off-by: Jens Langhammer * fix checkout Signed-off-by: Jens Langhammer * remove hardcoded seed Signed-off-by: Jens Langhammer * ignore tests for now i guess idk Signed-off-by: Jens Langhammer --------- Signed-off-by: Jens Langhammer --- .github/workflows/ci-main.yml | 4 ++-- pyproject.toml | 2 +- tests/e2e/test_provider_oauth2_github.py | 4 ++-- tests/e2e/test_provider_oauth2_grafana.py | 4 ++-- tests/e2e/test_source_oauth.py | 4 ++-- tests/e2e/test_source_saml.py | 4 ++-- tests/integration/test_outpost_docker.py | 4 ++-- tests/integration/test_proxy_docker.py | 4 ++-- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml index 2eebe378f..9fa00800b 100644 --- a/.github/workflows/ci-main.yml +++ b/.github/workflows/ci-main.yml @@ -62,7 +62,7 @@ jobs: cp authentik/lib/default.yml local.env.yml cp -R .github .. cp -R scripts .. - git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) + git checkout version/$(python -c "from authentik import __version__; print(__version__)") rm -rf .github/ scripts/ mv ../.github ../scripts . - name: Setup authentik env (ensure stable deps are installed) @@ -117,7 +117,7 @@ jobs: uses: helm/kind-action@v1.8.0 - name: run integration run: | - poetry run coverage run manage.py test --randomly-seed=2100196988 tests/integration + poetry run coverage run manage.py test tests/integration poetry run coverage xml - if: ${{ always() }} uses: codecov/codecov-action@v3 diff --git a/pyproject.toml b/pyproject.toml index da0423827..ff8230e70 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -97,7 +97,7 @@ const-rgx = "[a-zA-Z0-9_]{1,40}$" ignored-modules = ["binascii", "socket", "zlib"] generated-members = ["xmlsec.constants.*", "xmlsec.tree.*", "xmlsec.template.*"] -ignore = "migrations" +ignore = ["migrations", "tests"] max-attributes = 12 max-branches = 20 diff --git a/tests/e2e/test_provider_oauth2_github.py b/tests/e2e/test_provider_oauth2_github.py index 49f640093..7df12137b 100644 --- a/tests/e2e/test_provider_oauth2_github.py +++ b/tests/e2e/test_provider_oauth2_github.py @@ -36,8 +36,8 @@ class TestProviderOAuth2Github(SeleniumTestCase): "auto_remove": True, "healthcheck": Healthcheck( test=["CMD", "wget", "--spider", "http://localhost:3000"], - interval=5 * 100 * 1000000, - start_period=1 * 100 * 1000000, + interval=5 * 1_000 * 1_000_000, + start_period=1 * 1_000 * 1_000_000, ), "environment": { "GF_AUTH_GITHUB_ENABLED": "true", diff --git a/tests/e2e/test_provider_oauth2_grafana.py b/tests/e2e/test_provider_oauth2_grafana.py index d096a3483..fdb75e1b9 100644 --- a/tests/e2e/test_provider_oauth2_grafana.py +++ b/tests/e2e/test_provider_oauth2_grafana.py @@ -42,8 +42,8 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): "auto_remove": True, "healthcheck": Healthcheck( test=["CMD", "wget", "--spider", "http://localhost:3000"], - interval=5 * 100 * 1000000, - start_period=1 * 100 * 1000000, + interval=5 * 1_000 * 1_000_000, + start_period=1 * 1_000 * 1_000_000, ), "environment": { "GF_AUTH_GENERIC_OAUTH_ENABLED": "true", diff --git a/tests/e2e/test_source_oauth.py b/tests/e2e/test_source_oauth.py index 40f7e1ce7..c7f0fd881 100644 --- a/tests/e2e/test_source_oauth.py +++ b/tests/e2e/test_source_oauth.py @@ -113,8 +113,8 @@ class TestSourceOAuth2(SeleniumTestCase): "command": "dex serve /config.yml", "healthcheck": Healthcheck( test=["CMD", "wget", "--spider", "http://localhost:5556/dex/healthz"], - interval=5 * 100 * 1000000, - start_period=1 * 100 * 1000000, + interval=5 * 1_000 * 1_000_000, + start_period=1 * 1_000 * 1_000_000, ), "volumes": {str(Path(CONFIG_PATH).absolute()): {"bind": "/config.yml", "mode": "ro"}}, } diff --git a/tests/e2e/test_source_saml.py b/tests/e2e/test_source_saml.py index 2d5a7efa9..0921335b7 100644 --- a/tests/e2e/test_source_saml.py +++ b/tests/e2e/test_source_saml.py @@ -83,8 +83,8 @@ class TestSourceSAML(SeleniumTestCase): "auto_remove": True, "healthcheck": Healthcheck( test=["CMD", "curl", "http://localhost:8080"], - interval=5 * 100 * 1000000, - start_period=1 * 100 * 1000000, + interval=5 * 1_000 * 1_000_000, + start_period=1 * 1_000 * 1_000_000, ), "environment": { "SIMPLESAMLPHP_SP_ENTITY_ID": "entity-id", diff --git a/tests/integration/test_outpost_docker.py b/tests/integration/test_outpost_docker.py index 19b00b333..99daf1915 100644 --- a/tests/integration/test_outpost_docker.py +++ b/tests/integration/test_outpost_docker.py @@ -35,8 +35,8 @@ class OutpostDockerTests(DockerTestCase, ChannelsLiveServerTestCase): privileged=True, healthcheck=Healthcheck( test=["CMD", "docker", "info"], - interval=5 * 100 * 1000000, - start_period=5 * 100 * 1000000, + interval=5 * 1_000 * 1_000_000, + start_period=5 * 1_000 * 1_000_000, ), environment={"DOCKER_TLS_CERTDIR": "/ssl"}, volumes={ diff --git a/tests/integration/test_proxy_docker.py b/tests/integration/test_proxy_docker.py index 7b4e11ba8..7ba027cdd 100644 --- a/tests/integration/test_proxy_docker.py +++ b/tests/integration/test_proxy_docker.py @@ -35,8 +35,8 @@ class TestProxyDocker(DockerTestCase, ChannelsLiveServerTestCase): privileged=True, healthcheck=Healthcheck( test=["CMD", "docker", "info"], - interval=5 * 100 * 1000000, - start_period=5 * 100 * 1000000, + interval=5 * 1_000 * 1_000_000, + start_period=5 * 1_000 * 1_000_000, ), environment={"DOCKER_TLS_CERTDIR": "/ssl"}, volumes={ From 00bcda4426d0e6b98e73050370362810724964a4 Mon Sep 17 00:00:00 2001 From: Tana M Berry Date: Tue, 21 Nov 2023 19:03:42 -0600 Subject: [PATCH 28/47] website/blog: Blog on security (#7671) * draft for PR * fixed head-levels * tweaks * new title * renamed with new title * change author * add icon * add icon again * add iamge * image fights * change frontmatter * remove image * Optimised images with calibre/image-actions * tweaks * fix icon Signed-off-by: Jens Langhammer --------- Signed-off-by: Jens Langhammer Co-authored-by: Tana Berry Co-authored-by: authentik-automation[bot] <135050075+authentik-automation[bot]@users.noreply.github.com> Co-authored-by: Jens Langhammer --- .../icon.png | Bin 0 -> 7670 bytes .../item.md | 152 ++++++++++++++++++ 2 files changed, 152 insertions(+) create mode 100644 website/blog/2023-11-22-building-an-oss-security-stack/icon.png create mode 100644 website/blog/2023-11-22-building-an-oss-security-stack/item.md diff --git a/website/blog/2023-11-22-building-an-oss-security-stack/icon.png b/website/blog/2023-11-22-building-an-oss-security-stack/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..94aa045e835121e163e43eea4f14801188c5f793 GIT binary patch literal 7670 zcmdTpc{o&WxCf!E$yOAaU)e@fvSlq)QmBxv$dbsK>@p)+GGr@DVkl8$--Qv`*GOb- zWXV2^ZJ3#J&l&xm=icZ3b)VExL@cPYR066wRN9%&2&+yWif8`1LJ7NUc zp8*@~ri|zqxPBO|@aswmQcz?q`c8aKo^dnGqq4kz$R$W*{Q&qQQ1T z6oWW49s6Na>$t^KInyDL=b;@3O*L#LzmA5Uj#nDEv%8thtz#{koP28_`||?PH*JLh z4EM+x-x;XL&B?XD56Slb`S-!-RacsUUE5EJl<%yFzIuO8V|h}FwO8}YGr`k_h*Nqh zOnvxOH~Y?0XC{u?;)!-?76Q?!gN9?>@i}?2%*o>QCc^{QUqlBlym>UIg>{MsYh4R5 z-%SrSEK#H^csm+K_=xKgSsaDuvCFeF93La5LhOXp1eyDfF_pHqmMFG1s;`%bF_EU!D(p#DVTdRp+x zcSoh4bqI{7c6Pp2)Vj;%5ga6Wwy5e|XB;Mn)E%28;0B6OAu*dW++8}i*z{u^bj&!` z*83zmITfbSpw;&2Z)>;L*{;RTT|*f>!+ns)ZX0lOCQ10?mE2E{Ix0q#ihkbJUNg@U zF8!WAIn~l~fxz2nkePa93O|!`#XswK>D(<8Utmv%pO$UaezJ4f8Px{cXA;KK4u?3m z7uZ#~s&0EFnC>{;I+WGBHno3w+i;0a7CY6^7eo=v+h+JCsVB7# zEZiGy>Xi4>-cJRs5ygGx^eC5{hJE48i%Ovh;omLj)$FSq4x3X0aX}{$*I%M#c0+;4 z-)*=n(q}WZGVvC<`|3^ZZ0b+go_^jMp1;q+VZOmMK$_(m zu@n~`S+|d8PB^)tP(TcH8msm>n7|Yp{^@R9Vsi88_INO~>fPj*tvijEwTyS|E*Pop za%Y{5T&zQ_c?MtBYMxHq=lyt4*ygNeV|(WyMay>4g)w04aj2*a#k)V-|Bt>_^Eq(j zWvHkgl{Nd=avj8uNCZBYthZc$_+hsXB_u6trDfac5%0k68Mre+?5_*OgkQTTeXcCy zMLY;OfRDzQ^@s4*%u$vh$fvFR8d)}oQvnRxTB3_v^!akN_fBG|L;}G_l#vt5`;#FbPio8#8!U zb{4MWzESJ;#_?s){$9m#2z~ce{oNhxb-&83Y*5NKiw*)&{<)yNcDG-M`nwS|P8LIq zv+d9OOvZ+-2yh_IQe2tdsQ&mGW@jYt|MZIp;#6BzmKu4t5!IH$&dBAUlYeFdzncga z$n$7rp8V-BAG`}9`kH5f;%?3qawUknw=B+ZLCfqFg2LO6{edJ-k(i!_mr6jLoVOsb)%7U&nzJr~C%fZwuiCRe?6ShEmVaifx(Gc=F!i4B6UmPAaU0~Dr z%&Nh)6B-m=x^kg@-LxAh{jpTbEp+c-_!VUw%i+6AQW_6W-N%1qf@YKeC-{|Ed(Fn_ zL=eth^`C(UBnoILyI(8wJ>#!i-Snjuz!d&yu!fcy>7W&#+KQA0hE-!{1V%k)>BX1c zRRIL{9E2pCF|(%|4q*J{9EygA-1#)<4szW9{H<F**@Q zARh=v0_lJ_z=Eb1VcC181L5@WI}Cmc>^)h~;{Q%dhd?5KhvBI-Y}!;B6$n!tcqai2 zT%7H7q*gMocu#_4J@c_ftbF0Z$*J3cjGkT@!-t7r6giLA=>w`FA?<{;kukcpd!z*vuj^G$eCR7hR( zkyGDb{oyNe?dt@zQ;OjSn?eXZxt04nE(lRS&3mO~{^h3;jNR;zk_eSK{hZb6v>xlD zm=N4Yzf`fveBjvxw9d#PskK^_=2j}V?S*oU5ZE3q+ z;3p(7$%2M&0Mc<*r-)oiJ#ngAdGf#x%7`^plNT})Y^WiuJ|!joaZH&0wQWRg)_iyV z?Z5i`3eqEwm4&fm3!{~Nwq8noAEQXs`1uHGLN-5&hjkepY{Ml{iUPUn&cEkGKY2U+ zh8zPe8@%rIcf_d4$#Sc=z>cgxx4`j7PhN#&O9Cu38|YE(^ZiZ8kI5N)r$(ESEDa$^ zU|GxpaOz5dW-_Fe#w`<6_V9U+f64Xc$D`8J>=X}I`|z64kPE;bs-etL>GG%f zSYr=Nd%ICXO;fRF8FljL!Oo)H+ zLU|#@rV{NEMf!2Gn6Tttef~^qV_0rgmF6B59(0=u$u(8!0kmMI(;-@*Q?cpUax%B-C#`Y(ojsM!Xd8;3lrsA%Z zNX7B1Z{Vh=LN6ZcN8(It&u&HDS9O048JH6UhrgKc>uyP-eX%r;Z|MIbpimIGa#Jxqp1_5O_mj zM@$C_+p*OCJoe>3s1MZ-QC4qRZg^A9P^{;?G~$`->ksa^nDMG@#b#lptjmK3ViWSx z`nxMzUTu1TPN*JPE)L_pfXrI`rGp(DJsn;$=R%RR)l2NUZhM}pGX!t*>W#oi+cb?pZ{8{*!( zRy?{*;dW8{m|^*4M2+k)K38=$PNm{!@No+{^7KXIA;?$JH=w%5`JY58hTw6lA}@jv z8p;`-XdVma{>U7_DHk=HWog#6wX5J&X1maNAy}oR;7jo2rsM*-(C7eUQH>I@(oktI zajZ9W*!jnuU52igS)Vx~rc#YXVVkoHpKH?<@FA>VZdtx5?ylahSazBp1B?_XGR9)? zgs3AtbIkLoCg+_+FSa)X3_I1NH#<)c4$jvk9%b1Q(dB364^eBV437tx{B*KT@JW%1 zs~4bU`hWu#Nu-hL6-!)|(TH2midaB)2E$ZG|F+0Ucz^p;d{#Hjbc-XeI#sO9Sy`HI zPWH85HVO(s(~q!v-~H>qgQ=S+=LNAJ_*c=P9C5jKXc-`VhC#F@d*+y*j(LUMK#Knr z@@@f93c`2`MArIPSJliUg5;Yi6|>et^5=+}7v@^>jA41_m8~M&Z1T21N>Udgr(Iay zJss+nB#fnCJ&`!u+F2ypQ>{||@LeWXiq}$?D#8VmBB*H6UE&DqV?uiF*t6iYFq%A3 zWCT*$+cAPZpC_XR8XAI~?!feoO@Kb(kEBG9T98*=<2*ad`C?>hxSBJe36WgkNh9%7 zM>0hn9?_;E02c>G>1qDxEHRprTz~A!*H3+tckOAC8vEWE6j#&b z2&ndBrgzp>n$dRS?8rYhZWWWY4woq0Vk$?Bks7NI5&R z@Ae0M5Z)k9n=)TdsL7g1_4CYSG2{x&$OyLiR*QnyR-h&zRi$WC;fGz@$E6`J-9)Ol z&zdm2ZHca&C@&#6aU$eM) zyc}`}c(=eU&17+eH@WOQ-b)f(LMnLhd#y*9I+sOP=cnY?w3aUv+bgIdGH!SBDU=IO z567Dq5TA*9xh21sNs3r1=~XKIva-v$vg=yl=Mi0ah~_I%xxj7t!g$x`)01bopR8e% zO}X`ZQGHWE2KVtw#v*W_c&t+xE#8A%qa^Yo7X4SE@I!9|gDs-g4sjJ)1tdSfd`{_I_ zhQO~CZo_!@7K@1?4w;66D2n`0k`T0cGhcQCEUcP>U{&Np^_LZD`YqMU#lY(eFBa_a zIb2fIhdJY;nxEuhD$Rc+>-$z1EcyxEIJePppNd&_RNE$(6nP|6hNrj>-b4;7V@%g9 z1#w_%n0{0vgIh<1YWG9JM%@E+A&TtCF?(PjUQLf_5a4% zjQrsX@Ok%&5w5pv^5*l^MVB*EE)^YQGF_wIpgy%Kt19t|$xeLns7R((z!xe4jrsPH z6F!^BB^^FSfdY8`z54Lbb9H^ayHvl4$#DMN@?F0H*W~P;v-`EQ=&V#yJY%Wf!ugvC zQvq#+wSY3nt9h~O3R#!gEXxGdgDlI>v#S17tC@7eGU`HY6C=8)mbZ}fHLN*xBg)9^ zgu*&;eG-2lz_Ngi4ON-l9(QZk^wH+p7HP$#NxQD3Jzi{ig9Sq`f?xq`?$ASt-$*TX z{FV8x_O`W35l$xU*Mt)JJf2Ygh0x-cfXZ_nk+c|}FlVxhrA|@Ct#1IZjEh+2*2bsW zpDhd20_PZ9Z!v0UK^5Di&WPKK5c3ISG%o;kb4i(p2)leMlvHy3?d4q~-n~iFzG&$1 zhdpAdmXGkH?$7MNuD7{1O${AMI;awcVp12gEkxR&pz<&7!I5;Zw_xikV#0983H6+0 z2>^j$sW%+sFxip3>(9Ts{ED0qMAL|yYGt*iKFP6E;Y2rKxY5vWyg6`nk1<7+&Q$TA z+ww~@@7?|*{hS$p5z$|O|X z<-q$iQ&nC*V&ZQykn-e_IxFZwy3JhC^b%QFfco7B>Lt|G%zNn_NyOcP?E`GS=b3W2 z>7}WVriiUr-(`T(o4Wo44}ZTe1@WXK4P?Wek>ar93oLJMxRqHmYa|G(0NJ5Vl2)c@1_4d4yq16MlnxDqycE(iNKVk+YU54s`i{gG5*i&?7-WYmW@Sx_rnv<5LB3YgSnr-$mK^jC}``j3#& z37lz#ji=#S*UbBO6 zG}gry4g=r(?9#|J_uwY7R0?GUy^k}(FFwpbX%Qgx#>+=Vjhf>!K05jYuxoqB#teyT^;)*I(au1=GQFs1o4 zYEK-tyzf^an|bj)8YNSgBXygjSA%zN@U@wShCrhJnpW>E9|1f(!oCJiD>H>cpwlOh z7(#uV@sY)j)9rnUg3#9zmim_}Xm*dwO$@X0jhc{slD2>6DeT%J*)|`F zgbWG@!BcHfJNoJ_o?obU85KRo8bkHF1)!wNQvX%xA#{}gNm{WmV_i~H3&w8M2er46 zNLG$@$@&I|uoi|n^U&w82=`1Qu~hw{Vk^cPez-?Uswd|gF?zm4O9k|4zy~j)2<^%u zxT7`Z{qBwwNl`s6WTMQ@59_@+LBeMD6u(XHrZYNGaLxjDr!%Oz9_BpJ54)1}Wbzj~ zA!>IFOr`mpf>Fw#db{IO(W@E?N@_y3%4`BO8qyU0Ha_G50mGR&BAXx#>U@-8wC|rI z#`ud2mm!G`$6MU+92C0G`(-~HXZcxuX$2pc(ZKcM+IdeQ8^$lE!p9(iDIT`U(>D*B>V00JXPX&HToqxe>@#`BtdTYcTKnudQK9`YHzB3w^>;*( zjLp^ip2<#rsqQF*VUC?j#s{vUC0X^Om>0W36Ci4Z4KFDO-wa;*ctd*m_hQY#Tjv?B zL5eBXFN$MgOpl#@e$uK#=Q5N}xq@N%P>%xnN$q@>*C)25sY7s48pt(%kaIpLBMXvP z#b7clbjwI^=0&lj)m5qcb6Gxa6IS)GjQ(xifeCN!KxJGJ!fH652|AgVg}zH5q0)<` zUNtTxH%I0Ar+rC}?D*2SIiYhSAbo?;>b43ASN%Fg`Ku(l+=6}RQQx=Kdemh>EIS-a z7v-P>x}3X;ZR26(d_hu5Wu5&!wCGo2%7s%CD`ZB+EQLJ>}6fCZS%a$6{NXD#%_vLdS?s;6Woh z5M)EBB`;KETLg`QTpk6e>sktjwc%inHrNrHK-|1%npFY)22aqogmqD(Q)KYkqz;&I zoDnU71SSM|+Wb3Iqzr4T!iG{bJnXDomSdp)X~iBN)yN-yZP=L}nkNnnLSGQbXLTbS zZTz08?*F8B9M;(`c5~9;ymw5ta5U%(yMTeYi}_BDOKjcAGy>L?x1?p*rhYr&X}>;I zzmfR>BxysR>^^OuEhsZbfuyGQ*>PK=m$qFx-$Dlw{AfZ{(%3(p-AU$&6Ro5?yn7M3 wBQ=o?^B8yKZe>zWnoA!1G4%iOk9i(s=;WvyFxr;*0IQ*+t*4cL(dy}c03P`3QUCw| literal 0 HcmV?d00001 diff --git a/website/blog/2023-11-22-building-an-oss-security-stack/item.md b/website/blog/2023-11-22-building-an-oss-security-stack/item.md new file mode 100644 index 000000000..c14397acb --- /dev/null +++ b/website/blog/2023-11-22-building-an-oss-security-stack/item.md @@ -0,0 +1,152 @@ +--- +title: Building an OSS security stack with Loki, Wazuh, and CodeQL to save $100k +description: “You don’t have to spend a lot developing a good security posture from the beginning. Here’s how we built Authentik Security’s stack with mostly free and open source tools.” +slug: 2023-11-22-how-we-saved-over-100k +authors: + - name: authentik Security Team + url: https://goauthentik.io + image_url: ./icon.png +tags: + - authentik + - FOSS + - security budget + - security stack + - Red Team + - Blue Team + - SBOM + - hardening + - penetration testing + - monitoring + - SSO + - insider threats + - certifications + - security + - identity provider + - authentication +hide_table_of_contents: false +--- + +> **_authentik is an open source Identity Provider that unifies your identity needs into a single platform, replacing Okta, Active Directory, and auth0. Authentik Security is a [public benefit company](https://github.com/OpenCoreVentures/ocv-public-benefit-company/blob/main/ocv-public-benefit-company-charter.md) building on top of the open source project._** + +--- + +There was an article recently about nearly 20 well-known startups’ first 10 hires—security engineers didn’t feature at all. Our third hire at Authentik Security was a security engineer so we might be biased, but even startups without the resources for a full-time security hire should have someone on your founding team wearing the security hat, so you get started on the right foot. + +As security departments are cost centers (not revenue generators) it’s not unusual for startups to take a tightwad mentality with security. The good news is that you don’t need a big budget to have a good security posture. There are plenty of free and open source tools at your disposal, and a lot of what makes good security is actually organizational practices—many of which don’t cost a thing to implement. + +> We estimate that using mostly non-commercial security tools saves us approximately $100,000 annually, and the end-result is a robust stack of security tools and processes. + +Here’s how we built out our security stack and processes using mostly free and open source software (FOSS). + + + +## Blue Team efforts + +Security efforts can mostly be grouped into two categories: Blue Team and Red Team. Your Blue Team is defensive, meaning guarding against potential attacks. The Red Team is offensive, actively seeking for weaknesses and potential vulnerabilities. Startups with scant resources should focus on Blue activities first. + +### Visibility: Do you know what is happening in your environment? + +The first step is to get eyes into your environment through SIEM (Security Information Event Monitoring). A security person’s worst nightmare is things happening without them knowing about it. You can’t react to an attack that you don’t know is happening! You need a tool that monitors your team’s device logs and flags suspicious activity. + +We’re an all-remote and globally distributed team, which makes monitoring both harder and more important; team members can log in from anywhere, at any time, and we don’t have a central headquarters to house a secure server for backups, for example. We needed something that’s available worldwide and compatible with our endpoint device architectures, cloud infrastructure, and SaaS solutions. + +We settled on [Wazuh](https://wazuh.com/platform/siem/), which has been around for a long time, is open source and well supported. We’ll acknowledge that it is a bit harder to deploy than some other, proprietary solutions. This can often be the case with FOSS, and it’s a tradeoff you have to accept when you’re not paying for something. + +If you don’t want to use something that’s tricky to stand up, you can of course pay for a tool with which you’ll get customer support and all those good things. Your first priority should be picking something that fits your company’s needs. + +We also use Grafana’s [Loki](https://grafana.com/oss/loki/) (which is free for self-hosted environments) for certain types of log aggregation. Logging is still a staple for security awareness, so do your research for the best logging and analysis solution. + +The general idea behind having good visibility is to gather as many data points as possible while minimizing ongoing maintenance overhead. Make no mistake, this step is not only crucial, but never-ending. Companies are always standing up and tearing down infrastructure, on- and off-boarding employees, etc. Without visibility and monitoring of these activities, it’s easy to leave something exposed to opportunistic attackers. + +### Understand your dependencies: SBOMs for the win + +If you’re a small, early-stage startup, you’re more likely to get caught in a large-scale, net-casting campaign than in any sophisticated, targeted attacks. That means it’s critical to have awareness of your dependencies, so you can quickly understand if a critical vulnerability affects any part of your software supply chain. When the [Log4Shell vulnerability](https://theconversation.com/what-is-log4j-a-cybersecurity-expert-explains-the-latest-internet-vulnerability-how-bad-it-is-and-whats-at-stake-173896) surfaced in December 2021, the companies that were aware of their dependencies were able to mitigate quickly and close the attack window. + +This is where a Software Bill of Materials (SBOM) comes in handy. Your SBOM isn’t just a checkbox exercise for auditing and compliance requirements. We use OWASP’s [Dependency Track](https://dependencytrack.org/) (also free and open source) to ingest our SBOM and help identify parts of the codebase that may be at risk from new vulnerabilities. We also use [Semgrep](https://semgrep.dev/) for code scanning with pattern-based recognition. It’s open source and free to run locally. + +It’s also worth mentioning that if your company’s product is open source, or you have an open core model (a proprietary product built on open source), you may qualify for access to free tooling from GitHub for your open source project: we use [Dependabot](https://github.com/dependabot) for automated dependency updates and [CodeQL](https://codeql.github.com/) for code analysis to identify vulnerable code. + +### Hardening + +Now that you’ve got visibility into your environment, your next step is hardening: reducing or eliminating potential threats. We can group these efforts into two categories: _organizational security_ and _product security_. + +#### Organizational security + +Raise your hand if you’ve worked at a small startup and have seen the following: + +- Shared credentials +- Spreadsheets for IT/People teams to create all logins for new employees on the day they join +- Team members introducing new software/tooling at whim + +It can be a free-for-all at small companies, and while the risk is low at that scale, it can be much harder to introduce more rigorous processes later. The team will be resistant because you’ve added friction where there wasn’t before. + +Ideally, you want to introduce secure-by-default practices into your team and company early on: + +- Multi-factor authentication +- Single sign on +- Just-in-time permissions +- Evaluation of new tooling + +In the case of open source software, you can inspect the code to check how data is being handled, how secure the databases are, what exact kind of data is being transferred, saved, etc. Another team best practice is around vetting the tools and dependencies that the team uses; even if you don’t have time or resources to do a full vet of every new piece of software your coworkers want to use, at least check for certifications. + +Here at Authentik Security, we tackle a lot of risk factors with one shot: [authentik](https://goauthentik.io/). By using SSO, we can ensure every new employee has the correct credentials for accessing the appropriate workplace apps, and that every departing employee immediately has access revoked with one click. We can also quarantine suspect users, essentially cutting off access to all systems quickly. Ironically, one of the most common initial access points is ex-employee credentials. + +These all contribute to ‘defense in depth’—adding layers of security and complications to make it as hard or annoying as possible for attackers to get around. These practices typically cost $0 to implement and will set you up for good security posture as you grow. + +#### Product security + +This layer is really anything to do with securing the actual product you’re building (not your company). This typically means getting third-party penetration testing (if you don’t have a dedicated Red Team—more on this below) and remediating vulnerabilities you’ve surfaced through your monitoring and dependency tracking efforts. + +## Red Team efforts + +As we mentioned above, the Red Team is offensive, meaning they attack the company (physically or remotely) to poke holes in your own defenses before the real bad actors can. + +### Internal penetration testing + +Now that we have implemented monitoring, and hardened a few things, it’s time to test how well we did. This is where we take the attacker’s point of view to try to break in and test our own controls over our systems, to expose weaknesses. Just recently we discovered that Authentik had a bunch of domains that we’d left open, unmonitored. It’s a constant, iterative loop of unearthing holes via your internal penetration testing (also called pentesting or white box testing) and finding ways to plug them. + +There are a lot of tools to choose from here (everyone likes breaking into things!). You’re never done choosing your stack—the threat landscape evolves constantly and so does the tooling to keep up with it. You’ll want to pay attention to new developments by keeping an eye on discussions on Twitter, Reddit, Hacker News, etc. When a new way to attack something develops (and it always will), someone will go create the special automation tooling to address that threat. (Then your attackers are going to go grab that tool and see if they can hack their way in. It’s a constant wheel.) + +At Authentik we use the [Kali Linux](https://www.kali.org/) distribution, which has a host of hacking tools on it, for penetration testing. It’s well known within the security world and is open source and free to use. + +Testing can be a tough one for small startups, because you likely won’t have a dedicated Red Team and commercial pentesting doesn’t come cheap. If you can save on your tooling though, that can help to free up resources for contracting out this type of work. The main goal you’re after is trying to identify the low-hanging fruit that inexperienced actors may exploit. + +### A note on insider threats + +[Okta has been in the news](https://goauthentik.io/blog/2023-10-23-another-okta-breach) (again!) after its second major breach in two years. A team member [unknowingly uploaded a file containing sensitive information to Okta’s support management system](https://www.crn.com/news/security/okta-faces-potential-for-reputational-risk-after-second-major-breach-in-two-years-analysts), highlighting the risk of insider threats. + +Your employees are a risk factor—whether through malice, ignorance, or carelessness. It’s not unheard of for someone to accidentally save a password publicly to the company’s cloud. It can be an honest mistake, but it’s very-low hanging fruit for a bad actor just watching your cloud assets. + +With the rise of Ransomware as a Service, there’s also always the possibility that a disgruntled employee can act as an initial access broker: either accidentally or purposefully giving their credentials or their access to someone else. It’s obviously not possible to prevent all possible compromises, so it’s important that your tooling is set up to alert you to unusual activity and your processes are in place so you can react quickly. + +## Do you really need certifications? + +Apart from using security certifications like ISO/IEC 27001 and SOC 2 to evaluate vendors that make the software you are using, certifications can vouch for your organizational security, which might be important to your customers, depending on what your product does and who your customers are. + +For us at Authentik Security, [our source code](https://github.com/goauthentik/authentik) is available for inspection, but that doesn’t tell people anything about how we handle emails, payment information, and so on. That’s where a third-party certification comes in: an auditor verifies your security practices, which in turn signals to your customers that you can be trusted. + +Certifications can be expensive though, and as a cash-strapped startup, you may not want or be able to invest in a certification. However there’s nothing stopping you from ingraining some of those good security practices in your company’s culture anyway. That way, you’re already building a strong security posture and when the time comes, you’re not rushing to implement processes that feel unnatural to the team. + +Again, it comes back to getting off on the right foot so that you’re not spending 10-20x the amount of money later in people time and resources to course correct later. + +## Security doesn’t have to be a big-company luxury + +People imagine that large corporations have security all figured out, but a large security department doesn’t guarantee that they have any idea what other teams are doing. As a small company, you do have one thing going for you: it’s much easier to have eyes on everything that’s happening. You’re more tightly knit and you can encompass more with fewer resources. + +If you talk to a lot of security people, their happy place is when no one is doing anything. Then your job’s pretty easy. Unfortunately, if you want your company to succeed, you need your developers to develop, your salespeople to talk to prospects, your CEO to meet with whomever they need to meet with. These are standard operations that all put the company at risk, but it’s your job to mitigate that risk the best you can. + +Our security engineer likes to say they work alongside teams, not blocking them. If security says it’s their job to make sure there are no vulnerabilities, and it’s the development team’s job to make new features, how do you get these two sides to work together? + +Realistically, everything has vulnerabilities. You’re never going to have a completely safe, locked-down environment. So, you partner with other teams and find a compromise. Establish a minimum threshold people have to meet to keep going. If you’re too inflexible, those teams won’t want to work with you and they won’t tell you when they’re making new virtual machines or writing new code. + +## Repercussions + +You don’t need to be a security company for these things to matter. This advice applies no matter what type of product you’re building. + +[Some 422 million individuals were impacted by data compromises in 2022](https://www.statista.com/statistics/273550/data-breaches-recorded-in-the-united-states-by-number-of-breaches-and-records-exposed/). As consumers we have almost become numb to news of new breaches. A company gets breached, they offer some sort of credit protection, cyber insurance might go up a bit, but life goes on. + +If you’re still not motivated to invest in your security posture (or trying to win over teammates who prioritize feature shipping over everything), consider the [case of SolarWinds](https://www.sec.gov/news/press-release/2023-227). The company appears to have exaggerated their internal security posture, leading to an indictment from the SEC. + +So not only is security important, it could actually keep you out of jail. + +_What’s in your security stack? Let us know in the comments, or send us an email at hello@goauthentik.io!_ From 9f6d8255bcd788e559bcff99c6b00836639690c9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:58:15 +0100 Subject: [PATCH 29/47] core: bump goauthentik.io/api/v3 from 3.2023103.4 to 3.2023104.1 (#7687) Bumps [goauthentik.io/api/v3](https://github.com/goauthentik/client-go) from 3.2023103.4 to 3.2023104.1. - [Release notes](https://github.com/goauthentik/client-go/releases) - [Commits](https://github.com/goauthentik/client-go/compare/v3.2023103.4...v3.2023104.1) --- updated-dependencies: - dependency-name: goauthentik.io/api/v3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e6dc5e2e9..866913ce9 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.8.4 - goauthentik.io/api/v3 v3.2023103.4 + goauthentik.io/api/v3 v3.2023104.1 golang.org/x/exp v0.0.0-20230210204819-062eb4c674ab golang.org/x/oauth2 v0.14.0 golang.org/x/sync v0.5.0 diff --git a/go.sum b/go.sum index b0d84e974..28425c27c 100644 --- a/go.sum +++ b/go.sum @@ -358,8 +358,8 @@ go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyK go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= -goauthentik.io/api/v3 v3.2023103.4 h1:dysNzRSbZC2NYeIyk3x5o3kUSsz+Y2VhtfcnzRe8Wkk= -goauthentik.io/api/v3 v3.2023103.4/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw= +goauthentik.io/api/v3 v3.2023104.1 h1:cvAsgoKP/fmO4fzifx0OyICknauFeyN88C4Z1LdWXDs= +goauthentik.io/api/v3 v3.2023104.1/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= From b29f4fd06ef08e41a1868772fb9fa89fbfb5f7c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:58:28 +0100 Subject: [PATCH 30/47] website: bump react-tooltip from 5.23.0 to 5.24.0 in /website (#7686) Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.23.0 to 5.24.0. - [Release notes](https://github.com/ReactTooltip/react-tooltip/releases) - [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md) - [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.23.0...v5.24.0) --- updated-dependencies: - dependency-name: react-tooltip dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 8 ++++---- website/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index 0c7239845..b86f17d8e 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -26,7 +26,7 @@ "react-dom": "^18.2.0", "react-feather": "^2.0.10", "react-toggle": "^4.1.3", - "react-tooltip": "^5.23.0", + "react-tooltip": "^5.24.0", "remark-github": "^12.0.0" }, "devDependencies": { @@ -14238,9 +14238,9 @@ } }, "node_modules/react-tooltip": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.23.0.tgz", - "integrity": "sha512-MYqn6n+Af8NHHDL3zrSqzVSoK2LLqTNFp30CuuHCYlBEf+q88FWfg+8pSO+0GnDvOa5ZaryNDq9sAVQeNhnsgw==", + "version": "5.24.0", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.24.0.tgz", + "integrity": "sha512-HjstgpOrUwP4eN6mHU4EThpbxVuKO5SvqumRt1aAcPq0ya+pIVVxlwltndtdIIMBJ7w3jnN05vNfcfh2sxE2mQ==", "dependencies": { "@floating-ui/dom": "^1.0.0", "classnames": "^2.3.0" diff --git a/website/package.json b/website/package.json index b28d61f1e..49ea4cbb1 100644 --- a/website/package.json +++ b/website/package.json @@ -32,7 +32,7 @@ "react-dom": "^18.2.0", "react-feather": "^2.0.10", "react-toggle": "^4.1.3", - "react-tooltip": "^5.23.0", + "react-tooltip": "^5.24.0", "react": "^18.2.0", "remark-github": "^12.0.0" }, From a9daba621d2c1375999dddf8d4febb4c7b47d171 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:58:38 +0100 Subject: [PATCH 31/47] web: bump the wdio group in /tests/wdio with 2 updates (#7684) Bumps the wdio group in /tests/wdio with 2 updates: [@wdio/cli](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-cli) and [@wdio/local-runner](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-local-runner). Updates `@wdio/cli` from 8.23.3 to 8.23.4 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.23.4/packages/wdio-cli) Updates `@wdio/local-runner` from 8.23.3 to 8.23.4 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.23.4/packages/wdio-local-runner) --- updated-dependencies: - dependency-name: "@wdio/cli" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: wdio - dependency-name: "@wdio/local-runner" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: wdio ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/wdio/package-lock.json | 46 ++++++++++++++++++------------------ tests/wdio/package.json | 4 ++-- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/tests/wdio/package-lock.json b/tests/wdio/package-lock.json index bcb1e33c4..a376489d1 100644 --- a/tests/wdio/package-lock.json +++ b/tests/wdio/package-lock.json @@ -9,8 +9,8 @@ "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", - "@wdio/cli": "^8.23.3", - "@wdio/local-runner": "^8.23.3", + "@wdio/cli": "^8.23.4", + "@wdio/local-runner": "^8.23.4", "@wdio/mocha-framework": "^8.23.1", "@wdio/spec-reporter": "^8.23.1", "eslint": "^8.54.0", @@ -1141,14 +1141,14 @@ "dev": true }, "node_modules/@wdio/cli": { - "version": "8.23.3", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.23.3.tgz", - "integrity": "sha512-iD4s8994u/nR1hZBcVY6yWBKqcyfVbwOtbjEcPoti4KcH5hs2u0ec0CpAh841NDx24fimDuPSh1znOsbrzvELw==", + "version": "8.23.4", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.23.4.tgz", + "integrity": "sha512-ceEALiV4zhljyrOfWInOe68VgeAgBgYu3KvFxZxsZv5RM8psZ2yvuDf77MTno9zIeqDYSBjVIFjq1UQOkt9Hgg==", "dev": true, "dependencies": { "@types/node": "^20.1.1", "@wdio/config": "8.23.1", - "@wdio/globals": "8.23.3", + "@wdio/globals": "8.23.4", "@wdio/logger": "8.16.17", "@wdio/protocols": "8.23.0", "@wdio/types": "8.23.1", @@ -1168,7 +1168,7 @@ "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", "recursive-readdir": "^2.2.3", - "webdriverio": "8.23.3", + "webdriverio": "8.23.4", "yargs": "^17.7.2" }, "bin": { @@ -1209,28 +1209,28 @@ } }, "node_modules/@wdio/globals": { - "version": "8.23.3", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.23.3.tgz", - "integrity": "sha512-pmsR82CvbQu2zonwsIblsvNv+wOL0hCm4eJmCzLEMQ9WBB36kO28im8B/itsh/XKzqvQ1aidhCUdSSHFwFwZsQ==", + "version": "8.23.4", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.23.4.tgz", + "integrity": "sha512-Sxw1HxDexfz1WTUsVekUysbi7VZ7mjbWZ4YfU12TraBi9azuoah7pEOvBp8Rwfsz6kuLl3ac1UsdPYo8ar6/uw==", "dev": true, "engines": { "node": "^16.13 || >=18" }, "optionalDependencies": { "expect-webdriverio": "^4.5.1", - "webdriverio": "8.23.3" + "webdriverio": "8.23.4" } }, "node_modules/@wdio/local-runner": { - "version": "8.23.3", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.23.3.tgz", - "integrity": "sha512-ELiD+zWR7PxvV+kIjnlIh2pUZ2dWSld7c6XeKff/e+YLnhc3AG7+/b3ml+JhLrtQqFt6X43V9IV9lfbNRiHWoQ==", + "version": "8.23.4", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.23.4.tgz", + "integrity": "sha512-c2R8Xe4uAlLP1ESODNuElz8kFRdnfvsURQAh1FBLVCgl7Yfyj6QF2ei25C6CThtAUoCdrTSULgp7SWBdQIRwpg==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@wdio/logger": "8.16.17", "@wdio/repl": "8.23.1", - "@wdio/runner": "8.23.3", + "@wdio/runner": "8.23.4", "@wdio/types": "8.23.1", "async-exit-hook": "^2.0.1", "split2": "^4.1.0", @@ -1319,14 +1319,14 @@ } }, "node_modules/@wdio/runner": { - "version": "8.23.3", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.23.3.tgz", - "integrity": "sha512-vbSNfEvgMcDdWgBoRSo2GRiV8ccsh5QJYP8b5FfRoHBAvC4OZV6ZVx9Xzh7QsEfSaXXA9G/vaUGX0PPrS0gmgQ==", + "version": "8.23.4", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.23.4.tgz", + "integrity": "sha512-rbOluDjnYAUwc7WnsKi7yLNcHn7/uFUdc3oFEB46nwyNQpVSGaduMbyvzVR6cc38DVAuVyFBmT41GM+sRqA/PA==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@wdio/config": "8.23.1", - "@wdio/globals": "8.23.3", + "@wdio/globals": "8.23.4", "@wdio/logger": "8.16.17", "@wdio/types": "8.23.1", "@wdio/utils": "8.23.1", @@ -1334,7 +1334,7 @@ "expect-webdriverio": "^4.5.1", "gaze": "^1.1.2", "webdriver": "8.23.1", - "webdriverio": "8.23.3" + "webdriverio": "8.23.4" }, "engines": { "node": "^16.13 || >=18" @@ -8674,9 +8674,9 @@ } }, "node_modules/webdriverio": { - "version": "8.23.3", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.23.3.tgz", - "integrity": "sha512-kH+GAQrC6GfrF0LDX5odqn3CVvVrdIeTAYsQtji9tmb2YTJMIx57GNL1NIXhV4MFtalcEc9UjhZCwekLMemEOg==", + "version": "8.23.4", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.23.4.tgz", + "integrity": "sha512-tlma460ls27zv5Z+WHZG99SJrgcIZi4jsFrZeCCPZTtspOvXoqImL7g6orJTOJXVMhqptkFZN16zHONuAoXV5Q==", "dev": true, "dependencies": { "@types/node": "^20.1.0", diff --git a/tests/wdio/package.json b/tests/wdio/package.json index 0a93cd6cb..ed0b0f351 100644 --- a/tests/wdio/package.json +++ b/tests/wdio/package.json @@ -6,8 +6,8 @@ "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", - "@wdio/cli": "^8.23.3", - "@wdio/local-runner": "^8.23.3", + "@wdio/cli": "^8.23.4", + "@wdio/local-runner": "^8.23.4", "@wdio/mocha-framework": "^8.23.1", "@wdio/spec-reporter": "^8.23.1", "eslint": "^8.54.0", From c2e6f83d9756181b57a450689d2cf08fa8ccb71c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:58:46 +0100 Subject: [PATCH 32/47] web: bump @types/codemirror from 5.60.14 to 5.60.15 in /web (#7682) Bumps [@types/codemirror](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/codemirror) from 5.60.14 to 5.60.15. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/codemirror) --- updated-dependencies: - dependency-name: "@types/codemirror" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 8 ++++---- web/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index ce061adc3..0c47654bf 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -68,7 +68,7 @@ "@storybook/web-components-vite": "^7.5.3", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/chart.js": "^2.9.41", - "@types/codemirror": "5.60.14", + "@types/codemirror": "5.60.15", "@types/grecaptcha": "^3.0.7", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", @@ -10129,9 +10129,9 @@ } }, "node_modules/@types/codemirror": { - "version": "5.60.14", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.14.tgz", - "integrity": "sha512-Gs+9yVSe7ceqhY7SJ6YUpU20aVnj/E2wjYHPWyntSD2ayr204xgPtVWyEp+8ARZjteEYVLJ/rVnHtdSCPbfYFQ==", + "version": "5.60.15", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz", + "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==", "dev": true, "dependencies": { "@types/tern": "*" diff --git a/web/package.json b/web/package.json index 35d1c524d..043baa1bb 100644 --- a/web/package.json +++ b/web/package.json @@ -89,7 +89,7 @@ "@storybook/web-components-vite": "^7.5.3", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/chart.js": "^2.9.41", - "@types/codemirror": "5.60.14", + "@types/codemirror": "5.60.15", "@types/grecaptcha": "^3.0.7", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", From c695ba91f9528c41337b085a47573861a69c5988 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:58:56 +0100 Subject: [PATCH 33/47] web: bump rollup from 4.5.0 to 4.5.1 in /web (#7680) Bumps [rollup](https://github.com/rollup/rollup) from 4.5.0 to 4.5.1. - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v4.5.0...v4.5.1) --- updated-dependencies: - dependency-name: rollup dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 104 +++++++++++++++++++++--------------------- web/package.json | 2 +- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 0c47654bf..d41db304d 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -88,7 +88,7 @@ "pyright": "^1.1.336", "react": "^18.2.0", "react-dom": "^18.2.0", - "rollup": "^4.5.0", + "rollup": "^4.5.1", "rollup-plugin-copy": "^3.5.0", "rollup-plugin-cssimport": "^1.0.3", "rollup-plugin-postcss-lit": "^2.1.0", @@ -4592,9 +4592,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.5.0.tgz", - "integrity": "sha512-OINaBGY+Wc++U0rdr7BLuFClxcoWaVW3vQYqmQq6B3bqQ/2olkaoz+K8+af/Mmka/C2yN5j+L9scBkv4BtKsDA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.5.1.tgz", + "integrity": "sha512-YaN43wTyEBaMqLDYeze+gQ4ZrW5RbTEGtT5o1GVDkhpdNcsLTnLRcLccvwy3E9wiDKWg9RIhuoy3JQKDRBfaZA==", "cpu": [ "arm" ], @@ -4605,9 +4605,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.5.0.tgz", - "integrity": "sha512-UdMf1pOQc4ZmUA/NTmKhgJTBimbSKnhPS2zJqucqFyBRFPnPDtwA8MzrGNTjDeQbIAWfpJVAlxejw+/lQyBK/w==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.5.1.tgz", + "integrity": "sha512-n1bX+LCGlQVuPlCofO0zOKe1b2XkFozAVRoczT+yxWZPGnkEAKTTYVOGZz8N4sKuBnKMxDbfhUsB1uwYdup/sw==", "cpu": [ "arm64" ], @@ -4618,9 +4618,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.5.0.tgz", - "integrity": "sha512-L0/CA5p/idVKI+c9PcAPGorH6CwXn6+J0Ys7Gg1axCbTPgI8MeMlhA6fLM9fK+ssFhqogMHFC8HDvZuetOii7w==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.5.1.tgz", + "integrity": "sha512-QqJBumdvfBqBBmyGHlKxje+iowZwrHna7pokj/Go3dV1PJekSKfmjKrjKQ/e6ESTGhkfPNLq3VXdYLAc+UtAQw==", "cpu": [ "arm64" ], @@ -4631,9 +4631,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.5.0.tgz", - "integrity": "sha512-QZCbVqU26mNlLn8zi/XDDquNmvcr4ON5FYAHQQsyhrHx8q+sQi/6xduoznYXwk/KmKIXG5dLfR0CvY+NAWpFYQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.5.1.tgz", + "integrity": "sha512-RrkDNkR/P5AEQSPkxQPmd2ri8WTjSl0RYmuFOiEABkEY/FSg0a4riihWQGKDJ4LnV9gigWZlTMx2DtFGzUrYQw==", "cpu": [ "x64" ], @@ -4644,9 +4644,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.5.0.tgz", - "integrity": "sha512-VpSQ+xm93AeV33QbYslgf44wc5eJGYfYitlQzAi3OObu9iwrGXEnmu5S3ilkqE3Pr/FkgOiJKV/2p0ewf4Hrtg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.5.1.tgz", + "integrity": "sha512-ZFPxvUZmE+fkB/8D9y/SWl/XaDzNSaxd1TJUSE27XAKlRpQ2VNce/86bGd9mEUgL3qrvjJ9XTGwoX0BrJkYK/A==", "cpu": [ "arm" ], @@ -4657,9 +4657,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.5.0.tgz", - "integrity": "sha512-OrEyIfpxSsMal44JpEVx9AEcGpdBQG1ZuWISAanaQTSMeStBW+oHWwOkoqR54bw3x8heP8gBOyoJiGg+fLY8qQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.5.1.tgz", + "integrity": "sha512-FEuAjzVIld5WVhu+M2OewLmjmbXWd3q7Zcx+Rwy4QObQCqfblriDMMS7p7+pwgjZoo9BLkP3wa9uglQXzsB9ww==", "cpu": [ "arm64" ], @@ -4670,9 +4670,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.5.0.tgz", - "integrity": "sha512-1H7wBbQuE6igQdxMSTjtFfD+DGAudcYWhp106z/9zBA8OQhsJRnemO4XGavdzHpGhRtRxbgmUGdO3YQgrWf2RA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.5.1.tgz", + "integrity": "sha512-f5Gs8WQixqGRtI0Iq/cMqvFYmgFzMinuJO24KRfnv7Ohi/HQclwrBCYkzQu1XfLEEt3DZyvveq9HWo4bLJf1Lw==", "cpu": [ "arm64" ], @@ -4683,9 +4683,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.5.0.tgz", - "integrity": "sha512-FVyFI13tXw5aE65sZdBpNjPVIi4Q5mARnL/39UIkxvSgRAIqCo5sCpCELk0JtXHGee2owZz5aNLbWNfBHzr71Q==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.5.1.tgz", + "integrity": "sha512-CWPkPGrFfN2vj3mw+S7A/4ZaU3rTV7AkXUr08W9lNP+UzOvKLVf34tWCqrKrfwQ0NTk5GFqUr2XGpeR2p6R4gw==", "cpu": [ "x64" ], @@ -4696,9 +4696,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.5.0.tgz", - "integrity": "sha512-eBPYl2sLpH/o8qbSz6vPwWlDyThnQjJfcDOGFbNjmjb44XKC1F5dQfakOsADRVrXCNzM6ZsSIPDG5dc6HHLNFg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.5.1.tgz", + "integrity": "sha512-ZRETMFA0uVukUC9u31Ed1nx++29073goCxZtmZARwk5aF/ltuENaeTtRVsSQzFlzdd4J6L3qUm+EW8cbGt0CKQ==", "cpu": [ "x64" ], @@ -4709,9 +4709,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.5.0.tgz", - "integrity": "sha512-xaOHIfLOZypoQ5U2I6rEaugS4IYtTgP030xzvrBf5js7p9WI9wik07iHmsKaej8Z83ZDxN5GyypfoyKV5O5TJA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.5.1.tgz", + "integrity": "sha512-ihqfNJNb2XtoZMSCPeoo0cYMgU04ksyFIoOw5S0JUVbOhafLot+KD82vpKXOurE2+9o/awrqIxku9MRR9hozHQ==", "cpu": [ "arm64" ], @@ -4722,9 +4722,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.5.0.tgz", - "integrity": "sha512-Al6quztQUrHwcOoU2TuFblUQ5L+/AmPBXFR6dUvyo4nRj2yQRK0WIUaGMF/uwKulvRcXkpHe3k9A8Vf93VDktA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.5.1.tgz", + "integrity": "sha512-zK9MRpC8946lQ9ypFn4gLpdwr5a01aQ/odiIJeL9EbgZDMgbZjjT/XzTqJvDfTmnE1kHdbG20sAeNlpc91/wbg==", "cpu": [ "ia32" ], @@ -4735,9 +4735,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.5.0.tgz", - "integrity": "sha512-8kdW+brNhI/NzJ4fxDufuJUjepzINqJKLGHuxyAtpPG9bMbn8P5mtaCcbOm0EzLJ+atg+kF9dwg8jpclkVqx5w==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.5.1.tgz", + "integrity": "sha512-5I3Nz4Sb9TYOtkRwlH0ow+BhMH2vnh38tZ4J4mggE48M/YyJyp/0sPSxhw1UeS1+oBgQ8q7maFtSeKpeRJu41Q==", "cpu": [ "x64" ], @@ -19170,9 +19170,9 @@ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" }, "node_modules/rollup": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.5.0.tgz", - "integrity": "sha512-41xsWhzxqjMDASCxH5ibw1mXk+3c4TNI2UjKbLxe6iEzrSQnqOzmmK8/3mufCPbzHNJ2e04Fc1ddI35hHy+8zg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.5.1.tgz", + "integrity": "sha512-0EQribZoPKpb5z1NW/QYm3XSR//Xr8BeEXU49Lc/mQmpmVVG5jPUVrpc2iptup/0WMrY9mzas0fxH+TjYvG2CA==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -19182,18 +19182,18 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.5.0", - "@rollup/rollup-android-arm64": "4.5.0", - "@rollup/rollup-darwin-arm64": "4.5.0", - "@rollup/rollup-darwin-x64": "4.5.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.5.0", - "@rollup/rollup-linux-arm64-gnu": "4.5.0", - "@rollup/rollup-linux-arm64-musl": "4.5.0", - "@rollup/rollup-linux-x64-gnu": "4.5.0", - "@rollup/rollup-linux-x64-musl": "4.5.0", - "@rollup/rollup-win32-arm64-msvc": "4.5.0", - "@rollup/rollup-win32-ia32-msvc": "4.5.0", - "@rollup/rollup-win32-x64-msvc": "4.5.0", + "@rollup/rollup-android-arm-eabi": "4.5.1", + "@rollup/rollup-android-arm64": "4.5.1", + "@rollup/rollup-darwin-arm64": "4.5.1", + "@rollup/rollup-darwin-x64": "4.5.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.5.1", + "@rollup/rollup-linux-arm64-gnu": "4.5.1", + "@rollup/rollup-linux-arm64-musl": "4.5.1", + "@rollup/rollup-linux-x64-gnu": "4.5.1", + "@rollup/rollup-linux-x64-musl": "4.5.1", + "@rollup/rollup-win32-arm64-msvc": "4.5.1", + "@rollup/rollup-win32-ia32-msvc": "4.5.1", + "@rollup/rollup-win32-x64-msvc": "4.5.1", "fsevents": "~2.3.2" } }, diff --git a/web/package.json b/web/package.json index 043baa1bb..d690b07b1 100644 --- a/web/package.json +++ b/web/package.json @@ -109,7 +109,7 @@ "pyright": "^1.1.336", "react": "^18.2.0", "react-dom": "^18.2.0", - "rollup": "^4.5.0", + "rollup": "^4.5.1", "rollup-plugin-copy": "^3.5.0", "rollup-plugin-cssimport": "^1.0.3", "rollup-plugin-postcss-lit": "^2.1.0", From 1173bcea7bddd4b515cdcd4f8e794bdb55e4855c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:59:09 +0100 Subject: [PATCH 34/47] web: bump the sentry group in /web with 2 updates (#7679) Bumps the sentry group in /web with 2 updates: [@sentry/browser](https://github.com/getsentry/sentry-javascript) and [@sentry/tracing](https://github.com/getsentry/sentry-javascript). Updates `@sentry/browser` from 7.81.0 to 7.81.1 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.81.0...7.81.1) Updates `@sentry/tracing` from 7.81.0 to 7.81.1 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.81.0...7.81.1) --- updated-dependencies: - dependency-name: "@sentry/browser" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: sentry - dependency-name: "@sentry/tracing" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: sentry ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 78 +++++++++++++++++++++---------------------- web/package.json | 4 +-- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index d41db304d..4d7825293 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -24,8 +24,8 @@ "@open-wc/lit-helpers": "^0.6.0", "@patternfly/elements": "^2.4.0", "@patternfly/patternfly": "^4.224.2", - "@sentry/browser": "^7.81.0", - "@sentry/tracing": "^7.81.0", + "@sentry/browser": "^7.81.1", + "@sentry/tracing": "^7.81.1", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "chart.js": "^4.4.0", @@ -4748,84 +4748,84 @@ ] }, "node_modules/@sentry-internal/tracing": { - "version": "7.81.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.81.0.tgz", - "integrity": "sha512-mc3tdOEvAE6kaCvT3BpMwCgfTT2yfXjWpC7g+3N8U/yuQEmQSCDZA/ut7EkzU0DyhG3t8HzT0c+CAG3HtilEAQ==", + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.81.1.tgz", + "integrity": "sha512-E5xm27xrLXL10knH2EWDQsQYh5nb4SxxZzJ3sJwDGG9XGKzBdlp20UUhKqx00wixooVX9uCj3e4Jg8SvNB1hKg==", "dependencies": { - "@sentry/core": "7.81.0", - "@sentry/types": "7.81.0", - "@sentry/utils": "7.81.0" + "@sentry/core": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.81.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.81.0.tgz", - "integrity": "sha512-/6xsdSeZspq7+LARg6Gt0KMUQRf6nZcuA20X9Y28uJqyZFYoXBnxG3+JJcxycxleEJRci20gjBwOtM157anUJA==", + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.81.1.tgz", + "integrity": "sha512-DNtS7bZEnFPKVoGazKs5wHoWC0FwsOFOOMNeDvEfouUqKKbjO7+RDHbr7H6Bo83zX4qmZWRBf8V+3n3YPIiJFw==", "dependencies": { - "@sentry-internal/tracing": "7.81.0", - "@sentry/core": "7.81.0", - "@sentry/replay": "7.81.0", - "@sentry/types": "7.81.0", - "@sentry/utils": "7.81.0" + "@sentry-internal/tracing": "7.81.1", + "@sentry/core": "7.81.1", + "@sentry/replay": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.81.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.81.0.tgz", - "integrity": "sha512-FCAKlqo9Z6fku69bkahw1AN+eBfAgRgOL1RpBLZgyG7YBW12vtSkHb5SDvZZTkm541Fo3hhepUTLtX0qmpA4yw==", + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.81.1.tgz", + "integrity": "sha512-tU37yAmckOGCw/moWKSwekSCWWJP15O6luIq+u7wal22hE88F3Vc5Avo8SeF3upnPR+4ejaOFH+BJTr6bgrs6Q==", "dependencies": { - "@sentry/types": "7.81.0", - "@sentry/utils": "7.81.0" + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay": { - "version": "7.81.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.81.0.tgz", - "integrity": "sha512-kJRWjEzby1015Ds5TTNNVe9EkzfwPfPcM06ycba+DIXPJ2LiaSXvH3OU0s2HEJ9Vo/+jcpFMlODXFF/wrYIn9w==", + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.81.1.tgz", + "integrity": "sha512-4ueT0C4bYjngN/9p0fEYH10dTMLovHyk9HxJ6zSTgePvGVexhg+cSEHXisoBDwHeRZVnbIvsVM0NA7rmEDXJJw==", "dependencies": { - "@sentry-internal/tracing": "7.81.0", - "@sentry/core": "7.81.0", - "@sentry/types": "7.81.0", - "@sentry/utils": "7.81.0" + "@sentry-internal/tracing": "7.81.1", + "@sentry/core": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/tracing": { - "version": "7.81.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.81.0.tgz", - "integrity": "sha512-3QRusk7AZzbNWuPalqSCQCPAEJ9L167txYUkL5x3Y+YK4gZt3/bNovoVNDaQ06XmIYL9ENXVw1hbdk0DIgirpw==", + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.81.1.tgz", + "integrity": "sha512-of9WMu0XgEBl9onTEk8SMaxj4BUadaUvHH96T1OpRMjdyuCM/3u2mjCkh3ekINr3Fu/uT2kJ/kO3goUxfcdXIQ==", "dependencies": { - "@sentry-internal/tracing": "7.81.0" + "@sentry-internal/tracing": "7.81.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.81.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.81.0.tgz", - "integrity": "sha512-rbYNYSSrrnwNndC7S+eVT84GRLEyCZNh9oXUQqzgSD6ngXCZ0xFJW6si75uv/XQBWIw4rkj9xfRcy8DU0Tj4fg==", + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.81.1.tgz", + "integrity": "sha512-dvJvGyctiaPMIQqa46k56Re5IODWMDxiHJ1UjBs/WYDLrmWFPGrEbyJ8w8CYLhYA+7qqrCyIZmHbWSTRIxstHw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.81.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.81.0.tgz", - "integrity": "sha512-yC9IvfeVbG4dygi4b+iUUMHp9xeHJfCn6XLbqjJVfq3xjAzBGHgfrpw6fYPNyTljXKb6CTiSXSqaNaQJE4CkPA==", + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.81.1.tgz", + "integrity": "sha512-gq+MDXIirHKxNZ+c9/lVvCXd6y2zaZANujwlFggRH2u9SRiPaIXVilLpvMm4uJqmqBMEcY81ArujExtHvkbCqg==", "dependencies": { - "@sentry/types": "7.81.0" + "@sentry/types": "7.81.1" }, "engines": { "node": ">=8" diff --git a/web/package.json b/web/package.json index d690b07b1..2bd16dcf8 100644 --- a/web/package.json +++ b/web/package.json @@ -45,8 +45,8 @@ "@open-wc/lit-helpers": "^0.6.0", "@patternfly/elements": "^2.4.0", "@patternfly/patternfly": "^4.224.2", - "@sentry/browser": "^7.81.0", - "@sentry/tracing": "^7.81.0", + "@sentry/browser": "^7.81.1", + "@sentry/tracing": "^7.81.1", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "chart.js": "^4.4.0", From 882826fe0ea72501b1c604bb9802708477b7e1ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:59:18 +0100 Subject: [PATCH 35/47] website: bump prism-react-renderer from 2.2.0 to 2.3.0 in /website (#7685) Bumps [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) from 2.2.0 to 2.3.0. - [Release notes](https://github.com/FormidableLabs/prism-react-renderer/releases) - [Commits](https://github.com/FormidableLabs/prism-react-renderer/compare/prism-react-renderer@2.2.0...prism-react-renderer@2.3.0) --- updated-dependencies: - dependency-name: prism-react-renderer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 18 +++++------------- website/package.json | 2 +- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index b86f17d8e..de2318266 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -19,7 +19,7 @@ "clsx": "^2.0.0", "disqus-react": "^1.1.5", "postcss": "^8.4.31", - "prism-react-renderer": "^2.2.0", + "prism-react-renderer": "^2.3.0", "rapidoc": "^9.3.4", "react": "^18.2.0", "react-before-after-slider-component": "^1.1.8", @@ -13617,25 +13617,17 @@ } }, "node_modules/prism-react-renderer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.2.0.tgz", - "integrity": "sha512-j4AN0VkEr72598+47xDvpzeYyeh/wPPRNTt9nJFZqIZUxwGKwYqYgt7RVigZ3ZICJWJWN84KEuMKPNyypyhNIw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.0.tgz", + "integrity": "sha512-UYRg2TkVIaI6tRVHC5OJ4/BxqPUxJkJvq/odLT/ykpt1zGYXooNperUxQcCvi87LyRnR4nCh81ceOA+e7nrydg==", "dependencies": { "@types/prismjs": "^1.26.0", - "clsx": "^1.2.1" + "clsx": "^2.0.0" }, "peerDependencies": { "react": ">=16.0.0" } }, - "node_modules/prism-react-renderer/node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" - } - }, "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", diff --git a/website/package.json b/website/package.json index 49ea4cbb1..4c694e476 100644 --- a/website/package.json +++ b/website/package.json @@ -26,7 +26,7 @@ "clsx": "^2.0.0", "disqus-react": "^1.1.5", "postcss": "^8.4.31", - "prism-react-renderer": "^2.2.0", + "prism-react-renderer": "^2.3.0", "rapidoc": "^9.3.4", "react-before-after-slider-component": "^1.1.8", "react-dom": "^18.2.0", From 483e2fdf3158f16f49f93c1cbe4ff9d2b6179522 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:59:28 +0100 Subject: [PATCH 36/47] core: bump sentry-sdk from 1.35.0 to 1.36.0 (#7683) Bumps [sentry-sdk](https://github.com/getsentry/sentry-python) from 1.35.0 to 1.36.0. - [Release notes](https://github.com/getsentry/sentry-python/releases) - [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-python/compare/1.35.0...1.36.0) --- updated-dependencies: - dependency-name: sentry-sdk dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index d7733b786..c2b219855 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3427,13 +3427,13 @@ urllib3 = {version = ">=1.26,<3", extras = ["socks"]} [[package]] name = "sentry-sdk" -version = "1.35.0" +version = "1.36.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.35.0.tar.gz", hash = "sha256:04e392db9a0d59bd49a51b9e3a92410ac5867556820465057c2ef89a38e953e9"}, - {file = "sentry_sdk-1.35.0-py2.py3-none-any.whl", hash = "sha256:a7865952701e46d38b41315c16c075367675c48d049b90a4cc2e41991ebc7efa"}, + {file = "sentry-sdk-1.36.0.tar.gz", hash = "sha256:f32dd16547f2f45e1c71a96fd4a48925e629541f7ddfe3d5d25ef7d5e94eb3c8"}, + {file = "sentry_sdk-1.36.0-py2.py3-none-any.whl", hash = "sha256:25d574f94fdf72199e331c2401fdac60d01b5be8f32822174c51c3ff0fc2f8cb"}, ] [package.dependencies] From a3d0b95d89c97f2d6e75e4a25a4290ea3408cb3c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:59:59 +0100 Subject: [PATCH 37/47] web: bump pyright from 1.1.336 to 1.1.337 in /web (#7681) Bumps [pyright](https://github.com/Microsoft/pyright/tree/HEAD/packages/pyright) from 1.1.336 to 1.1.337. - [Release notes](https://github.com/Microsoft/pyright/releases) - [Commits](https://github.com/Microsoft/pyright/commits/1.1.337/packages/pyright) --- updated-dependencies: - dependency-name: pyright dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/package-lock.json | 8 ++++---- web/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 4d7825293..66a8659ae 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -85,7 +85,7 @@ "npm-run-all": "^4.1.5", "prettier": "^3.1.0", "pseudolocale": "^2.0.0", - "pyright": "^1.1.336", + "pyright": "^1.1.337", "react": "^18.2.0", "react-dom": "^18.2.0", "rollup": "^4.5.1", @@ -18468,9 +18468,9 @@ } }, "node_modules/pyright": { - "version": "1.1.336", - "resolved": "https://registry.npmjs.org/pyright/-/pyright-1.1.336.tgz", - "integrity": "sha512-PE/ArjnfS5dKon05zAX2eMzSQmu4ftCITzLqKgFKuwLIRnKJ+l4QGwkCKtYvWoXKm1fWr+TjqYpdRejrYkolyg==", + "version": "1.1.337", + "resolved": "https://registry.npmjs.org/pyright/-/pyright-1.1.337.tgz", + "integrity": "sha512-iZcID/OX5rjiToKCb3DShygOC21Zx8GvSwei+ApyTfK2C2xdRWyV+yJCrUUF75/qVkTZy8ZCDwQc4aYDqD8Scg==", "dev": true, "bin": { "pyright": "index.js", diff --git a/web/package.json b/web/package.json index 2bd16dcf8..c5a67b304 100644 --- a/web/package.json +++ b/web/package.json @@ -106,7 +106,7 @@ "npm-run-all": "^4.1.5", "prettier": "^3.1.0", "pseudolocale": "^2.0.0", - "pyright": "^1.1.336", + "pyright": "^1.1.337", "react": "^18.2.0", "react-dom": "^18.2.0", "rollup": "^4.5.1", From 644882456b41fd35cfb6d0604ca53d99c7a92846 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 12:00:34 +0100 Subject: [PATCH 38/47] translate: Updates for file web/xliff/en.xlf in zh_TW (#7688) Translate web/xliff/en.xlf in zh_TW 100% translated source file: 'web/xliff/en.xlf' on 'zh_TW'. Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- web/xliff/zh_TW.xlf | 4045 +++++++++++++++++++++++++++++++------------ 1 file changed, 2970 insertions(+), 1075 deletions(-) diff --git a/web/xliff/zh_TW.xlf b/web/xliff/zh_TW.xlf index bc39005a9..aa8793c9a 100644 --- a/web/xliff/zh_TW.xlf +++ b/web/xliff/zh_TW.xlf @@ -1,6037 +1,7932 @@ - - - + + English - 英语 + 英語 + French - 法语 + 法語 + Turkish - 土耳其语 + 土耳其語 + Spanish - 西班牙的 + 西班牙語 + Polish - 波兰语 + 波蘭語 + Taiwanese Mandarin - Taiwanese Mandarin + 繁體中文(台灣) + Chinese (simplified) - 简体中文 + 簡體中文 + Chinese (traditional) - 繁体中文 + 繁體中文 + German - 德语 + 德語 + Loading... - 载入中…… + 載入中…… + Application - 应用程序 + 應用程式 + Logins 登入 + Show less - 显示更少 + 顯示更少 + Show more - 显示更多 + 顯示更多 + UID UID + Name 姓名 + App App + Model Name - 型号名称 + 型號名稱 + Message - 信息 + 訊息 + Subject Subject + From 来自 + To - To + + Context 上下文 + User - 用户 + 使用者 + Affected model: - 受影响的模型: + 受影響的模型: + Authorized application: - 授权应用程序: + 已授權的應用程式: + Using flow - 使用 Flow + 使用流程 + Email info: - 电子邮件信息: + 電子郵件訊息: + Secret: - Secret: + 機密密碼: + Open issue on GitHub... - 在 GitHub 上打开问题... + 前往 GitHub 回報問題…… + Exception 例外 + Expression - 表情 + 表示式 + Binding - 绑定 + 附加 + Request - 请求 + 要求 + Object - 对象 + 物件 + Result - 结果 + 結果 + Passing - 通过 + 通過 + Messages - 信息 + 訊息 + Using source - 使用源 + 使用來源 + Attempted to log in as - 已尝试以 - 身份登入 + 已嘗試以 的身份登入 + No additional data available. - 没有其他可用数据。 + 没有其他可用資料。 + Click to change value - 单击以更改值 + 點擊以更改數值 + Select an object. - 选择一个对象。 + 選擇一個物件。 + Loading options... + 載入選項中…… + Connection error, reconnecting... - 连接错误,正在重新连接... + 連線錯誤,正在重新連線…… + Login 登入 + Failed login - 登入失败 + 登入失敗 + Logout - 退出 + 登出 + User was written to - 用户被写入 + 使用者已經被寫入到 + Suspicious request - 可疑请求 + 可疑的要求 + Password set - 密码已设置 + 密碼設定完成 + Secret was viewed - 已查看 Secret + 機密密碼已被查看 + Secret was rotated - 秘密被轮换了 + 機密密碼已被輪替 + Invitation used - 已使用邀请 + 已使用邀請函 + Application authorized - 应用程序已授权 + 已成功授權應用程式 + Source linked - 源链接 + 已連接來源 + Impersonation started - 模拟已开始 + 已開始模擬 + Impersonation ended - 模拟已结束 + 已結束模擬 + Flow execution - 流程执行 + 流程的執行事件 + Policy execution - 策略执行 + 政策的執行事件 + Policy exception - 策略例外 + 政策的例外事件 + Property Mapping exception - 属性映射异常 + 屬性對應例外事件 + System task execution - 系统任务执行 + 系統工作執行事件 + System task exception - 系统任务异常 + 系統工作例外事件 + General system exception - 一般系统异常 + 一般系統例外事件 + Configuration error - 配置错误 + 設定錯誤 + Model created - 模型已创建 + 已建立模型 + Model updated - 模型已更新 + 已更新模型 + Model deleted - 模型已删除 + 已刪除模型 + Email sent - 电子邮件已发送 + 已發送電子郵件 + Update available - 更新可用 + 有可用更新 + Unknown severity + 嚴重程度未知 + Alert - 注意 + 警報 + Notice 注意 + Warning 警告 + no tabs defined - 未定义选项卡 + 未定義的標籤頁 + - of - - - - of - + 個項目中的 - 項目 + Go to previous page - 转到上一页 + 回到上一頁 + Go to next page - 转到下一页 + 前往下一頁 + Search... - 搜索... + 搜尋中…… + Loading - 正在加载 + 載入中 + No objects found. - 未找到任何对象。 + 找不到任何物件。 + Failed to fetch objects. + 無法擷取物件。 + Refresh - 刷新 + 重新整理 + Select all rows - 选择所有行 + 選擇所有列 + Action - 操作 + 動作 + Creation Date - 创建日期 + 建立日期 + Client IP - 客户端 IP + 用戶端 IP + Tenant - 租户 + 租戶 + Recent events + 最近的事件 + On behalf of - 代表 - + 代表 + - - + No Events found. 未找到任何事件。 + No matching events could be found. - 找不到匹配的事件。 + 找不到符合的事件。 + Embedded outpost is not configured correctly. - 嵌入式 outpost 配置不正确。 + 嵌入式 outpost 設定不正確。 + Check outposts. - 检查 outposts. + 檢查 outposts. + HTTPS is not detected correctly - 未正确检测到 HTTPS + 未正確的偵測到 HTTPS + Server and client are further than 5 seconds apart. - 服务器和客户端之间的距离超过5秒。 + 伺服器和用戶端的時間差距超過5秒。 + OK OK + Everything is ok. 一切正常。 + System status - 系统状态 + 系統狀態 + Based on + 基於 + is available! - - 可用! + 新版本 可用! + Up-to-date! - 最新! + 最新版本! + Version 版本 + Workers Workers + No workers connected. Background tasks will not run. - 没有 workers 连接。后台任务将无法运行。 + 沒有已連線的 workers,無法執行背景工作。 + hour(s) ago + 小時以前 + day(s) ago + 天以前 + Authorizations - 授权 + 授權 + Failed Logins - 登入失败 + 登入失敗 + Successful Logins - 成功登入 + 登入成功 + : : + Cancel 取消 + LDAP Source - LDAP 源 + LDAP 來源 + SCIM Provider + SCIM 供應商 + Healthy + 健康 + Healthy outposts 健康的 Outposts + Admin - 管理员 + 系統管理員 + Not found - 未找到 + 找不到 + - The URL "" was not found. - 找不到网址 “ - ”。 + The URL "" was not found. + 找不到網址 ""。 + Return home - 返回主页 + 回到首頁 + General system status - 常规系统状态 + 一般系統狀態 + Welcome, . - 欢迎, - + 歡迎, + Quick actions - 快速行动 + 快速動作 + Create a new application - 创建新应用程序 + 建立新的應用程式 + Check the logs - 检查日志 + 檢查日誌 + Explore integrations - 探索集成 + 探索整合方案 + Manage users + 管理使用者 + Outpost status - Outpost 状态 + Outpost 狀態 + Sync status - 同步状态 + 同步狀態 + Logins and authorizations over the last week (per 8 hours) + 一周的登入和授權狀態(每 8 小時) + Apps with most usage - 使用率最高的应用 + 使用頻率最高的應用程式 + days ago - - 天前 + 天前 + Objects created - 已创建对象 + 已建立物件 + Users created per day in the last month - 上个月每天创建的用户 + 上個月每天的建立使用者數量 + Logins per day in the last month - 上个月每天的登入次数 + 上個月每天的登入次數 + Failed Logins per day in the last month - 上个月每天的失败登入次数 + 上個月每天的登入失敗次數 + Clear search + 清除搜尋結果 + System Tasks - 系统任务 + 系統工作 + Long-running operations which authentik executes in the background. - authentik 在后台执行的长时间运行的操作。 + authentik 在背景執行的長時間工作。 + Identifier - 标识符 + 識別碼 + Description 描述 + Last run - 上次运行 + 最後執行 + Status - 状态 + 狀態 + Actions - 操作 + 動作 + Successful 成功 + Error - 错误 + 錯誤 + Unknown 未知 + Duration + 持續時間 + seconds + + Authentication - 身份验证 + 身分認證 + Authorization - 授权 + 授權 + Enrollment - 注册 + 註冊 + Invalidation 失效 + Recovery - 恢复 + 救援 + Stage Configuration - 阶段配置 + 階段設定 + Unenrollment - 取消注册 + 取消註冊 + Unknown designation + 未知命名 + Stacked + 堆疊 + Content left + 內容置左 + Content right + 內容置右 + Sidebar left + 側邊攔置左 + Sidebar right + 側邊攔置右 + Unknown layout + 未知的版面設計 + Successfully updated provider. - 已成功更新提供程序。 + 成功更新供應商。 + Successfully created provider. - 已成功创建提供商。 + 成功建立供應商。 + Bind flow - Bind 流程 + 附加流程 + Flow used for users to authenticate. + 用於使用者認證的流程 + Search group - 搜索组 + 搜尋群組 + Users in the selected group can do search queries. If no group is selected, no LDAP Searches are allowed. - 所选组中的用户可以执行搜索查询。如果未选择任何组,则不允许 LDAP 搜索。 + 選中的群組中的使用者可以搜尋查詢,如果未選擇任何群組,則無法執行 LDAP 搜尋。 + Bind mode + 附加模式 + Cached binding + 儲存在快取的附加 + Flow is executed and session is cached in memory. Flow is executed when session expires + 當流程執行後,會談訊息將儲存在記憶體中。一旦會談過期,該流程將重新執行 + Direct binding + 直接附加 + Always execute the configured bind flow to authenticate the user + 總是執行設定的附加流程來驗證使用者 + Configure how the outpost authenticates requests. + 設定 Outpost 如何驗證要求。 + Search mode - 搜索模式 + 搜尋模式 + Cached querying + 快取中的查詢 + The outpost holds all users and groups in-memory and will refresh every 5 Minutes + Outpost 將所有使用者和群組保存在記憶體中,並每5分鐘重新整理。 + Direct querying + 直接查詢 + Always returns the latest data, but slower than cached querying + 總是回傳最新的資料,但這會比快取查詢慢上許多 + Configure how the outpost queries the core authentik server's users. - 配置前哨如何查询核心 authentik 服务器的用户。 + 設定 Outpost 如何查詢 authentik core 伺服器上的使用者。 + Protocol settings - 协议设置 + 通訊協定設定 + Base DN Base DN + LDAP DN under which bind requests and search requests can be made. - 可以发出绑定请求和搜索请求的 LDAP DN。 + 可以進行附加和搜尋要求的 LDAP DN。 + Certificate - 证书 + 憑證 + UID start number - UID 起始编号 + UID 起始編號 + The start for uidNumbers, this number is added to the user.Pk to make sure that the numbers aren't too low for POSIX users. Default is 2000 to ensure that we don't collide with local users uidNumber - 对于UIDNumbers来说,这个数字被添加到User.pk中,以确保对于POSIX用户来说,这个数字不会太低。默认值为 2000,以确保我们不会与本地用户 uidNumber 发生冲突 + 對於 uidNumbers 的起始值,這個數字會加到 user.Pk 上,以確保對於 POSIX 使用者來說,這個數字不會太低。預設值是 2000,以確保我們不會和本機使用者的 uidNumber 產生衝突 + GID start number - GID 起始编号 + GID 起始編號 + The start for gidNumbers, this number is added to a number generated from the group.Pk to make sure that the numbers aren't too low for POSIX groups. Default is 4000 to ensure that we don't collide with local groups or users primary groups gidNumber - 对于 GIDNumbers 来说,这个数字被添加到从 group.pk 生成的数字中,以确保对于 POSIX 组来说,这个数字不会太低。默认值为 4000,以确保我们不会与本地组或用户主组 GIDNumber 发生冲突 + 對於 gidNumbers 的起始值,這個數字會加到從 group.Pk 生成的數字上,以確保對於 POSIX 群組來說,這個數字不會太低。預設值是 4000,以確保我們不會和本地群組或使用者的主要群組的 gidNumber 產生衝突 + (Format: hours=-1;minutes=-2;seconds=-3). (格式: hours=-1;minutes=-2;seconds=-3). + (Format: hours=1;minutes=2;seconds=3). (格式: hours=1;minutes=2;seconds=3). + The following keywords are supported: + 支援以下的關鍵字: + Authentication flow - 身份验证流程 + 身分認證流程 + Flow used when a user access this provider and is not authenticated. + 使用者存取此供應商但未獲授權時的流程 + Authorization flow - 授权流程 + 授權流程 + Flow used when authorizing this provider. - 授权此请求发起端时使用的Flow。 + 授權此供應商時的流程。 + Client type - 客户机类型 + 用戶端類型 + Confidential - 机密 + 機密 + Confidential clients are capable of maintaining the confidentiality of their credentials such as client secrets + 機密用戶端能夠維護其憑證的機密性,如:用戶端金鑰。 + Public - 公开 + 公開 + Public clients are incapable of maintaining the confidentiality and should use methods like PKCE. + 公開用戶端能夠使用如 PKCE 等方式維護其機密性。 + Client ID - 客户端 ID + 用戶端 ID + Client Secret - 客户端密钥 + 用戶端金鑰 + Redirect URIs/Origins (RegEx) + 重新導向到 URI 或 原始來源 (正規表示式) + Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows. - 授权流成功后有效的重定向 URL。还可以在此处为隐式流指定任何来源。 + 成功授權流程後的有效重新導向的網址。對於隱式流程,也在此處指定任何來源。 + If no explicit redirect URIs are specified, the first successfully used redirect URI will be saved. - 如果未指定显式重定向 URI,则将保存第一个成功使用的重定向 URI。 + 如果未指定明確的重新導向 URI,將儲存第一個成功重新導向的 URI。 + - To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. + To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. + 欲允許任何重新導向的 URI,輸入 ".*" ,但請注意這個可會有安全性風險。 + Signing Key - 签名密钥 + 簽署金鑰 + Key used to sign the tokens. - 用于对令牌进行签名的密钥。 + 用於對權杖進行簽署的金鑰。 + Advanced protocol settings - 高级协议设置 + 進階通訊協定設定 + Access code validity - 访问代码有效性 + 存取認證碼的有效性 + Configure how long access codes are valid for. - 配置访问代码的有效期限。 + 設定存取認證碼的有效期限。 + Access Token validity + 存取權杖的有效性 + Configure how long access tokens are valid for. - 配置访问令牌的有效时间。 + 設定存取權杖的有效期限。 + Refresh Token validity + 重新整理權杖的有效性 + Configure how long refresh tokens are valid for. + 設定重新整理權杖的有效期限。 + Scopes - 范围 + 範疇 + Select which scopes can be used by the client. The client still has to specify the scope to access the data. - 选择客户端可以使用哪些作用域。客户端仍然需要指定访问数据的范围。 + 選擇用戶端可以使用的範疇,用戶端仍然需要指定範疇才能存取資料。 + Hold control/command to select multiple items. - 按住 ctrl/command 键可选择多个项目。 + 按住 ctrl/command 鍵選擇多個項目。 + Subject mode Subject 模式 + Based on the User's hashed ID + 基於使用者雜湊 ID + Based on the User's ID + 基於使用者 ID + Based on the User's UUID + 基於使用者 UUID + Based on the User's username + 基於使用者名稱 + Based on the User's Email + 基於使用者的電子郵件 + This is recommended over the UPN mode. + 這比 UPN 模式更推薦。 + Based on the User's UPN + 基於使用者的 UPN + Requires the user to have a 'upn' attribute set, and falls back to hashed user ID. Use this mode only if you have different UPN and Mail domains. + 需要使用者設定了「upn」特徵項,備選將使用使用者雜湊 ID。只有您有不同的 UPN 和郵件網域時才使用本模式。 + Configure what data should be used as unique User Identifier. For most cases, the default should be fine. - 配置应将哪些数据用作唯一用户标识符。在大多数情况下,默认值应该没问题。 + 設定應該使用哪些資料作為唯一的使用者識別碼。在大多數情況下使用預設值即可。 + Include claims in id_token - 在 id_token 中包含声明 + 在 id_token 中包含身分聲明 + Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint. - 对于不访问userinfo端点的应用程序,将来自作用域的用户声明包含在id_token中。 + 對於那些不存取 userinfo 端點的應用程式,在 id_token 中將包含來自範疇的使用者身分聲明。 + Issuer mode - Issuer mode + 發行者模式 + Each provider has a different issuer, based on the application slug + 基於應用程式的縮寫,每個供應商都有一個不同的發行者 + Same identifier is used for all providers - 所有提供商都使用相同的标识符 + 所有供應商都使用相同的識別碼 + Configure how the issuer field of the ID Token should be filled. - 配置如何填写 ID 令牌的颁发者字段。 + 設定該如何填寫 ID 權杖的發行者欄位。 + Machine-to-Machine authentication settings + 機器對機器的認證設定 + Trusted OIDC Sources + 受信任的 OIDC 來源 + JWTs signed by certificates configured in the selected sources can be used to authenticate to this provider. + 透過所選來源中的憑證來簽署的 JWT ,可用於對此供應商進行身份認證。 + HTTP-Basic Username Key - HTTP-Basic 用户名密钥 + HTTP 基本認證的使用者金鑰 + User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used. - 用于 HTTP-Basic 标头用户部分的用户/组属性。如果未设置,则使用用户的电子邮件地址。 + 用於 HTTP 基本認證標頭中,使用者區塊中的使用者/群組特徵項。如果未設定則套用使用者的電子郵件地址。 + HTTP-Basic Password Key - HTTP-Basic 密码密钥 + HTTP 基本認證的密碼金鑰 + User/Group Attribute used for the password part of the HTTP-Basic Header. - 用于 HTTP-Basic 标头的密码部分的用户/组属性。 + 用於 HTTP 基本認證標頭中,密碼區塊中的使用者/群組特徵項。 + Proxy 代理 + Forward auth (single application) - 转发身份验证(单个应用程序) + 轉發身分認證(單一應用程式) + Forward auth (domain level) - 转发身份验证(域级别) + 轉發身分認證(網域級別) + This provider will behave like a transparent reverse-proxy, except requests must be authenticated. If your upstream application uses HTTPS, make sure to connect to the outpost using HTTPS as well. - 除了请求必须经过身份验证外,此提供程序的行为类似于透明的反向代理。如果您的上游应用程序使用 HTTPS,请确保也使用 HTTPS 连接到 Outpost。 + 此供應商將充當透明的反向代理,唯一的區別是請求必須通過身份認證。如果您的上游應用程式使用 HTTPS,請確保也使用 HTTPS 連接到 Outpost。 + External host - 外部主机 + 外部主機 + The external URL you'll access the application at. Include any non-standard port. - 您将通过其访问应用程序的外部 URL。包括任何非标准端口。 + 您欲存取應用程式的外部網址,包含任何非標準的連接埠。 + Internal host - 内部主机 + 內部主機 + Upstream host that the requests are forwarded to. - 请求被转发到的上游主机。 + 要求轉發到上游主機。 + Internal host SSL Validation - 内部主机 SSL 验证 + 內部主機的 SSL 驗證 + Validate SSL Certificates of upstream servers. - 验证上游服务器的 SSL 证书。 + 驗證上游主機的 SSL 憑證。 + Use this provider with nginx's auth_request or traefik's forwardAuth. Only a single provider is required per root domain. You can't do per-application authorization, but you don't have to create a provider for each application. - 将此提供程序与 nginx 的 auth_request 或 traefik 的 ForwardAuth 一起使用。每个根域只需要一个提供程序。您无法执行每个应用程序的授权,但不必为每个应用程序创建提供程序。 + 將此供應商與 nginx 的 auth_request 或 traefik 的 forwardAuth 一起使用。每個主網域只需要一個提供者。您無法執行每個應用程式的授權,但您不必為每個應用程式建立提供者。 + An example setup can look like this: - 设置示例如下所示: + 設定的範例如下: + authentik running on auth.example.com - auth.example.com 上运行的 authentik + authentik 運行於 auth.example.com + app1 running on app1.example.com - app1 在 app1.example.com 上运行 + app1 運行於 app1.example.com + In this case, you'd set the Authentication URL to auth.example.com and Cookie domain to example.com. - 在这种情况下,您需要将身份验证网址设置为 auth.example.com,将 Cookie 域设置为 example.com。 + 在這種情況下,您需要將身分認證網址設定為 auth.example.com 並將 Cookie 的網域設定為 example.com。 + Authentication URL - 身份验证 URL + 身分認證網址 + The external URL you'll authenticate at. The authentik core server should be reachable under this URL. - 您将在其中进行身份验证的外部 URL。在此 URL 下应该可以访问身份验证核心服务器。 + 您身分認證的外部網址,該網址應該要能夠連線到 authentik Core 伺服器。 + Cookie domain - Cookie 域名 + Cookie 網域 + Set this to the domain you wish the authentication to be valid for. Must be a parent domain of the URL above. If you're running applications as app1.domain.tld, app2.domain.tld, set this to 'domain.tld'. - 将此设置为您希望身份验证有效的域。必须是上述 URL 的父域名。如果你以 app1.domain.tld、app2.domain.tld 的身份运行应用程序,请将其设置为 “domain.tld”。 + 將此設定為用於使身分認證為有效的網域。必須是上述網址的上級網域。如果您的應用程式運行於 app1.domain.tld、app2.domain.tld 等等,則將其設定為「domain.tld」。 + Unknown proxy mode + 未知的代理模式 + Token validity - 令牌有效性 + 權杖的有效性 + Configure how long tokens are valid for. - 配置令牌的有效期限。 + 設定權杖的有效期限。 + Additional scopes + 額外的範疇 + Additional scope mappings, which are passed to the proxy. - 传递给代理的其他作用域映射。 + 額外範疇的對應,用於傳遞給代理服務。 + Unauthenticated URLs - 未经身份验证的 URL + 未經身分認證的網址 + Unauthenticated Paths - 未经身份验证的路径 + 未經身分認證的路徑 + Regular expressions for which authentication is not required. Each new line is interpreted as a new expression. - 不需要身份验证的正则表达式。每个新行都被解释为一个新表达式。 + 不需要身分認證的正規表示式,每一行區隔為新的表示式。 + When using proxy or forward auth (single application) mode, the requested URL Path is checked against the regular expressions. When using forward auth (domain mode), the full requested URL including scheme and host is matched against the regular expressions. - 使用代理或转发身份验证(单个应用程序)模式时,将根据正则表达式检查请求的 URL 路径。使用前向身份验证(域模式)时,请求的完整 URL(包括 scheme 和 host)将与正则表达式进行匹配。 + 當使用代理或轉發認證(單一應用程式)模式時,會根據正規表示式檢查要求的網址路徑。在使用轉發認證(網域模式)時,包含方案和主機在內的完整要求網址將與正規表示式進行配對。 + Authentication settings + 身分認證設定 + Intercept header authentication + 擷取標頭的身分認證 + When enabled, authentik will intercept the Authorization header to authenticate the request. + 啟用時,authentik 將會擷取授權標頭來認證要求。 + Send HTTP-Basic Authentication + 傳送 HTTP 基本身分認證 + Send a custom HTTP-Basic Authentication header based on values from authentik. + 傳送一個基於 authentik 數值客製化的 HTTP 基本身分認證標頭。 + ACS URL - ACS URL + ACS 網址 + Issuer - Issuer + 發行者 + Also known as EntityID. + 也稱為 EntityID。 + Service Provider Binding - 服务提供商绑定 + 服務供應商附加 + Redirect - 重定向 + 重新導向 + Post Post + Determines how authentik sends the response back to the Service Provider. - 确定 authentik 如何将响应发送回服务提供商。 + 決定 authentik 如何將回應送回給服務供應商。 + Audience Audience + Signing Certificate - 签名证书 + 簽署憑證 + Certificate used to sign outgoing Responses going to the Service Provider. - 用于签署发送给服务提供商的外发响应的证书。 + 用於簽署外送回應給服務供應商的憑證。 + Verification Certificate - 验证证书 + 驗證憑證 + When selected, incoming assertion's Signatures will be validated against this certificate. To allow unsigned Requests, leave on default. - 选中后,传入声明的签名将根据此证书进行验证。要允许未签名的请求,请保留默认值。 + 選擇時,傳入斷言的簽章將依據這個憑證進行認證。若要允許未簽署的要求,請表留預設值。 + Property mappings - 属性映射 + 屬性對應 + NameID Property Mapping - nameID 属性映射 + nameID 屬性對應 + Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected. - 配置如何创建 NameID 值。如果留空,将遵守传入请求的 NameIdPolicy。 + 設定如何建立 NameID 數值。如果為空則將遵守傳入要求的 NameIdPolicy。 + Assertion valid not before - 断言之前无效 + 斷言的有效期限不早於 + Configure the maximum allowed time drift for an assertion. - 为断言配置允许的最大时间漂移。 + 設定斷言的允許最大時間偏移量。 + Assertion valid not on or after - 断言不在当天或之后有效 + 斷言在這個的時間及之後無效: + Assertion not valid on or after current time + this value. + 斷言的有效期限為當前時間加上此值 + Session valid not on or after - 会话不在当天或之后有效 + 會談在這個時間及之後無效: + Session not valid on or after current time + this value. + 會談的有效期限是當前時間加上此值 + Digest algorithm - 摘要算法 + 摘要演算法 + Signature algorithm - 签名算法 + 簽章演算法 + Successfully imported provider. - 已成功导入提供程序。 + 成功匯入供應商。 + Metadata - 元数据 + 中繼資料 + Apply changes + 套用變更 + Close - 关闭 + 關閉 + Finish 完成 + Back 返回 + No form found - 找不到表格 + 找不到表單 + Form didn't return a promise for submitting - 表单未返回提交承诺 + 表單提交時沒有回傳一個 promise 物件 + Select type - 选择类型 + 選擇類型 + Try the new application wizard + 試試看新的應用程式精靈 + The new application wizard greatly simplifies the steps required to create applications and providers. + 新的應用程式精靈大量簡化了建立應用程式和供應商的所需步驟。 + Try it now + 立即嘗試 + Create - 创建 + 建立 + New provider - 新建提供程序 + 新增供應商 + Create a new provider. - 创建一个新提供程序 + 建立一個新的供應商。 + Create - 创建 - + 建立 + Shared secret + 共享密鑰 + Client Networks + 用戶端網路 + List of CIDRs (comma-seperated) that clients can connect from. A more specific CIDR will match before a looser one. Clients connecting from a non-specified CIDR will be dropped. + 用戶端可以連線的 CIDR 列表(以逗號分隔)。 + 更具體的 CIDR 會在較寬鬆的 CIDR 之前優先套用。 + 來自未指定 CIDR 的用戶端連線將被拒絕。 URL + 網址 + SCIM base url, usually ends in /v2. + SCIM 的基礎網址,通常以 /v2 結尾。 + Token - 令牌 + 權杖 + Token to authenticate with. Currently only bearer authentication is supported. + 用於身份認證的權杖,目前只支援 bearer 認證。 + User filtering + 使用者篩選 + Exclude service accounts + 排除服務帳號 + Group - + 群組 + Only sync users within the selected group. + 只同步選中群組的使用者。 + Attribute mapping + 特徵項對應 + User Property Mappings - 用户属性映射 + 使用者屬性對應 + Property mappings used to user mapping. + 用於使用者對應的屬性對應 + Group Property Mappings - 组属性映射 + 群組屬性對應 + Property mappings used to group creation. - 用于组创建的属性映射。 + 用於建立群組的屬性對應 + Not used by any other object. - 不被任何其他对象使用。 + 未被其他物件使用。 + object will be DELETED - 对象将被删除 + 物件將被刪除 + connection will be deleted - 连接将被删除 + 連線將被刪除 + reference will be reset to default value - 引用将被重置为默认值 + 引用將被重設為預設值 + reference will be set to an empty value - 引用将被设置为空值 + 引用將被設為空值 + () - - ( - ) + () + ID ID + Successfully deleted + 成功刪除 Failed to delete : - 无法删除 - : - + 無法刪除 : + Delete - 删除 - + 刪除 + Are you sure you want to delete ? + 您確定要刪除 嗎? Delete - 删除 + 刪除 + Providers - 提供商 + 供應商 + Provide support for protocols like SAML and OAuth to assigned applications. - 为分配的应用程序提供对 SAML 和 OAuth 等协议的支持。 + 為分配的應用程式提供如 SAML 和 OAuth 等協定的支援。 + Type - 类型 + 類型 + Provider(s) - 提供商 + 供應商 + Assigned to application - 分配给应用程序 + 分配給應用程式: + Assigned to application (backchannel) + 分配給應用程式(背景通道): + Warning: Provider not assigned to any application. - 警告:提供程序未分配给任何应用程序。 + 警告:供應商未分配給任何應用程式。 + Update 更新 + Update - 更新 - + 更新 + Select providers to add to application + 選擇要加入到應用程式的供應商 + Add - 添加 + 加入 + - Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". - 输入完整的网址、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 “fa-test”。 + Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". + 輸入完整網址、相對路徑,或者使用 'fa://fa-test' 來使用 Font Awesome 圖示 「fa-test」。 + Path template for users created. Use placeholders like `%(slug)s` to insert the source slug. + 使用者建立的路徑範本,使用預置內容例如「%(slug)s」來插入來源縮寫。 + Successfully updated application. - 已成功更新应用程序。 + 成功更新應用程式。 + Successfully created application. - 已成功创建应用程序。 + 成功建立應用程式。 + Application's display Name. - 应用的显示名称。 + 應用程式的顯示名稱。 + Slug Slug + Optionally enter a group name. Applications with identical groups are shown grouped together. - 输入可选的分组名称。分组相同的应用程序会显示在一起。 + 可選:輸入群組名稱。具有相同群組的應用程式會排列在同一分組。 + Provider - 提供商 + 供應商 + Select a provider that this application should use. + 選擇一個應用程式應該使用的供應商。 + Select backchannel providers which augment the functionality of the main provider. + 選擇背景通道供應商,以增強主要提供者的功能。 + Policy engine mode - 策略引擎模式 + 政策引擎模式 + Any policy must match to grant access + 必須符合任一政策才能取得存取權 + All policies must match to grant access + 必須符合全部政策才能取得存取權 + UI settings - 用户界面设置 + 使用者介面設定 + Launch URL - 启动 URL + 啟動的網址 + If left empty, authentik will try to extract the launch URL based on the selected provider. - 如果留空,authentik 将尝试根据选定的提供商提取启动网址。 + 如果為空,authentik 將會嘗試從選擇的供應商取得啟動網址。 + Open in new tab + 另開新分頁 + If checked, the launch URL will open in a new browser tab or window from the user's application library. + 如果勾選此項,將從使用者的應用程式庫中,在瀏覽器新的分頁或視窗中打開啟動的網址。 + Icon - 图标 + 圖示 + Currently set to: - 当前设置为: + 目前設定為: + Clear icon - 清除图标 + 清除圖示 + Publisher - 发行人 + 發行人 + Create Application - 创建应用程序 + 建立應用程式 + Overview 概述 + Changelog - 更新日志 + 更新日誌 + Warning: Provider is not used by any Outpost. - 警告:提供者未被任何 Outpos 使用。 + 警告:供應商未被任何 Outpost 使用。 + Assigned to application - 分配给应用程序 + 分配給應用程式 + Update LDAP Provider - 更新 LDAP 提供程序 + 更新 LDAP 供應商 + Edit - 编辑 + 編輯 + How to connect - 如何连接 + 如何連線 + Connect to the LDAP Server on port 389: - 通过端口 389 连接到 LDAP 服务器: + 使用連接埠 389 連線到 LDAP 伺服器: + Check the IP of the Kubernetes service, or - 检查 Kubernetes 服务的 IP,或者 + 檢查 Kubernetes 服務的 IP,或者 + The Host IP of the docker host - docker 主机的主机 IP + docker 服務的主機 IP + Bind DN Bind DN + Bind Password - Bind 密码 + Bind 密碼 + Search base - 搜索基础 + 搜尋基礎 + Preview + 預覽 + Warning: Provider is not used by an Application. - 警告:应用程序不使用提供程序。 + 警告:供應商未被任何應用程式使用。 + Redirect URIs - 重定向 URI + 重新導向 URI + Update OAuth2 Provider - 更新 OAuth2 提供程序 + 更新 OAuth2 供應商 + OpenID Configuration URL - OpenID 配置网址 + OpenID 設定網址 + OpenID Configuration Issuer - OpenID 配置发行者 + OpenID 設定發行者 + Authorize URL - 授权 URL + 授權網址 + Token URL - 令牌网址 + 權杖網址 + Userinfo URL - 用户信息网址 + 使用者資訊網址 + Logout URL - 退出 URL + 登出網址 + JWKS URL + JWKS 網址 + Example JWT payload (for currently authenticated user) + 範例 JWT 酬載(給目前已認證的使用者) + Forward auth (domain-level) - 转发身份验证(域级) + 轉發身分認證(網域級別) + Nginx (Ingress) Nginx (Ingress) + Nginx (Proxy Manager) - Nginx(代理管理器) + Nginx Prxoxy Manager + Nginx (standalone) - Nginx (standalone) + Nginx (獨立應用程式) + Traefik (Ingress) Traefik (Ingress) + Traefik (Compose) Traefik (Compose) + Traefik (Standalone) - Traefik (Standalone) + Traefik (獨立應用程式) + Caddy (Standalone) + Caddy (獨立應用程式) + Internal Host - 内部主机 + 內部主機 + External Host - 外部主机 + 外部主機 + Basic-Auth - 基本身份验证 + 基本身分認證 + Yes - Yes + + Mode 模式 + Update Proxy Provider - 更新代理提供程序 + 更新代理供應商 + Protocol Settings - 协议设置 + 通訊協定設定 + Allowed Redirect URIs - 允许的重定向 URI + 允許的重新導向 URI + Setup - 设置 + 設定 + No additional setup is required. - 无需进行其他设置。 + 無須額外設定。 + Update Radius Provider + 更新 Radius 供應商 + Download 下載 + Copy download URL - 复制下载 URL + 複製下載連結網址 + Download signing certificate - 下载签名证书 + 下載簽章憑證 + Related objects - 相关对象 + 有關聯的物件 + Update SAML Provider - 更新 SAML 提供程序 + 更新 SAML 供應商 + SAML Configuration + SAML 設定 + EntityID/Issuer + SEntityID/發行者 + SSO URL (Post) + SSO 網址(Post方法) + SSO URL (Redirect) + SSO 網址(重新導向) + SSO URL (IdP-initiated Login) + SSO 網址(識別提供者Idp發起的登入) + SLO URL (Post) + SLO 網址(Post方法) + SLO URL (Redirect) + SLO 網址(重新導向) + SAML Metadata - SAML 元数据 + SAML 中繼資料 + Example SAML attributes + SAML 的特徵項範例 + NameID attribute + NameID 特徵項 + Warning: Provider is not assigned to an application as backchannel provider. + 警告:供應商未作為背景通道分配給任何應用程式。 + Update SCIM Provider + 更新 SCIM 供應商 + Sync not run yet. + 尚未執行同步。 + Run sync again - 再次运行同步 + 再次執行同步 + Modern applications, APIs and Single-page applications. + 新一代的應用程式,API 和單頁式應用程式 + LDAP LDAP + Provide an LDAP interface for applications and users to authenticate against. + 提供一個 LDAP 介面,供應用程式和用戶進行身份認證。 + New application + 新增應用程式 + Applications - 应用程序 + 應用程式 + Provider Type - 提供商类型 + 供應商類型 + Application(s) - 应用程序 + 應用程式 + Application Icon - 应用程序图标 + 應用程式圖示 + Update Application - 更新应用程序 + 更新應用程式 + Successfully sent test-request. - 已成功发送测试请求。 + 成功發送測試要求。 + Log messages - 日志消息 + 日誌訊息 + No log messages. - 没有日志消息。 + 無日誌訊息。 + Active - 激活 + 啟用 + Last login - 上次登录 + 最近登入 + Select users to add - 选择要添加的用户 + 選擇要加入的使用者 + Successfully updated group. - 已成功更新组。 + 成功更新群組。 + Successfully created group. - 已成功创建组。 + 成功建立群組。 + Is superuser - 是超级用户 + 成為超級使用者 + Users added to this group will be superusers. - 添加到该组的用户均为超级用户。 + 加入到該群組的成員將會成為超級使用者。 + Parent - 家长 + 上級群組 + Attributes - 属性 + 特徵項 + Set custom attributes using YAML or JSON. - 使用 YAML 或 JSON 设置自定义属性。 + 使用 YAML 或 JSON 設定客製化特徵項。 + Successfully updated binding. - 已成功更新绑定。 + 成功更新附加。 + Successfully created binding. - 成功创建绑定。 + 成功建立附加。 + Policy - 策略 + 政策 + Group mappings can only be checked if a user is already logged in when trying to access this source. - 组绑定仅会在已登录用户访问此源时检查。 + 僅當已登入的使用者在存取此來源時,才能檢查群組對應。 + User mappings can only be checked if a user is already logged in when trying to access this source. - 用户绑定仅会在已登录用户访问此源时检查。 + 僅當已登入的使用者在存取此來源時,才能檢查使用者對應。 + Enabled - 已启用 + 啟用中 + Negate result - 否定结果 + 反向结果 + Negates the outcome of the binding. Messages are unaffected. - 否定绑定的结果。消息不受影响。 + 反轉附加的結果。訊息不受影響。 + Order - 订购 + 執行順序 + Timeout - 超时 + 逾時過期 + Successfully updated policy. - 已成功更新策略。 + 成功更新政策。 + Successfully created policy. - 已成功创建策略。 + 成功建立政策。 + A policy used for testing. Always returns the same result as specified below after waiting a random duration. - 用于测试的策略。等待随机持续时间后,始终返回与下面指定的结果相同的结果。 + 用於測試的政策。等待隨機的時間後回傳相同的結果。 + Execution logging - 执行日志记录 + 執行的日誌紀錄 + When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. - 启用此选项后,将记录此策略的所有执行。默认情况下,只记录执行错误。 + 啟用此選項時,將會記錄這個政策所有的日誌。預設只會記錄錯誤日誌。 + Policy-specific settings - 特定于策略的设置 + 政策詳細設定 + Pass policy? - 通行证政策? + 政策通過? + Wait (min) - 等待 (最短) + 等待時間 (最短) + The policy takes a random time to execute. This controls the minimum time it will take. - 策略需要一段随机时间才能执行。这将控制所需的最短时间。 + 政策需要一段隨機時間才能執行。這個設定控制最短等待時間。 + Wait (max) - 等待 (最多) + 等待時間 (最長) + Matches an event against a set of criteria. If any of the configured values match, the policy passes. - 根据一组条件匹配事件。如果任何配置的值匹配,则策略将通过。 + 根據一系列標準配對事件。如果符合任何設定的數值,則政策通過。 + Match created events with this action type. When left empty, all action types will be matched. - 将创建的事件与此操作类型匹配。留空时,所有操作类型都将匹配。 + 將此動作類型與建立的事件配對。如果為空則將符合所有動作類型。 + Matches Event's Client IP (strict matching, for network matching use an Expression Policy. - 匹配事件的客户端 IP(严格匹配),对于网络匹配,请使用表达式策略。 + 配對事件的用戶端 IP(嚴格篩選,如要配對網路請使用表示式政策)。 + Match events created by selected application. When left empty, all applications are matched. - 匹配选定应用程序创建的事件。如果留空,则匹配所有应用程序。 + 將選擇的應用程式與建立的事件配對。如果為空則將符合所有應用程式。 + Checks if the request's user's password has been changed in the last x days, and denys based on settings. - 检查过去 x 天内请求的用户密码是否已更改,并根据设置拒绝。 + 檢查要求中的使用者密碼在過去幾個天內是否已更改,並根據設定決定是否拒絕。 + Maximum age (in days) - 最长使用期限(以天为单位) + 最長有效期限(以天為單位) + Only fail the policy, don't invalidate user's password + 僅不通過政策,不取消使用者密碼的有效性 + Executes the python snippet to determine whether to allow or deny a request. - 执行 python 代码段以确定是允许还是拒绝请求。 + 執行 Python 程式片段以決定是否允許或拒絕要求。 + Expression using Python. - 使用 Python 的表达式。 + 使用 Python 的表示式。 + See documentation for a list of all variables. - 有关所有变量的列表,请参阅文档。 + 有關所有變數列表請參考官方文件。 + Static rules + 靜態規則 + Minimum length - 最小长度 + 最短密碼長度 + Minimum amount of Uppercase Characters - 大写字符的最小数量 + 最少大寫字母數量 + Minimum amount of Lowercase Characters - 小写字符的最小数量 + 最少小寫字母數量 + Minimum amount of Digits - 最低位数 + 最少數字數量 + Minimum amount of Symbols Characters - 符号字符的最小数量 + 最少特殊符號數量 + Error message - 错误消息 + 錯誤訊息 + Symbol charset - 符号字符集 + 特殊符號字元編碼 + Characters which are considered as symbols. - 被视为符号的字符。 + 將被視為特殊符號的字元。 + HaveIBeenPwned settings + HaveIBeenPwned 設定 + Allowed count - 允许计数 + 可允許的次數 + Allow up to N occurrences in the HIBP database. - HIBP 数据库中最多允许 N 次出现。 + 允許出現在 HIBP 資料庫的次數。 + zxcvbn settings + zxcvbn 設定 + Score threshold + 分數閾值 + If the password's score is less than or equal this value, the policy will fail. + 如果密碼的分數不大於此數值,則未通過政策。 + Checks the value from the policy request against several rules, mostly used to ensure password strength. - 根据多条规则检查策略请求中的值,这些规则主要用于确保密码强度。 + 依據多條規則來檢查政策要求中的值,主要用於確保密碼強度。 + Password field - “密码” 字段 + 密碼欄位的鍵值 + Field key to check, field keys defined in Prompt stages are available. - 要检查的字段键,提示阶段中定义的字段键可用。 + 要檢查的鍵值,欄位鍵值可在提示階段中選取。 + Check static rules + 檢查靜態規則 + Check haveibeenpwned.com + 檢查 haveibeenpwned.com + For more info see: + 若要更多資訊請前往: + Check zxcvbn + 檢查 zxcvbn + Password strength estimator created by Dropbox, see: + 由 Dropbox 建立的密碼強度指示計,請前往: + Allows/denys requests based on the users and/or the IPs reputation. - 根据用户和/或 IP 信誉允许/拒绝请求。 + 根據使用者或 IP 名譽來允許或禁止要求。 + Invalid login attempts will decrease the score for the client's IP, and the username they are attempting to login as, by one. + 無效的登入嘗試將使該用戶端 IP 和該使用者名稱的分數每次減少1分。 The policy passes when the reputation score is below the threshold, and doesn't pass when either or both of the selected options are equal or above the threshold. + 當名譽分數低於閾值時能通過政策。反之,當選項中的任何一個以上等於或高於閾值時,不通過政策。 Check IP - 检查 IP + 檢查 IP + Check Username - 检查用户名 + 檢查使用者名稱 + Threshold - 阈值 + 閾值 + New policy - 新建策略 + 新增政策 + Create a new policy. - 创建一个新策略。 + 建立一個新的政策。 + Create Binding - 创建绑定 + 建立附加 + Superuser - 超级用户 + 超級使用者 + Members - 成员 + 成員 + Select groups to add user to - 选择要向其添加用户的组 + 選擇要加入使用者的群組 + Warning: Adding the user to the selected group(s) will give them superuser permissions. + 警告:使用者加入到所選的群組將會賦予其超級使用者的權限。 + Successfully updated user. - 已成功更新用户。 + 成功更新使用者。 + Successfully created user. - 已成功创建用户。 + 成功建立使用者。 + Username - 用户名 + 使用者名稱 + User's primary identifier. 150 characters or fewer. + 使用者的主要識別碼。150個字元以內。 + User's display name. - 用户的显示名称。 + 用使用者的顯示名稱。 + Email - 电子邮箱 + 電子郵件 + Is active - 处于激活状态 + 啟用帳戶 + Designates whether this user should be treated as active. Unselect this instead of deleting accounts. - 指定是否应将此用户视为活动用户。取消选择此选项,而不是删除帐户。 + 決定是否將此使用者視為啟用的帳戶。建議取消選擇此項來停用,而不是刪除帳戶。 + Path + 路徑 + Policy / User / Group - 策略/用户/组 + 政策 / 使用者 / 群組 + Policy - 策略 - + 政策 + Group - 组 - + 群組 + User - 用户 - + 使用者 + Edit Policy - 编辑策略 + 編輯政策 + Update Group - 更新组 + 更新群組 + Edit Group - 编辑组 + 編輯群組 + Update User - 更新用户 + 更新使用者 + Edit User - 编辑用户 + 編輯使用者 + Policy binding(s) - 策略绑定 + 政策附加 + Update Binding - 更新绑定 + 更新附加 + Edit Binding - 编辑绑定 + 編輯附加 + No Policies bound. - 没有策略约束。 + 沒有已附加的政策。 + No policies are currently bound to this object. - 当前没有策略绑定到此对象。 + 目前沒有附加到此物件的政策。 + Bind existing policy + 附加到現存的政策 + Warning: Application is not used by any Outpost. - 警告:应用程序未被任何 Outpost 使用。 + 警告:應用程式未被任何 Outpost 使用。 + Related - 相关 + 關聯 + Backchannel Providers + 背景通道供應商 + Check access - 检查访问权限 + 檢查存取權限 + Check - 查看 + 檢查 + Check Application access - 检查应用程序访问权限 + 檢查應用程式存取權限 + Test - 测试 + 測試 + Launch - 启动 + 啟動 + Logins over the last week (per 8 hours) + 一周的登入狀態(每 8 小時) + Policy / Group / User Bindings - 策略/组/用户绑定 + 政策 / 使用者 / 群組 附加 + These policies control which users can access this application. - 这些策略控制哪些用户可以访问此应用程序。 + 這些政策控制了哪些使用者可以存取這個應用程式。 + Successfully updated source. - 已成功更新源。 + 成功更新來源。 + Successfully created source. - 已成功创建源。 + 成功建立來源。 + Sync users - 同步用户 + 同步使用者 + User password writeback - 用户密码写回 + 可改寫使用者密碼 + Login password is synced from LDAP into authentik automatically. Enable this option only to write password changes in authentik back to LDAP. - 登入密码会自动从 LDAP 同步到 authentik。启用此选项可将 authentik 中的密码更改回写至 LDAP。 + 登入密碼會自動從 LDAP 同步到 authentik。啟用此選項可將 authentik 修改的密碼同步回 LDAP。 + Sync groups - 同步组 + 同步群組 + Connection settings - 连接设置 + 連線設定 + Server URI - 服务器 URI + 伺服器 URI + Specify multiple server URIs by separating them with a comma. - 通过用逗号分隔多个服务器 URI 来指定它们。 + 若要新增多個伺服器,透過逗號分隔多個伺服器 URI。 + Enable StartTLS - 启用 StartTLS + 啟用 StartTLS + To use SSL instead, use 'ldaps://' and disable this option. - 要改用 SSL,请使用 'ldaps: //' 并禁用此选项。 + 若要使用 SSL 請停用此選項,並使用「ldaps://」。 + TLS Verification Certificate - TLS 验证证书 + TLS 驗證憑證 + When connecting to an LDAP Server with TLS, certificates are not checked by default. Specify a keypair to validate the remote certificate. - 使用 TLS 连接到 LDAP 服务器时,默认情况下不检查证书。指定密钥对以验证远程证书。 + 使用 TLS 連線到 LDAP 時,預設不檢查憑證,選擇金鑰對來驗證遠端憑證。 + Bind CN Bind CN + LDAP Attribute mapping - LDAP 属性映射 + LDAP 特徵碼對應 + Property mappings used to user creation. - 用于创建用户的属性映射。 + 用於建立使用者的屬性對應。 + Additional settings - 其他设置 + 其他設定 + Parent group for all the groups imported from LDAP. - 从 LDAP 导入的所有组的父组。 + 從 LDAP 匯入群組的上級群組。 + User path + 使用者路徑 + Addition User DN - 额外的用户 DN + 額外的使用者 DN + Additional user DN, prepended to the Base DN. - 额外的User DN,优先于Base DN。 + 額外的使用者 DN,將優先於 Base DN。 + Addition Group DN - 额外的 Group DN + 額外的群組 DN + Additional group DN, prepended to the Base DN. - 额外的Group DN,优先于Base DN。 + 額外的群組 DN,將優先於 Base DN。 + User object filter - 用户对象筛选器 + 使用者物件篩選器 + Consider Objects matching this filter to be Users. - 将与此筛选器匹配的对象视为用户。 + 符合此篩選的物件將視為使用者。 + Group object filter - 分组对象过滤器 + 群組物件篩選器 + Consider Objects matching this filter to be Groups. - 将与此过滤器匹配的对象视为组。 + 符合此篩選的物件將視為群組。 + Group membership field - 组成员资格字段 + 群組成員欄位 + - Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' - 包含组成员的字段。请注意,如果使用 “memberUID” 字段,则假定该值包含相对可分辨名称。例如,'memberUID=some-user' 而不是 'memberuid=cn=some-user、ou=groups、... ' + Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' + 包含群組成員的欄位。注意,如果使用「memberUid」欄位,則假設其值包含相對可分辨的名稱。例如,「memberUID=some-user」而不是「memberuid=cn=some-user,ou=groups,... 」 + Object uniqueness field - 对象唯一性字段 + 物件的唯一性欄位 + Field which contains a unique Identifier. - 包含唯一标识符的字段。 + 包含唯一識別碼的欄位。 + Link users on unique identifier - 使用唯一标识符链接用户 + 使用唯一識別碼連結使用者 + Link to a user with identical email address. Can have security implications when a source doesn't validate email addresses - 链接到具有相同电子邮件地址的用户。当源不验证电子邮件地址时,可能会产生安全隐患 + 連結到具有相同電子郵件地址的使用者。當來源不驗證電子郵件地址時,可能會有安全風險。 + Use the user's email address, but deny enrollment when the email address already exists + 使用使用者的電子郵件地址,但在電子郵件地址已存在時拒絕註冊。 + Link to a user with identical username. Can have security implications when a username is used with another source + 連接到具有相同使用者名稱的使用者。當使用者名稱與其他來源一同使用時,可能會有安全風險。 + Use the user's username, but deny enrollment when the username already exists + 使用使用者的使用者名稱,但在使用者名稱已存在時拒絕註冊。 + Unknown user matching mode + 未知使用者配對模式 + URL settings - URL 设置 + 網址設定 + Authorization URL - 授权网址 + 授權網址 + URL the user is redirect to to consent the authorization. - 用户被重定向到以同意授权的 URL。 + 使用者被重新導向到此網址以同意授權。 + Access token URL - 访问令牌 URL + 存取權杖網址 + URL used by authentik to retrieve tokens. - authentik 用来检索令牌的 URL。 + authentik 用來擷取權杖的網址。 + Profile URL - 个人资料网址 + 個人資訊網址 + URL used by authentik to get user information. - authentik 用来获取用户信息的 URL。 + authentik 用來擷取個人資訊的網址。 + Request token URL - 请求令牌 URL + 要求權杖網址 + URL used to request the initial token. This URL is only required for OAuth 1. - 用于请求初始令牌的 URL。只有 OAuth 1 才需要此网址。 + 用於要求初始權杖的網址,僅用於 OAuth 1。 + OIDC Well-known URL + OIDC Well-known 網址 + OIDC well-known configuration URL. Can be used to automatically configure the URLs above. + OIDC Well-known 設定的網址。可以用於自動設定以上網址。 + OIDC JWKS URL + OIDC JWKS 網址 + JSON Web Key URL. Keys from the URL will be used to validate JWTs from this source. + JSON 網路金鑰的網址。才該網址擷取的金鑰用於驗證此來源的 JWT。 + OIDC JWKS + OIDC JWKS + Raw JWKS data. + 原始 JWKS 資料。 + User matching mode - 用户匹配模式 + 用戶配對模式 + Delete currently set icon. - 删除当前设置的图标。 + 刪除目前的圖示。 + Consumer key - 消费者密钥 + 客戶金鑰 + Consumer secret - 消费者机密 + 客戶機密密碼 + Additional scopes to be passed to the OAuth Provider, separated by space. To replace existing scopes, prefix with *. + 額外的範疇將傳遞給 OAuth 供應商,用空格分隔。要替換現存範疇,請在前面加上 *。 + Flow settings - 流程设置 + 流程設定 + Flow to use when authenticating existing users. - 认证已存在用户时所使用的流程。 + 認證現存使用者的流程。 + Enrollment flow - 注册流程 + 註冊流程 + Flow to use when enrolling new users. - 新用户注册时所使用的流程。 + 新使用者註冊時的流程。 + Load servers - 加载服务器 + 載入伺服器 + Re-authenticate with plex - 使用 plex 重新进行身份验证 + 使用 plex 重新身分認證 + Allow friends to authenticate via Plex, even if you don't share any servers - 允许好友通过Plex进行身份验证,即使您不共享任何服务器 + 允許好友通過 Plex 進行身分認證,即便您沒有分享任何伺服器 + Allowed servers - 允许的服务器 + 允許的伺服器 + Select which server a user has to be a member of to be allowed to authenticate. - 选择用户必须是哪个服务器的成员才能进行身份验证。 + 選擇使用者必須是其成員才能被允許進行身份認證的伺服器。 + SSO URL - SSO 网址 + SSO 網址 + URL that the initial Login request is sent to. - 初始登录请求发送到的URL。 + 第一次登入要求發送的網址。 + SLO URL - SLO URL + SLO 網址 + Optional URL if the IDP supports Single-Logout. - 如果 IDP 支持单点注销,则为可选 URL。 + 身分識別提供者 Idp 如果支援單一登出時的可選網址。 + Also known as Entity ID. Defaults the Metadata URL. - 也称为实体 ID。 默认为 Metadata URL。 + 也稱為 Entity ID,預設為中繼資料的網址。 + Binding Type - 绑定类型 + 附加類型 + Redirect binding - 重定向绑定 + 重新導向附加 + Post-auto binding + 自動 Post 附加 + Post binding but the request is automatically sent and the user doesn't have to confirm. + Post 附加,但自動傳送要求,使用者無需確認。 + Post binding - Post binding + Post 附加 + Signing keypair - 签名密钥对 + 簽署的金鑰對 + Keypair which is used to sign outgoing requests. Leave empty to disable signing. - 用于签署传出请求的密钥对。留空则禁用签名。 + 用於簽署傳出要求的金鑰對。保持為空停用簽署。 + Allow IDP-initiated logins - 允许 IDP 发起的登入 + 允許識別提供者 Idp 發起的登入 + Allows authentication flows initiated by the IdP. This can be a security risk, as no validation of the request ID is done. - 允许由 IdP 启动的身份验证流。这可能存在安全风险,因为未对请求 ID 进行验证。 + 允許由身份提供者 Idp 發起的認證流程。這可能是一個安全風險,因為不會驗證要求的 ID。 + NameID Policy NameID 政策 + Persistent - 持久 + 持久性 + Email address - 邮箱地址 + 電子郵件地址 + Windows Windows + X509 Subject - X509 Subject + X509 主體 + Transient - 暂时的 + 暫時性 + Delete temporary users after - 之后删除临时用户 + 在此之後刪除臨時使用者: + Time offset when temporary users should be deleted. This only applies if your IDP uses the NameID Format 'transient', and the user doesn't log out manually. + 刪除臨時使用者的時間偏移量。這僅適用於您的身份提供者使用 NameID 格式「transient」,且用戶沒有手動登出的情況。 + Pre-authentication flow - 身份验证前流程 + 身分認證前的流程 + Flow used before authentication. - 身份验证之前使用的流程。 + 在身分認證前使用的流程。 + New source - 新建身份来源 + 新增身分來源 + Create a new source. - 创建一个新身份来源。 + 建立一個新的身分來源。 + Sources of identities, which can either be synced into authentik's database, or can be used by users to authenticate and enroll themselves. - 身份来源,既可以同步到authentik的数据库中,也可以被用户用来进行身份验证和注册。 + 身分來源,既可以同步到 authentik 的資料庫,也能被使用者用來進行身分認證和註冊。 + Source(s) - + 來源 + Disabled - 已禁用 + 已停用 + Built-in - 内置 + 內建 + Update LDAP Source - 更新 LDAP 源 + 更新 LDAP 來源 + Not synced yet. 尚未同步。 + Task finished with warnings - 任务已完成,但出现警告 + 工作完成,但出現警告 + Task finished with errors - 任务已完成,但出现错误 + 工作完成,但出現錯誤 + Last sync: - 上次同步: - + 上次同步: + OAuth Source + OAuth 來源 + Generic OpenID Connect - 通用 OpenID 连接 + 通用 OpenID 連線 + Unknown provider type + 未知的供應商類型 + Details + 詳細資訊 + Callback URL - 回调 URL + 回呼網址 + Access Key - 访问密钥 + 存取金鑰 + Update OAuth Source - 更新 OAuth 源 + 更新 OAuth 來源 + Diagram - 示意图 + 示意圖 + Policy Bindings - 策略绑定 + 政策附加 + These bindings control which users can access this source. You can only use policies here as access is checked before the user is authenticated. + 這些附加控制哪些使用者可以存取此來源。因為在使用者身份認證之前就會檢查存取權限,所以這裡只能使用政策。 Update Plex Source - 更新 Plex 源 + 更新 Plex 來源 + Update SAML Source - 更新 SAML 源 + 更新 SAML 來源 + Successfully updated mapping. - 已成功更新映射。 + 成功更新對應。 + Successfully created mapping. - 已成功创建映射。 + 成功建立對應。 + Object field - 对象字段 + 物件欄位 + Field of the user object this value is written to. - 写入此值的用户对象的字段。 + 此值寫入到使用者物件的欄位。 + SAML Attribute Name - SAML 属性名称 + SAML 特徵項名稱 + Attribute name used for SAML Assertions. Can be a URN OID, a schema reference, or a any other string. If this property mapping is used for NameID Property, this field is discarded. - 用于 SAML 断言的属性名称。可以是 URN OID, 模式引用或任何其他字符串。如果此属性映射用于 NameID 属性,则会丢弃此字段。 + 用於 SAML 斷言的特徵項名稱。可以是 URN OID,綱要參考或任何其他字串。如果此屬性對應用於 NameID 屬性,則此欄位將被忽略。 + Friendly Name - 友好显示名称 + 易記名稱 + Optionally set the 'FriendlyName' value of the Assertion attribute. - (可选)设置 “断言” 属性的'友好名称'值。 + 可選:設定斷言特徵項中的「FriendlyName」值。 + Scope name - 作用域名称 + 範疇名稱 + Scope which the client can specify to access these properties. - 客户端可以指定的访问这些属性的范围。 + 用戶端可以指定存取這些屬性的範疇。 + Description shown to the user when consenting. If left empty, the user won't be informed. - 同意时向用户显示的描述。如果留空,则不会通知用户。 + 當需要使用者同意時顯示的說明。如果留空將不會顯示。 + Example context data + 範例上下文資料 + Active Directory User + Active Directory 使用者 + Active Directory Group + Active Directory 群組 + New property mapping - 新建属性映射 + 新增屬性對應 + Create a new property mapping. - 创建一个新属性映射。 + 建立一個新的屬性對應。 + Property Mappings - 属性映射 + 屬性對應 + Control how authentik exposes and interprets information. - 控制 authentik 如何公开和解释信息。 + 控制 authentik 如何公開和解釋資訊。 + Property Mapping(s) - 属性映射 + 屬性對應 + Test Property Mapping - 测试属性映射 + 測試屬性對應 + Hide managed mappings - 隐藏托管映射 + 隱藏代管對應 + Successfully updated token. - 已成功更新令牌。 + 成功更新權杖。 + Successfully created token. - 已成功创建令牌。 + 成功建立權杖。 + Unique identifier the token is referenced by. - 引用令牌的唯一标识符。 + 權杖參考的唯一識別碼。 + Intent - 意图 + 使用目的 + API Token + API 權杖 + Used to access the API programmatically + 用於程式化存取 API + App password. + 應用程式密碼 + Used to login using a flow executor + 使用流程執行器來進行登入。 + Expiring - 即将到期 + 是否會過期 + If this is selected, the token will expire. Upon expiration, the token will be rotated. - 如果选择此选项,令牌将过期。到期后,令牌将被轮换。 + 當啟用時,權杖將會過期。在過期後權杖將會被輪替。 + Expires on - 过期时间 + 有效期限 + API Access - API 访问权限 + API 存取權限 + App password - 应用密码 + 應用程式密碼 + Verification - 验证 + 驗證 + Unknown intent + 未知使用目的 + Tokens - 令牌 + 權杖 + Tokens are used throughout authentik for Email validation stages, Recovery keys and API access. - 令牌在整个authentik中用于电子邮件验证阶段、恢复密钥和API访问。 + 權杖在整個 authentik 中用於電子郵件認證階段、救援金鑰和存取 API。 + Expires? - 过期? + 是否會過期 + Expiry date 到期日 + Token(s) - 令牌 + 權杖 + Create Token - 创建令牌 + 建立權杖 + Token is managed by authentik. - 令牌由 authentik 管理。 + 由 authentik 管理的權杖。 + Update Token - 更新令牌 + 更新權杖 + Successfully updated tenant. - 已成功更新租户。 + 成功更新租户。 + Successfully created tenant. - 成功创建租户。 + 成功建立租戶。 + Domain - + 網域 + Matching is done based on domain suffix, so if you enter domain.tld, foo.domain.tld will still match. - 匹配是根据域名后缀完成的,因此,如果您输入 domain.tld,foo.domain.tld 仍将匹配。 + 由網域的後輟配對,如果您输入 domain.tld,foo.domain.tld 仍將會符合。 + Default - 默认 + 設為預設 + Use this tenant for each domain that doesn't have a dedicated tenant. - 对于没有专用租户的每个域,请使用此租户。 + 對於每個沒有專有租戶的網域,請使用此租戶。 + Branding settings - 品牌设置 + 品牌設定 + Title - 标题 + 標題 + Branding shown in page title and several other places. - 品牌信息显示在页面标题和其他几个地方。 + 品牌訊息會顯示在頁面標題和其他地方。 + Logo - Logo + 品牌標誌 + Icon shown in sidebar/header and flow executor. - 在侧边栏/标题和流程执行器中显示的图标。 + 在側邊欄、標題和流程執行器中顯示的圖示。 + Favicon - 网站图标 + 網站圖示 + Icon shown in the browser tab. - 浏览器选项卡中显示的图标。 + 瀏覽器頁籤上顯示的圖示。 + Default flows - 默认流程 + 預設流程 + Flow used to authenticate users. If left empty, the first applicable flow sorted by the slug is used. - 用于对用户进行身份验证的流程。如果留空,则使用按辅助信息块排序的第一个适用流程。 + 用於對使用者進行身分認證的流程。如果為空則按縮寫順序使用第一個符合的流程。 + Invalidation flow - 失效流程 + 登出流程 + Flow used to logout. If left empty, the first applicable flow sorted by the slug is used. - 用于注销的流程。如果留空,则使用按辅助信息块排序的第一个适用流程。 + 用於登出的流程。如果為空則按縮寫順序使用第一個符合的流程。 + Recovery flow - 恢复流程 + 救援流程 + Recovery flow. If left empty, the first applicable flow sorted by the slug is used. - 恢复流程。如果留空,则使用按辅助信息块排序的第一个适用流程。 + 用於各類救援的流程。如果為空則按縮寫順序使用第一個符合的流程。 + Unenrollment flow 取消注册流程 + If set, users are able to unenroll themselves using this flow. If no flow is set, option is not shown. - 如果已设置,则用户可以使用此流程自行取消注册。如果未设置流量,则不显示选项。 + 如果設定此欄位,使用者可使用這個流程自行刪除自己的帳號。如果為空則不顯示選項。 + User settings flow - 用户设置流程 + 使用者設定流程 + If set, users are able to configure details of their profile. - 设置后,用户可以配置他们个人资料的详细信息。 + 如果設定此欄位,使用者可以修改他們的個人資訊。 + Device code flow + 裝置認證碼流程 + If set, the OAuth Device Code profile can be used, and the selected flow will be used to enter the code. + 如果設定此欄位,可以使用 OAuth 裝置認證碼設定檔,並使用所選的流程來輸入認證碼。 + Other global settings - 其他全局设置 + 其他全域設定 + Web Certificate - 网络证书 + 網頁伺服器憑證 + Event retention - 事件保留 + 事件紀錄保存時長 + Duration after which events will be deleted from the database. - 事件将从数据库中删除的持续时间。 + 事件紀錄在被從資料庫刪除前的時長。 + - When using an external logging solution for archiving, this can be set to "minutes=5". - 使用外部日志记录解决方案进行存档时,可以将其设置为 “minutes=5”。 + When using an external logging solution for archiving, this can be set to "minutes=5". + 如果使用外部日誌紀錄解決方案時,可以設定為「minutes=5」。 + This setting only affects new Events, as the expiration is saved per-event. - 此设置仅影响新事件,因为过期时间是按事件保存的。 + 此設定僅會影響新的事件紀錄,舊的紀錄到期時間已經設定。 + - Format: "weeks=3;days=2;hours=3,seconds=2". - 格式:"weeks=3;days=2;hours=3,seconds=2"。 + Format: "weeks=3;days=2;hours=3,seconds=2". + 格式:(weeks=3;days=2;hours=3,seconds=2)。 + Set custom attributes using YAML or JSON. Any attributes set here will be inherited by users, if the request is handled by this tenant. + 使用 YAML 或 JSON 設定客製化特徵項。如果是此租戶處理的要求,這裡設定的任何特徵項都將被使用者繼承。 + Tenants - 租户 + 租戶 + Configure visual settings and defaults for different domains. - 配置不同域的可视化设置和默认值。 + 為不同的網域設定視覺化設定和各項預設值。 + Default? - 默认? + 是否為預設 + Tenant(s) - 租户 + 租戶 + Update Tenant - 更新租户 + 更新租戶 + Create Tenant - 创建租户 + 建立租戶 + Policies - 策略 + 政策 + Allow users to use Applications based on properties, enforce Password Criteria and selectively apply Stages. - 允许用户根据属性使用应用程序、强制使用密码标准以及有选择地应用阶段。 + 允許使用者根據屬性使用應用程式、執行密碼的標準,和有選擇性地應用在階段。 + Assigned to object(s). - 已分配给 - 个对象。 + 已分配给 個物件。 + Warning: Policy is not assigned. - 警告:策略未分配。 + 警告:政策未被分配。 + Test Policy - 测试策略 + 測試政策 + Policy / Policies - 政策/策略 + 政策 + Successfully cleared policy cache - 已成功清除策略缓存 + 成功清除政策快取 + Failed to delete policy cache - 未能删除策略缓存 + 未能清除政策快取 + Clear cache - 清除缓存 + 清除快取 + Clear Policy cache - 清除策略缓存 + 清除政策快取 + Are you sure you want to clear the policy cache? This will cause all policies to be re-evaluated on their next usage. + 您確定要清除政策快取嗎?這將會導致所有政策在下次使用時重新評價。 Reputation scores - 声誉得分 + 名譽分數 + Reputation for IP and user identifiers. Scores are decreased for each failed login and increased for each successful login. - IP 和用户标识符的声誉。每次登入失败的分数都会降低,每次成功登入的分数都会增加。 + IP 和使用者識別碼的名譽。每次登入失敗都會降低分數,反之每次成功登入都會增加分數。 + IP IP + Score - 得分 + 分數 + Updated - 已更新 + 最後更新時間 + Reputation - 声誉 + 名譽 + Groups - + 群組 + Group users together and give them permissions based on the membership. - 将用户分组在一起,并根据成员资格为他们授予权限。 + 將使用者分組,並依照成員資格給予權限。 + Superuser privileges? - 超级用户权限? + 是否擁有超級使用者權限 + Group(s) - + 群組 + Create Group - 创建组 + 建立群組 + Create group - 创建组 + 建立群組 + Enabling this toggle will create a group named after the user, with the user as member. - 启用此开关将创建一个以用户命名的组,用户为成员。 + 啟用此選項時,將會建立以使用者名稱為名的群組,而使用者將會成為其成員。 + Use the username and password below to authenticate. The password can be retrieved later on the Tokens page. - 使用下面的用户名和密码进行身份验证。稍后可以在令牌页面上检索密码。 + 使用以下使用者名稱和密碼進行認證,密碼可以從權杖頁面中取得。 + Password - 密码 + 密碼 + Valid for 360 days, after which the password will automatically rotate. You can copy the password from the Token List. - 有效期为360天,之后密码将自动轮换。您可以从令牌列表中复制密码。 + 有效期限為360天,之後密碼將會自動輪替。您可以在權杖列表中複製密碼。 + The following objects use - 以下对象使用 - + 使用以下物件 + connecting object will be deleted - 连接对象将被删除 + 連線的物件將被刪除 + Successfully updated + 成功更新 Failed to update : - 更新失败 - : - + 無法更新 : + - Are you sure you want to update ""? - 你确定要更新 - " - " 吗? + Are you sure you want to update ""? + 您確定要更新 」嗎? + Successfully updated password. - 已成功更新密码。 + 成功更新密碼。 + Successfully sent email. - 已成功发送电子邮件。 + 成功發送電子郵件。 + Email stage - 电子邮件阶段 + 電子郵件階段 + Successfully added user(s). + 成功加入使用者 + Users to add + 欲加入的使用者 + User(s) - 用户 + 使用者 + Remove Users(s) + 移除使用者 + Are you sure you want to remove the selected users from the group ? + 您確定要將選擇的使用者從群組中移除嗎? + Remove + 移除 + Impersonate - 模仿 + 模擬使用者 + User status - 用户状态 + 使用者狀態 + Change status - 更改状态 + 更改狀態 + Deactivate 停用 + Update password - 更新密码 + 更新密碼 + Set password - 设置密码 + 設定密碼 + Successfully generated recovery link - 成功生成恢复链接 + 成功產生救援連結 + No recovery flow is configured. - 未配置任何恢复流程。 + 未設定救援流程。 + Copy recovery link - 复制恢复链接 + 複製救援連結 + Send link - 发送链接 + 傳送連結 + Send recovery link to user - 向用户发送恢复链接 + 向使用者傳送救援連結 + Email recovery link - 电子邮件恢复链接 + 電子郵件救援連結 + Recovery link cannot be emailed, user has no email address saved. - 无法通过电子邮件发送恢复链接,用户没有保存电子邮件地址。 + 無法使用電子郵件傳送救援連結,因為使用者並沒有設定電子郵件。 + To let a user directly reset a their password, configure a recovery flow on the currently active tenant. - 要让用户直接重置密码,请在当前活动的租户上配置恢复流程。 + 若要讓使用者直接重設密碼,請在目前的活動租戶上設定救援流程。 + Add User + 加入使用者 + Warning: This group is configured with superuser access. Added users will have superuser access. + 警告:這個群組具有超級使用者權限,加入到此群組的使用者將會取得該權限。 + Add existing user + 加入現存使用者 + Create user + 建立使用者 + Create User - 创建用户 + 建立使用者 + Create Service account - 创建服务账户 + 建立服務帳戶 + Hide service-accounts - 隐藏服务账户 + 隱藏服務帳戶 + Group Info - 组信息 + 群組資訊 + Notes + 備註 + Edit the notes attribute of this group to add notes here. + 編輯這個群組的備註特徵項來加入備註。 + Users - 用户 + 使用者 + Root + Root + Warning: You're about to delete the user you're logged in as (). Proceed at your own risk. - 警告:你即将删除登录的用户 ( - )。继续,风险自负。 + 警告:您即將刪除您正在登入的使用者「」。若選擇繼續請自行承擔風險。 + Hide deactivated user + 隱藏停用的使用者 + User folders + 使用者資料夾 + Successfully added user to group(s). + 成功加入使用者到群組。 + Groups to add + 欲加入的群組 + Remove from Group(s) + 從群組中移除 + Are you sure you want to remove user from the following groups? + 您確定要從群組中移除使用者 嗎? + Add Group + 加入群組 + Add to existing group + 加入到現存的群組 + Add new group + 建立群組並加入 + Application authorizations - 应用程序授权 + 應用程式授權 + Revoked? - 已吊销? + 是否已撤銷 + Expires - 过期 + 有效期限 + ID Token - ID 令牌 + ID 權杖 + Refresh Tokens(s) + 重新整理權杖 + Last IP - 最后的 IP + 最後登入的 IP + Session(s) - 会话 + 會談 + Expiry - 到期 + 過期 + (Current session) + (正在使用的會談) + Permissions + 權限 + Consent(s) 同意 + Successfully updated device. - 已成功更新设备。 + 成功更新裝置。 + Static tokens - 静态令牌 + 靜態權杖 + TOTP Device - TOTP 设备 + TOTP 裝置 + Enroll - 注册 + 註冊 + Device(s) - 设备 + 裝置 + Update Device - 更新设备 + 更新裝置 + Confirmed + 裝置驗證 + User Info - 用户信息 + 使用者資訊 + Actions over the last week (per 8 hours) + 一周的動作狀態(每 8 小時) + Edit the notes attribute of this user to add notes here. + 編輯這個使用者的備註特徵項來加入備註。 + Sessions - 会话 + 會談 + User events - 用户事件 + 使用者事件 + Explicit Consent - 明确同意 + 明示同意 + OAuth Refresh Tokens + OAuth 重新整理權杖 + MFA Authenticators + 多重要素認證器 + Successfully updated invitation. - 已成功更新邀请。 + 成功更新邀請函。 + Successfully created invitation. - 已成功创建邀请。 + 成功建立邀請函。 + Flow 流程 + When selected, the invite will only be usable with the flow. By default the invite is accepted on all flows with invitation stages. + 當選擇時,邀請只能與該流程一起使用。預設情況下,邀請在所有包含邀請階段的流程中都被接受。 + Optional data which is loaded into the flow's 'prompt_data' context variable. YAML or JSON. - 加载到流程的 “prompt_data” 上下文变量中的可选数据。YAML 或 JSON。 + 可選:載入到流程的「prompt_data」上下文變數。YAML 或 JSON 格式。 + Single use - 一次性使用 + 單次使用 + When enabled, the invitation will be deleted after usage. - 启用后,邀请将在使用后被删除。 + 當啟用時,邀請函將在使用後被刪除。 + Select an enrollment flow - 选择注册流程 + 選擇註冊流程 + Link to use the invitation. - 使用邀请的链接。 + 使用邀請函的連結。 + Invitations - 邀请 + 邀請函 + Create Invitation Links to enroll Users, and optionally force specific attributes of their account. - 创建邀请链接以注册用户,并可选择强制使用其帐户的特定属性。 + 建立邀請函連結來註冊使用者,可選擇強制設定其帳戶的特定特徵項。 + Created by - 由... 创建 + 建立者 + Invitation(s) - 邀请 + 邀請函 + Invitation not limited to any flow, and can be used with any enrollment flow. + 邀請函並未限制用於任何流程,且可以用於任何註冊流程。 + Update Invitation - 更新邀请 + 更新邀請函 + Create Invitation - 创建邀请 + 建立邀請函 + Warning: No invitation stage is bound to any flow. Invitations will not work as expected. - 警告:没有邀请阶段绑定到任何流程。邀请将无法按预期工作。 + 警告:邀請流程沒有附加到任何流程。邀請將無法依照預期工作。 + Auto-detect (based on your browser) - 自动检测(基于您的浏览器) + 自動偵測(基於您的瀏覽器) + Required. 必需。 + Continue - 继续 + 繼續 + Successfully updated prompt. - 已成功更新提示。 + 成功更新提示。 + Successfully created prompt. - 已成功创建提示。 + 成功建立提示。 + Text: Simple Text input - 文本:简单文本输入 + 文字:簡單文字輸入 + Text Area: Multiline text input + 文字區塊:多行文字輸入。 + Text (read-only): Simple Text input, but cannot be edited. - 文本(只读):简单文本输入,但无法编辑。 + 文字(唯讀):簡單文字輸入,但無法編輯。 + Text Area (read-only): Multiline text input, but cannot be edited. + 文字區塊(唯讀):多行文字輸入。但無法編輯。 + Username: Same as Text input, but checks for and prevents duplicate usernames. - 用户名:与文本输入相同,但检查并防止用户名重复。 + 使用者名稱:與文字輸入相同,但檢查是否與現存有重複。 + Email: Text field with Email type. - 电子邮件:具有电子邮件类型的文本字段。 + 電子郵件:具有電子郵件類型的文字欄位。 + Password: Masked input, multiple inputs of this type on the same prompt need to be identical. + 密碼:遮罩輸入,同一提示上的多個此類輸入需要相同。 + Number - 编号 + 編號 + Checkbox - 复选框 + 核取方塊 + Radio Button Group (fixed choice) + 選項按鈕群組(固定選項) + Dropdown (fixed choice) + 下拉式選單(固定選項) + Date 日期 + Date Time - 日期时间 + 日期時間 + File + 檔案 + Separator: Static Separator Line - 分隔符:静态分隔线 + 分隔符號:靜態分隔線 + Hidden: Hidden field, can be used to insert data into form. - 隐藏:隐藏字段,可用于将数据插入表单。 + 隱藏:隱藏欄位,可用於將資料插入表單。 + Static: Static value, displayed as-is. - 静态:静态值,按原样显示。 + 靜態:靜態數值,按原狀顯示。 + authentik: Locale: Displays a list of locales authentik supports. - authentik:语言:显示 authentik 支持的语言设置。 + authentik:語言:顯示 authentik 支援的語言列表。 + Preview errors + 預覽錯誤 + Data preview + 資料預覽 + Unique name of this field, used for selecting fields in prompt stages. + 這個欄位的獨特名稱,用於在提示階段中選擇。 + Field Key - 字段键 + 欄位鍵值 + Name of the form field, also used to store the value. - 表单域的名称,也用于存储值。 + 表單名稱,也用於儲存數值。 + When used in conjunction with a User Write stage, use attributes.foo to write attributes. - 当与用户写入阶段结合使用时,请使用 attributes.foo 来编写属性。 + 當與使用者寫入階段結合使用時,請使用 attributes.foo 來撰寫特徵項。 + Label - 标签 + 標籤 + Label shown next to/above the prompt. - 标签显示在提示符旁边/上方。 + 標籤顯示在提示的旁邊或上方。 + Required 必需 + Interpret placeholder as expression - 将占位符解释为表达式 + 將預先填入解釋為表示式 + When checked, the placeholder will be evaluated in the same way a property mapping is. If the evaluation fails, the placeholder itself is returned. + 啟用時,預先填入將以與屬性對應相同的方式進行評估。如果評估失敗,則返回預先填入本身。 Placeholder - 占位符 + 預先填入 + Optionally provide a short hint that describes the expected input value. When creating a fixed choice field, enable interpreting as expression and return a list to return multiple choices. + 可選:提供一個簡短提示,描述預期的輸入值。當建立一個固定選擇欄位時, + 啟用解釋為表示式,並回傳一個列表以提供多個選擇。 Interpret initial value as expression + 將初始值解釋為表示式 + When checked, the initial value will be evaluated in the same way a property mapping is. If the evaluation fails, the initial value itself is returned. + 啟用時,初始值將以與屬性對應相同的方式進行評估。如果評估失敗,則返回初始值本身。 Initial value + 初始值 + Optionally pre-fill the input with an initial value. When creating a fixed choice field, enable interpreting as expression and return a list to return multiple default choices. + 可選:預先填入輸入框以一個初始值。 + 當建立一個固定選擇欄位時,啟用解釋為表示式,並回傳一個列表以提供多個預設選擇。 Help text - 帮助文本 + 支援文字 + Any HTML can be used. - 任何HTML都可以使用。 + 可使用任何 HTML。 + Prompts 提示 + Single Prompts that can be used for Prompt Stages. - 可用于提示阶段的单个提示符。 + 可用於提示階段的單一提示。 + Field - 字段 + 欄位 + Stages - 阶段 + 階段 + Prompt(s) 提示 + Update Prompt 更新提示 + Create Prompt - 创建提示 + 建立提示 + Target - 目标 + 目標 + Stage - 阶段 + 階段 + Evaluate when flow is planned + 在計劃流程時進行評估 + Evaluate policies during the Flow planning process. + 在計劃流程執行時評估政策。 + Evaluate when stage is run + 在執行階段時進行評估 + Evaluate policies before the Stage is present to the user. - 在阶段呈现给用户之前评估策略。 + 在階段呈現給使用者前評估政策。 + Invalid response behavior + 無效的回應行為 + Returns the error message and a similar challenge to the executor + 回傳錯誤訊息以及類似的挑戰到執行器 + Restarts the flow from the beginning + 從頭開始重新啟動流程 + Restarts the flow from the beginning, while keeping the flow context + 從頭開始重新啟動流程,但保持流程的上下文 + Configure how the flow executor should handle an invalid response to a challenge given by this bound stage. + 設定流程執行器在遇到附加的階段中,給出挑戰但收到的無效回應時,應該處理的方式。 + Successfully updated stage. - 已成功更新阶段。 + 成功更新階段。 + Successfully created stage. - 已成功创建阶段。 + 成功建立階段。 + Stage used to configure a duo-based authenticator. This stage should be used for configuration flows. - Stage 用于配置基于二重奏的身份验证器。此阶段应该用于配置流程。 + 用於設定基於 Duo 身分認證器的階段。此階段應該使用在設定流程。 + Authenticator type name + 身分認證器類型的名稱 + Display name of this authenticator, used by users when they enroll an authenticator. + 顯示這個身分認證器,用於當使用者要註冊一個身分認證器時。 + API Hostname - API 主机名 + API 主機名稱 + Duo Auth API + Duo 認證 API + Integration key - 集成密钥 + 整合金鑰 + Secret key - 密钥 + 金鑰 + Duo Admin API (optional) + Duo 管理員 API(可選) + When using a Duo MFA, Access or Beyond plan, an Admin API application can be created. This will allow authentik to import devices automatically. + 當使用 Duo MFA、Access 或 Beyond 計劃時,可以建立一個 Admin API 應用程式。這將允許 authentik 自動匯入裝置。 Stage-specific settings - 阶段特定的设置 + 階段特定的設定 + Configuration flow - 配置流程 + 設定的流程 + Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. - 经过身份验证的用户用来配置此阶段的流程。如果为空,用户将无法配置此阶段。 + 用於已認證的使用者設定此階段的流程,如果為空則使用者無法設定此階段。 + Twilio Account SID - Twilio 账户 SID + Twilio 帳號 SID + Get this value from https://console.twilio.com - 从 https://console.twilio.com 获取此值 + 從以下網址取得值 https://console.twilio.com + Twilio Auth Token - Twilio 身份验证令牌 + Twilio 身分認證權杖 + Authentication Type - 身份验证类型 + 身分認證類型 + Basic Auth - 基本身份验证 + 基本身分認證 + Bearer Token - 不记名令牌 + 持有人權杖 + External API URL - 外部 API 网址 + 外部 API 網址 + This is the full endpoint to send POST requests to. - 这是向其发送 POST 请求的完整终端节点。 + 這是項其發送 POST 要求的完整終端節點。 + API Auth Username - API 身份验证用户名 + API 認證使用者 + This is the username to be used with basic auth or the token when used with bearer token - 这是用于基本身份验证的用户名,或者与不记名令牌一起使用时的令牌 + 這是與基本身分認證一起使用的使用者名稱,或與持有人權杖一起使用時的權杖。 + API Auth password - API 身份验证密码 + API 認證密碼 + This is the password to be used with basic auth - 这是用于基本身份验证的密码 + 這是與基本身分認證一起使用的密碼 + Mapping + 對應 + Modify the payload sent to the custom provider. + 修改發送至客製化供應商的酬載。 + Stage used to configure an SMS-based TOTP authenticator. - 用于配置基于短信的 TOTP 身份验证器的阶段。 + 用於設定基於簡訊的 TOTP 身分認證器的階段。 + Twilio Twilio + Generic 通用的 + From number - 发件人号码 + 傳送人電話號碼 + Number the SMS will be sent from. - 发送短信的来源号码。 + 傳送簡訊的電話號碼。 + Hash phone number + 雜湊電話號碼 + If enabled, only a hash of the phone number will be saved. This can be done for data-protection reasons. Devices created from a stage with this enabled cannot be used with the authenticator validation stage. + 啟用時,將只會儲存手機號碼的雜湊值。如果有資料保護的需求可以使用此項。啟用此選項的階段建立的裝置,將無法使用身份認證器的認證階段。 + Stage used to configure a static authenticator (i.e. static tokens). This stage should be used for configuration flows. - Stage 用于配置静态身份验证器(即静态令牌)。此阶段应该用于配置流程。 + 用於設定靜態身分認證器的流程(即靜態權杖)。此階段應用於設定流程。 + Token count - Token count + 權杖計數 + Stage used to configure a TOTP authenticator (i.e. Authy/Google Authenticator). - 用于配置 TOTP 身份验证器(即 Auth/Google 身份验证器)的阶段。 + 用於設定 TOTP 身分認證器的階段(即 Authy/Google 身分認證器)。 + Digits - 数字 + 位數 + 6 digits, widely compatible - 6位数字,广泛兼容 + 6位數字,廣泛相容各類認證器 + 8 digits, not compatible with apps like Google Authenticator - 8位数字,与谷歌身份验证器等应用不兼容 + 8位數字,不相容於類似 Google Authenticator 等認證器 + Stage used to validate any authenticator. This stage should be used during authentication or authorization flows. - Stage 用于验证任何身份验证器。此阶段应在身份验证或授权流程中使用。 + 用於驗證任何身分認證器的階段。此階段應用於身分認證或授權流程。 + Device classes - 设备类别 + 裝置類別 + Static Tokens - 静态令牌 + 靜態權杖 + TOTP Authenticators - TOTP 身份验证器 + TOTP 身分認證器 + WebAuthn Authenticators - WebAuthn 身份验证器 + WebAuthn 身分認證器 + Duo Authenticators - Duo 身份验证器 + Duo 身分認證器 + SMS-based Authenticators - 基于短信的身份验证器 + 透過簡訊進行身分認證 + Device classes which can be used to authenticate. - 可用于进行身份验证的设备类别。 + 可用於身分認證的類別。 + Last validation threshold + 最後驗證的時間閾值 + If any of the devices user of the types selected above have been used within this duration, this stage will be skipped. + 如果上述選擇的任何裝置類型在此時長內被使用過,則將跳過此階段。 + Not configured action - 未配置操作 + 未設定時的動作 + Force the user to configure an authenticator - 强制用户配置身份验证器 + 強制使用者設定一個身分認證器 + Deny the user access - 拒绝用户访问 + 拒絕使用者存取 + WebAuthn User verification + WebAuthn 使用者驗證 + User verification must occur. - 必须进行用户验证。 + 使用者驗證必需發生。 + User verification is preferred if available, but not required. - 如果可用,则首选用户验证,但不是必需的。 + 使用者驗證作為可選項目而非必需。 + User verification should not occur. - 不应进行用户验证。 + 使用者驗證不應發生。 + Configuration stages - 配置阶段 + 設定階段 + Stages used to configure Authenticator when user doesn't have any compatible devices. After this configuration Stage passes, the user is not prompted again. - 当用户没有任何兼容的设备时,用来配置身份验证器的阶段。此阶段通过后,将不再请求此用户。 + 用於當使用者沒有相容的裝置時,設定身分認證器的階段。通過此階段後,使用者將不會再收到提示。 + When multiple stages are selected, the user can choose which one they want to enroll. - 选中多个阶段时,用户可以选择要注册哪个。 + 當選擇多個階段時,使用者可選擇想使用哪一個註冊。 + User verification - 用户验证 + 使用者驗證 + Resident key requirement - 常驻钥匙要求 + 常駐金鑰要求 + Authenticator Attachment - 身份验证器附件 + 身分認證器外接裝置 + No preference is sent - 不发送首选项 + 不傳送建議選項 + A non-removable authenticator, like TouchID or Windows Hello - 不可移除的身份验证器,例如 TouchID 或 Windows Hello + 不可移除的身分認證器,例如 TouchID 或 Windows Hello + - A "roaming" authenticator, like a YubiKey - 像 YubiKey 这样的 “漫游” 身份验证器 + A "roaming" authenticator, like a YubiKey + 外接式的身分認證器,例如 YubiKey + This stage checks the user's current session against the Google reCaptcha (or compatible) service. + 這個階段使用 Google reCaptcha (或其他相容的)服務檢查使用者目前的會談。 + Public Key - 公钥 + 公鑰 + Public key, acquired from https://www.google.com/recaptcha/intro/v3.html. - 公钥,从 https://www.google.com/recaptcha/intro/v3.html 获取。 + 公鑰,取得自以下網址 https://www.google.com/recaptcha/intro/v3.html。 + Private Key - 私钥 + 私鑰 + Private key, acquired from https://www.google.com/recaptcha/intro/v3.html. - 私钥,从 https://www.google.com/recaptcha/intro/v3.html 获取。 + 私鑰,取得自以下網址 https://www.google.com/recaptcha/intro/v3.html。 + Advanced settings - 高级设置 + 進階設定 + JS URL + JS 網址 + URL to fetch JavaScript from, defaults to recaptcha. Can be replaced with any compatible alternative. + 用於擷取 JavaScript 的網址,預設為 reCAPTCHA。可以替換為任何相容的替代方案。 + API URL + API 網址 + URL used to validate captcha response, defaults to recaptcha. Can be replaced with any compatible alternative. + 用於驗證認證碼回應的網址,預設為 reCAPTCHA。可以替換為任何相容的替代方案。 + Prompt for the user's consent. The consent can either be permanent or expire in a defined amount of time. - 提示用户同意。同意可以是永久性的,也可以在规定的时间内过期。 + 使用者同意的提示。同意可以是永久性的,也可以設定過期時間。 + Always require consent - 始终需要征得同意 + 總是需要取得同意 + Consent given last indefinitely - 无限期地给予同意 + 給予永久性的同意 + Consent expires. - 同意过期。 + 給予有期限的同意 + Consent expires in - 同意到期时间 + 同意有效期限 + Offset after which consent expires. + 同意有效期限的偏移量 + Dummy stage used for testing. Shows a simple continue button and always passes. - 用于测试的虚拟阶段。显示一个简单的 “继续” 按钮,并且始终通过。 + 用於測試的假階段。顯示一個「繼續」的按鈕且永遠通過。 + Throw error? + 是否顯示錯誤資訊 + SMTP Host - SMTP 主机 + SMTP 主機 + SMTP Port - SMTP 端口 + SMTP 連接埠 + SMTP Username - SMTP 用户名 + SMTP 使用者名稱 + SMTP Password - SMTP 密码 + SMTP 密碼 + Use TLS 使用 TLS + Use SSL 使用 SSL + From address - 发件人地址 + 寄件人地址 + Verify the user's email address by sending them a one-time-link. Can also be used for recovery to verify the user's authenticity. - 通过向用户发送一次性链接来验证用户的电子邮件地址。也可用于恢复,以验证用户的真实性。 + 通過發送一次性連結驗證使用者的電子郵件地址。也可用於救援過程中驗證使用者的真實性。 + Activate pending user on success - 成功时启用待处理用户 + 成功時啟用待處理的使用者 + When a user returns from the email successfully, their account will be activated. - 当用户成功从电子邮件中返回时,其帐户将被激活。 + 當使用者成功透過電子郵件返回時,重新啟用他們的帳號。 + Use global settings - 使用全局设置 + 使用全域設定 + When enabled, global Email connection settings will be used and connection settings below will be ignored. - 启用后,将使用全局电子邮件连接设置,而下面的连接设置将被忽略。 + 啟用時,將使用全域電子郵件連線設定,以下的連線設定將被忽略。 + Token expiry - 令牌到期 + 權杖有效期限 + Time in minutes the token sent is valid. - 发送的令牌的有效时间(以分钟为单位)。 + 發送權杖的有效期限(分鐘為單位)。 + Template - “模板” + 範本 + Let the user identify themselves with their username or Email address. - 让用户使用其用户名或电子邮件地址来标识自己。 + 讓使用者利用使用者名稱或電子郵件來標示自己。 + User fields - 用户字段 + 使用者欄位 + UPN UPN + Fields a user can identify themselves with. If no fields are selected, the user will only be able to use sources. - 用户可以用来标识自己的字段。如果未选择任何字段,则用户将只能使用源。 + 使用者可以用來標示自己的欄位。如果沒有選擇任何欄位,使用者將只能使用來源。 + Password stage - 密码阶段 + 密碼階段 + When selected, a password field is shown on the same page instead of a separate page. This prevents username enumeration attacks. - 选中后,密码字段将显示在同一页面上,而不是单独的页面上。这样可以防止用户名枚举攻击。 + 當選擇時,密碼欄位將會顯示在同一頁面上,這樣可以防止使用者名稱列舉攻擊。 + Case insensitive matching - 不区分大小写的匹配 + 使用者名稱配對不分大小寫 + When enabled, user fields are matched regardless of their casing. - 启用后,无论用户字段大小写如何,都将匹配用户字段。 + 啟用時,配對使用者名稱時將無視大小寫。 + Show matched user - 显示匹配的用户 + 顯示符合的使用者 + When a valid username/email has been entered, and this option is enabled, the user's username and avatar will be shown. Otherwise, the text that the user entered will be shown. - 如果输入了有效的用户名/电子邮件,并且启用了此选项,则会显示用户的用户名和头像。否则,将显示用户输入的文本。 + 當啟用了此選項,且輸入了有效的使用者名稱或電子郵件時,將顯示使用者的使用者名稱和個人檔案圖片。否則,將顯示使用者輸入的文字。 + Source settings + 來源設定 + Sources - + 來源 + Select sources should be shown for users to authenticate with. This only affects web-based sources, not LDAP. - 应显示选择的源以供用户进行身份验证。这只会影响基于 Web 的源,而不影响 LDAP。 + 選擇當使用者進行認證時應顯示的來源。此選項將只會影響基於網頁的來源,LDAP 不受影響。 + Show sources' labels - 显示源的标签 + 顯示來源標籤 + By default, only icons are shown for sources. Enable this to show their full names. - 默认情况下,只为源显示图标。启用此选项可显示他们的全名。 + 預設的情況下,只會顯示來源的圖示,啟用這個選項來顯示全名。 + Passwordless flow - 无密码流 + 無密碼認證流程 + Optional passwordless flow, which is linked at the bottom of the page. When configured, users can use this flow to authenticate with a WebAuthn authenticator, without entering any details. - 可选的无密码流程,链接在页面底部。配置后,用户可以使用此流程向 WebAuthn 身份验证器进行身份验证,而无需输入任何详细信息。 + 可選:無密碼認證的流程,連結顯示在頁面底部。設定時,使用者可以無須輸入任何詳細資訊,透過此流程搭配 WebAuthn 身分認證器來進行認證。 + Optional enrollment flow, which is linked at the bottom of the page. - 可选注册流程,链接在页面底部。 + 可選:註冊流程,連結顯示在頁面底部。 + Optional recovery flow, which is linked at the bottom of the page. - 可选的恢复流程,链接在页面底部。 + 可選:救援流程,連結顯示在頁面底部。 + This stage can be included in enrollment flows to accept invitations. - 此阶段可以包含在注册流程中以接受邀请。 + 此階段可以包含在註冊流程中以接受邀請。 + Continue flow without invitation - 在没有邀请的情况下继续流动 + 設定無邀請函的流程 + If this flag is set, this Stage will jump to the next Stage when no Invitation is given. By default this Stage will cancel the Flow when no invitation is given. - 如果设置了此标志,则当没有发出邀请时,此舞台将跳转到下一个阶段。默认情况下,当没有发出邀请时,此阶段将取消流程。 + 如果啟用此旗標,當沒有邀請函時這個階段將會跳到下個階段。預設的情況下,此階段將會取消流程。 + Validate the user's password against the selected backend(s). - 根据选定的后端验证用户的密码。 + 由選擇的後端來驗證使用者密碼。 + Backends - 后端 + 後端 + User database + standard password - 用户数据库+标准密码 + 使用者資料庫 + 標準密碼 + User database + app passwords - 用户数据库+应用程序密码 + 使用者資料庫 + 應用程式密碼 + User database + LDAP password - 用户数据库 + LDAP 密码 + 使用者資料庫 + LDAP 密碼 + Selection of backends to test the password against. - 选择用于测试密码的后端。 + 選擇要用於測試密碼的後端。 + Flow used by an authenticated user to configure their password. If empty, user will not be able to configure change their password. - 经过身份验证的用户用来配置其密码的流程。如果为空,用户将无法配置更改其密码。 + 經過身分認證的使用者用來設定密碼的流程,如果未設定則使用者將無法變更密碼。 + Failed attempts before cancel - 取消前尝试失败 + 取消前可嘗試的次數 + How many attempts a user has before the flow is canceled. To lock the user out, use a reputation policy and a user_write stage. - 在取消流程之前,用户有多少次尝试。要锁定用户,请使用信誉策略和 user_write 阶段。 + 在取消流程前使用者嘗試的次數。要鎖定使用者請使用名譽政策和 user_write 階段。 + Show arbitrary input fields to the user, for example during enrollment. Data is saved in the flow context under the 'prompt_data' variable. - 向用户显示任意输入字段,例如在注册期间。数据保存在流程上下文中的 “prompt_data” 变量下。 + 向使用者顯示任意輸入欄位,例如在註冊過程中。資料會保存在流程上下文中的「prompt_data」變數中。 + Fields - 字段 + 欄位 + - ("", of type ) + ("", of type ) - (“ - ”, 类型为 - ) + (「」,類型為 ) + Validation Policies - 验证策略 + 驗證政策 + Selected policies are executed when the stage is submitted to validate the data. - 在提交阶段以验证数据时,将执行选定的策略。 + 當階段提交時,將執行所選政策以驗證資料。 + Delete the currently pending user. CAUTION, this stage does not ask for confirmation. Use a consent stage to ensure the user is aware of their actions. + 刪除目前待處理的使用者。注意,這個階段不會要求確認。使用同意階段以確保使用者意識到他們的動作。 Log the currently pending user in. - 将当前待处理的用户登录。 + 將待處理的使用者登入。 + Session duration - 会话持续时间 + 會談的持續時間 + Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed. - 确定会话持续多长时间。默认为 0 秒意味着会话持续到浏览器关闭为止。 + 決定會談將持續多久。預設值「seconds=0」表示會談會持續到關閉瀏覽器為止。 + Different browsers handle session cookies differently, and might not remove them even when the browser is closed. + 不同的瀏覽器處理會談 cookies 方法各異,在關閉瀏覽器後可能不會移除它。 + See here. + 更多資訊 + Stay signed in offset + 登入的持續時間 + - If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. + If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. + 如果持續時間大於零,使用者介面上將會有「保持登入」選項。這將會依照設定的時間延長會談。 + Terminate other sessions + 終止其他會談 + When enabled, all previous sessions of the user will be terminated. + 當啟用後,所有之前的會談將會被終止。 + Remove the user from the current session. - 从当前会话中移除用户。 + 移除使用者目前的會談。 + Write any data from the flow's context's 'prompt_data' to the currently pending user. If no user is pending, a new user is created, and data is written to them. + 將流程上下文中的「prompt_data」的任何資料寫入當前待處理的使用者。如果沒有待處理的使用者,則建立一個新使用者,並將資料寫入該使用者。 Never create users + 不建立使用者 + When no user is present in the flow context, the stage will fail. + 當流程上下文中不存在使用者時,階段將會失敗。 + Create users when required + 需要時建立使用者 + When no user is present in the the flow context, a new user is created. + 當流程上下文中不存在使用者時,建立使用者。 + Always create new users + 總是建立使用者 + Create a new user even if a user is in the flow context. + 總是建立使用者,即便流程上下文中存在使用者。 + Create users as inactive - 将用户创建为非活动用户 + 建立停用狀態的使用者 + Mark newly created users as inactive. - 将新创建的用户标记为非活动用户。 + 將建立的使用者標記為停用狀態。 + User path template + 使用者路徑範本 + Path new users will be created under. If left blank, the default path will be used. + 使用者將會建立在此路徑下。如果留空則使用預設路徑。 + Newly created users are added to this group, if a group is selected. - 如果选择了组,则会将新创建的用户添加到该组。 + 如果有選擇群組,使用者將會被加入到該群組。 + New stage - 新建阶段 + 新增階段 + Create a new stage. - 创建一个新阶段。 + 建立一個階段。 + Successfully imported device. + 成功匯入裝置。 + The user in authentik this device will be assigned to. + 此裝置將被分配給的 authentik 中的使用者。 + Duo User ID + Duo 使用者 ID + The user ID in Duo, can be found in the URL after clicking on a user. + Duo 的使用者 ID,點選使用者後可以在網址列上找到。 + Automatic import + 自動匯入 + Successfully imported devices. + 成功匯入 個裝置。 + Start automatic import + 開始自動匯入 + Or manually import + 或使用手動匯入 + Stages are single steps of a Flow that a user is guided through. A stage can only be executed from within a flow. - 阶段是引导用户完成的流程的单个步骤。阶段只能在流程内部执行。 + 階段是流程中使用者被引導通過的單一步驟。階段只能在流程內部執行。 + Flows 流程 + Stage(s) - 阶段 + 階段 + Import - 导入 + 匯入 + Import Duo device + 匯入 Duo 裝置 + Successfully updated flow. - 已成功更新流程。 + 成功更新流程。 + Successfully created flow. - 已成功创建流程。 + 成功建立流程。 + Shown as the Title in Flow pages. - 显示为 “Flow” 页面中的标题。 + 作為標題顯示在流程頁面。 + Visible in the URL. - 在 URL 中可见。 + 顯示於網址列中。 + Designation - 指定 + 使用目的 + Decides what this Flow is used for. For example, the Authentication flow is redirect to when an un-authenticated user visits authentik. - 决定此 Flow 的用途。例如,当未经身份验证的用户访问 authentik 时,身份验证流程将重定向到。 + 決定此流程的用途。例如當未經認證的使用者存取 authentik 時,將其重新導向到身分認證流程。 + No requirement + 不需要 + Require authentication + 需要身分認證 + Require no authentication. + 需要無身分認證 + Require superuser. + 需要超級使用者 + Required authentication level for this flow. + 這個流程所需的身分認證等級。 + Behavior settings + 行為設定 + Compatibility mode - 兼容模式 + 相容模式 + Increases compatibility with password managers and mobile devices. + 提升對密碼管理器和行動裝置的相容性。 + Denied action + 拒絕時動作 + Will follow the ?next parameter if set, otherwise show a message + 如果有設定「?next」參數則重新導向,反之則顯示訊息 + Will either follow the ?next parameter or redirect to the default interface + 如果有設定「?next」參數則重新導向,反之則重新導向到預設介面 + Will notify the user the flow isn't applicable + 將會通知使用者流程無法適用 + Decides the response when a policy denies access to this flow for a user. + 決定當這個流程的使用者被政策拒絕存取時的回應。 + Appearance settings + 外觀設定 + Layout + 版面設計 + Background 背景 + Background shown during execution. - 执行过程中显示背景。 + 執行過程中顯示的背景。 + Clear background + 清除背景 + Delete currently set background image. - 删除当前设置的背景图片。 + 刪除目前設定的背景圖片。 + Successfully imported flow. - 已成功导入流程。 + 成功匯入流程。 + .yaml files, which can be found on goauthentik.io and can be exported by authentik. + .yaml 檔案,可以在 goauthentik.io 中找到且可以從 authentik 中匯出。 + Flows describe a chain of Stages to authenticate, enroll or recover a user. Stages are chosen based on policies applied to them. - 流程描述了一系列用于对用户进行身份验证、注册或恢复的阶段。阶段是根据应用于它们的策略来选择的。 + 流程描述了一系列階段,用於認證、註冊或救援使用者。根據應用於它們的政策選擇階段。 + Flow(s) 流程 + Update Flow 更新流程 + Create Flow - 创建流程 + 建立流程 + Import Flow - 导入流程 + 匯入流程 + Successfully cleared flow cache - 已成功清除流程缓存 + 成功清除流程的快取 + Failed to delete flow cache - 无法删除流程缓存 + 無法刪除流程的快取 + Clear Flow cache - 清除流程缓存 + 清除流程的快取 + Are you sure you want to clear the flow cache? This will cause all flows to be re-evaluated on their next usage. + 您確定要清除流程快取嗎?這將導致所有流程在下次使用時重新評估。 Stage binding(s) - 阶段绑定 + 階段附加 + Stage type - 阶段类型 + 階段類型 + Edit Stage - 编辑 Stage + 編輯階段 + Update Stage binding - 更新阶段绑定 + 更新階段附加 + These bindings control if this stage will be applied to the flow. - 这些绑定控制是否将此阶段应用于流程。 + 這些附加控制此階段是否將應用於流程。 + No Stages bound - 没有阶段绑定 + 沒有已附加的階段 + No stages are currently bound to this flow. - 目前没有阶段绑定到此流程。 + 目前沒有階段附加到此流程。 + Create Stage binding - 创建 Stage 绑定 + 建立階段附加 + Bind stage - Bind 阶段 + 附加階段 + Bind existing stage + 附加已存在的階段 + Flow Overview - 流程概述 + 流程概覽 + Related actions + 關聯的動作 + Execute flow - 执行流程 + 執行流程 + Normal - 正常 + 正常執行 + with current user - 以当前用户 + 使用目前使用者執行 + with inspector - 和检查员一起 + 和流程檢閱器一起執行 + Export flow - 出口流程 + 匯出這個流程 + Export - 出口 + 匯出 + Stage Bindings - 阶段绑定 + 階段附加 + These bindings control which users can access this flow. - 这些绑定控制哪些用户可以访问此流程。 + 這些附加控制哪些使用者可以存取此流程。 + Event Log - 事件日志 + 事件日誌 + Event - 事件 - + 事件 + Event info - 事件信息 + 事件資訊 + Created + 已建立 + Successfully updated transport. - 已成功更新传输。 + 成功更新通道。 + Successfully created transport. - 已成功创建传输。 + 成功建立通道。 + Local (notifications will be created within authentik) + 本機(通知將會透過 authentik 建立) + Webhook (generic) - Webhook (generic) + Webhook (通用) + Webhook (Slack/Discord) Webhook(Slack/Discord) + Webhook URL - Webhook URL + Webhook 網址 + Webhook Mapping - Webhook 映射 + Webhook 對應 + Send once - 发送一次 + 僅發送一次 + Only send notification once, for example when sending a webhook into a chat channel. - 仅发送一次通知,例如在向聊天频道发送 Webhook 时。 + 僅發送一次通知,例如在將 webhook 發送到聊天頻道時。 + Notification Transports - 通知传输 + 通知通道 + Define how notifications are sent to users, like Email or Webhook. - 定义如何向用户发送通知,例如电子邮件或 Webhook。 + 定義如何向使用者傳送通知,例如電子郵件或 Webhook。 + Notification transport(s) - 通知传输 + 通知通道 + Update Notification Transport - 更新通知传输 + 更新通知通道 + Create Notification Transport - 创建通知传输 + 建立通知通道 + Successfully updated rule. - 已成功更新规则。 + 成功更新規則。 + Successfully created rule. - 已成功创建规则。 + 成功建立規則。 + Select the group of users which the alerts are sent to. If no group is selected the rule is disabled. + 選擇接收警報的使用者群組。如果沒有選擇群組,則規則將被停用。 + Transports - 传输 + 通道 + Select which transports should be used to notify the user. If none are selected, the notification will only be shown in the authentik UI. - 选择应使用哪些传输来通知用户。如果未选择任何内容,则通知将仅显示在 authentik UI 中。 + 選擇應使用哪些通道來通知使用者。如果沒有選擇任何通道,通知將只會在 authentik 使用者介面中顯示。 + Severity - 严重程度 + 嚴重程度 + Notification Rules - 通知规则 + 通知規則 + Send notifications whenever a specific Event is created and matched by policies. - 每当策略创建并匹配特定事件时,都会发送通知。 + 當特定事件被建立並符合政策時都會發送通知。 + Sent to group - 已发送到组 + 已發送到群組 + Notification rule(s) - 通知规则 + 通知規則 + None (rule disabled) - 无(规则已禁用) + 無(停用規則) + Update Notification Rule - 更新通知规则 + 更新通知規則 + Create Notification Rule - 创建通知规则 + 建立通知規則 + These bindings control upon which events this rule triggers. Bindings to groups/users are checked against the user of the event. + 這些附加控制了此規則觸發的事件。附加到群組或使用者的條件會根據事件的使用者來檢查。 Outpost Deployment Info - Outpost 部署信息 + Outpost 部署資訊 + View deployment documentation - 查看部署文档 + 檢視部署文件 + Click to copy token - 点击复制令牌 + 點選這裡複製權杖 + If your authentik Instance is using a self-signed certificate, set this value. - 如果您的 authentik 实例正在使用自签名证书,请设置此值。 + 如果您的 authentik 執行個體使用自簽憑證,請設定此項。 + If your authentik_host setting does not match the URL you want to login with, add this setting. - 如果您的 authentik_host 设置与您要登录时使用的网址不匹配,请添加此设置。 + 如果您的 authentik_host 設定與您登入的網址不同,請加入此設定。 + Successfully updated outpost. - 已成功更新 Outpost。 + 成功更新 Outpost。 + Successfully created outpost. - 已成功创建 Outpost。 + 成功建立 Outpost。 + Radius + Radius + Integration 整合 + Selecting an integration enables the management of the outpost by authentik. - 选择集成可以使authentik对 Outpost 进行管理。 + 選擇一個整合讓 authentik 對 Outpost 進行管理。 + You can only select providers that match the type of the outpost. - 您只能选择与 Outpost 类型匹配的提供商。 + 您只能選擇與 Outpost 類型相符的供應商。 + Configuration - 配置 + 設定 + See more here: + 更多資訊請參考: + Documentation + 官方文件 + Last seen + 最後上線時間 + , should be - - ,应该是 - + ,應該是 + Hostname + 主機名稱 + Not available - 不可用 + 無法使用 + Last seen: - 最后显示: - + 最後上線時間: + Unknown type + 未知的類型 + Outposts Outposts + Outposts are deployments of authentik components to support different environments and protocols, like reverse proxies. - Outpost 是对 authentik 组件的部署,以支持不同的环境和协议,例如反向代理。 + Outposts 是 authentik 系統中的一部分,負責部署組件以適應各種環境和協議需求,例如作為反向代理。 + Health and Version - 运行状况和版本 + 執行狀態和版本 + Warning: authentik Domain is not configured, authentication will not work. - 警告:未配置 authentik 域,身份验证将不起作用。 + 警告:未設定 authentik 的網域,身分認證將無法使用。 + Logging in via . - 通过 - 登录。 + 透過以下網址登入。 + No integration active - 没有激活的集成 + 沒有啟用的整合 + Update Outpost 更新 Outpost + View Deployment Info - 查看部署信息 + 檢視部署資訊 + Detailed health (one instance per column, data is cached so may be out of date) + 健康狀態詳細資訊(每一列一個執行個體,使用快取資料所以可能是過時資訊) + Outpost(s) Outpost(s) + Create Outpost - 创建 Outpost + 建立 Outpost + Successfully updated integration. - 已成功更新集成。 + 成功更新整合。 + Successfully created integration. - 已成功创建集成。 + 成功建立整合。 + Local - 本地 + 本機端連線 + If enabled, use the local connection. Required Docker socket/Kubernetes Integration. - 如果启用,请使用本地连接。需要的 Docker Socket/Kubernetes 集成。 + 啟用時,請使用本機連線。需要整合 docker / Kubernetes 的 socket。 + Docker URL - Docker URL + Docker 網址 + Can be in the format of 'unix://' when connecting to a local docker daemon, using 'ssh://' to connect via SSH, or 'https://:2376' when connecting to a remote system. - 连接到本地 docker 守护进程时可以采用 'unix: //' 的格式,通过 SSH 连接时使用 'ssh: //',或者在连接到远程系统时使用 'https://:2376' 的格式。 + 當連接到本機 Docker 常駐程式時,將會是「unix: //」的格式,通過 SSH 連線時使用「ssh: //」,或者當連接到遠端系統時,將會是「https://:2376」的格式。 + CA which the endpoint's Certificate is verified against. Can be left empty for no validation. - 验证终端节点证书所依据的 CA。可以留空以表示不进行验证。 + 驗證終端節點的憑證所需的 CA 憑證。如果為空則不驗證憑證。 + TLS Authentication Certificate/SSH Keypair - TLS 身份验证证书/SSH 密钥对 + TLS 身分認證憑證或 SSH 金鑰對 + Certificate/Key used for authentication. Can be left empty for no authentication. - 用于身份验证的证书/密钥。可以留空,留空表示不进行身份验证。 + 用於身分認證的憑證或金鑰。如果為空則不進行身分認證。 + When connecting via SSH, this keypair is used for authentication. - 通过 SSH 连接时,此密钥对用于身份验证。 + 當使用 SSH 連線時,此金鑰對將用於身分認證。 + Kubeconfig Kubeconfig + Verify Kubernetes API SSL Certificate + 驗證 Kubernetes API 的 SSL 憑證 + New outpost integration - 新前哨集成 + 新增 Outpost 整合 + Create a new outpost integration. - 创建一个新前哨集成。 + 建立一個 Outpost 整合。 + State - + 狀態 + Unhealthy 不健康 + Outpost integration(s) - Outpost 集成 + Outpost 整合 + Successfully generated certificate-key pair. - 成功生成证书密钥对。 + 成功產生金鑰對。 + Common Name - 常用名 + 主體名稱 + Subject-alt name - 替代名称 + 主體別名 + Optional, comma-separated SubjectAlt Names. - 可选,逗号分隔的 subjectAlt 名称。 + 可選:使用逗號分隔多個主體別名。 + Validity days - 有效天数 + 有效天數 + Successfully updated certificate-key pair. - 已成功更新证书密钥对。 + 成功更新金鑰對。 + Successfully created certificate-key pair. - 已成功创建证书密钥对。 + 成功建立金鑰對。 + PEM-encoded Certificate data. - PEM 编码的证书数据。 + PEM 編碼的憑證資料。 + Optional Private Key. If this is set, you can use this keypair for encryption. - 可选私钥。如果设置了此设置,则可以使用此密钥对进行加密。 + 可選:私鑰。如果設定此項,您可以使用金鑰對來加密。 + Certificate-Key Pairs - 证书密钥对 + 憑證金鑰對 + Import certificates of external providers or create certificates to sign requests with. - 导入外部提供商的证书或创建用于签署请求的证书。 + 匯入外部供應商的憑證或建立用於簽署請求的憑證。 + Private key available? - 私钥可用吗? + 是否含有私鑰 + Certificate-Key Pair(s) - 证书密钥对 + 憑證金鑰對 + Managed by authentik 由 authentik 管理 + Managed by authentik (Discovered) - 由 authentik 管理(已发现) + 由 authentik 管理(已發現) + Yes () - Yes ( - ) + 是 () + No - No + + Update Certificate-Key Pair - 更新证书密钥对 + 更新憑證金鑰對 + Certificate Fingerprint (SHA1) - 证书指纹 (SHA1) + 憑證指紋 (SHA1) + Certificate Fingerprint (SHA256) - 证书指纹 (SHA256) + 憑證指紋 (SHA256) + Certificate Subject - 证书主题 + 憑證主題名稱 + Download Certificate - 下载证书 + 下載憑證 + Download Private key - 下载私钥 + 下載私鑰 + Create Certificate-Key Pair - 创建证书密钥对 + 建立憑證金鑰對 + Generate - 生成 + 產生憑證 + Generate Certificate-Key Pair - 生成证书密钥对 + 產生憑證金鑰對 + Successfully updated instance. + 成功更新執行個體 + Successfully created instance. + 成功建立執行個體 + Disabled blueprints are never applied. + 停用的藍圖將永遠不會被應用。 + Local path + 本機路徑 + OCI Registry + OCI Registry + Internal + 內部位置 + OCI URL, in the format of oci://registry.domain.tld/path/to/manifest. + OCI 網址,格式為「oci://registry.domain.tld/path/to/manifest」。 + See more about OCI support here: + 關於更多 OCI 支援請參考: + Blueprint + 藍圖 + Configure the blueprint context, used for templating. + 設定藍圖的上下文,用於作為範本。 + Orphaned + 孤立 + Blueprints + 藍圖 + Automate and template configuration within authentik. + 在 authentik 中自動化和範本化設定。 + Last applied + 最後應用時間 + Blueprint(s) + 藍圖 + Update Blueprint + 更新藍圖 + Create Blueprint Instance + 建立藍圖執行個體 + API Requests - API 请求 + API 要求 + Open API Browser - 打开 API 浏览器 + 打開 API 瀏覽器 + Notifications 通知 + unread - - 未读 + 封尚未讀取 + Successfully cleared notifications - 已成功清除通知 + 成功清除通知 + Clear all - 全部清除 + 清除全部 + A newer version of the frontend is available. - 有较新版本的前端可用。 + 有可用的新版本前端網頁。 + You're currently impersonating . Click to stop. - 你目前正在模拟 - 。单击停止。 + 您現在正在模擬 +。點擊停止模擬。 + User interface - 用户界面 + 使用者介面 + Dashboards - 仪表板 + 儀表板 + Events 事件 + Logs - 日志 + 日誌 + Customisation - 定制 + 客製化設定 + Directory - 目录 + 使用者目錄 + System - 系统 + 系統 + Certificates - 证书 + 憑證 + Outpost Integrations - Outpost 集成 + Outpost 整合 + API request failed - API 请求失败 + API 要求失敗 + User's avatar - 用户的头像 + 使用者的個人檔案圖片 + Something went wrong! Please try again later. - 发生错误,请稍后重试。 + 發生錯誤,請稍後再次嘗試。 + Request ID + 要求 ID + You may close this page now. + 您現在可以關閉這個頁面。 + You're about to be redirect to the following URL. - 您将被重定向到以下 URL。 + 您即將被重新導向到以下網址。 + Follow redirect - 跟随重定向 + 跟隨重新導向 + Request has been denied. - 请求被拒绝。 + 要求被拒。 + Not you? - 不是你? + 不是您? + Need an account? - 需要一个账户? + 需要一個帳號嗎? + Sign up. - 注册。 + 註冊。 + Forgot username or password? - 忘记用户名或密码? + 忘記使用者名稱或密碼? + Select one of the sources below to login. - 选择以下源之一进行登入。 + 選擇一下來源進行登入。 + Or + + Use a security key - 使用安全密钥 + 使用安全金鑰登入 + Login to continue to . - 登入以继续 - + 登入以繼續前往 + Please enter your password - 请输入你的密码 + 請輸入您的密碼 + Forgot password? - 忘记密码了吗? + 忘記密碼 + Application requires following permissions: - 应用程序需要以下权限: + 應用程式需要以下權限: + Application already has access to the following permissions: + 應用程式已用擁有已下存取權限: + Application requires following new permissions: + 應用程式需要新增以下權限: + Check your Inbox for a verification email. - 检查您的收件箱是否有验证电子邮件。 + 檢查您的收件夾確認是否收到驗證電子郵件。 + Send Email again. - 再次发送电子邮件。 + 再次傳送電子郵件。 + Successfully copied TOTP Config. - 成功复制 TOTP 配置。 + 成功複製 TOTP 設定。 + Copy - 复制 + 複製 + Code - 代码 + 認證碼 + Please enter your TOTP Code - 请输入您的 TOTP 代码 + 請輸入您的 TOTP 認證碼 + Duo activation QR code + Duo 啟用的二維條碼 + Alternatively, if your current device has Duo installed, click on this link: - 或者,如果您当前的设备已安装 Duo,请单击此链接: + 或者如果您目前裝置已安裝 Duo,請點擊此連結: + Duo activation - Duo 激活 + Duo 啟用 + Check status - 检查状态 + 檢查狀態 + Make sure to keep these tokens in a safe place. - 确保将这些令牌保存在安全的地方。 + 請將這些權杖保存在安全的地方。 + Phone number - 电话号码 + 電話號碼 + Please enter your Phone number. - 请输入您的电话号码。 + 請輸入您的電話號碼。 + Please enter the code you received via SMS + 請輸入您簡訊收到的認證碼。 + A code has been sent to you via SMS. - 验证码已通过短信发送给您。 + 認證碼已透過簡訊傳送。 + Open your two-factor authenticator app to view your authentication code. + 開啟您的雙重身份認證器應用程式,檢視您的認證碼。 + Static token - 静态令牌 + 靜態權杖 + Authentication code + 認證碼 + Please enter your code + 請輸入您的認證碼 + Return to device picker - 返回设备选择器 + 回到選擇裝置頁面 + Sending Duo push notification + 傳送到 Duo 推播通知 + Assertions is empty - 断言为空 + 斷言為空 + Error when creating credential: - 创建凭证时出错: - + 建立憑證時發生錯誤: + Error when validating assertion on server: - 在服务器上验证断言时出错: - + 在伺服器上驗證斷言發生錯誤: + Retry authentication - 重试身份验证 + 重試身分認證 + Duo push-notifications - 二重奏推送通知 + Duo 推播通知 + Receive a push notification on your device. - 在您的设备上接收推送通知。 + 在您的裝置上接收推播通知。 + Authenticator - 身份验证器 + 身分認證器 + Use a security key to prove your identity. - 使用安全密钥证明您的身份。 + 使用您的安全金鑰證明身分。 + Traditional authenticator - 传统身份验证器 + 傳統身分認證器 + Use a code-based authenticator. - 使用基于代码的身份验证器。 + 使用基於認證碼的身分認證器。 + Recovery keys - 恢复密钥 + 救援金鑰 + In case you can't access any other method. - 万一你无法访问任何其他方法。 + 萬一您無法存取其他方法。 + SMS - 短信 + 簡訊 + Tokens sent via SMS. - 通过短信发送的令牌。 + 通過簡訊傳送權杖。 + Select an authentication method. - 选择一种身份验证方法。 + 選擇一種身分認證方法。 + Stay signed in? + 繼續保持登入? + Select Yes to reduce the number of times you're asked to sign in. + 選擇「是」來減少詢問登入的次數。 + Authenticating with Plex... - 正在使用 Plex 进行身份验证... + 使用 Plex 進行身分認證中…… + Waiting for authentication... + 等待身分認證中…… + If no Plex popup opens, click the button below. + 如果 Plex 彈出視窗未開啟,請點選以下按鈕前往。 + Open login + 開啟登入頁面 + Authenticating with Apple... - 正在使用Apple进行身份验证... + 使用 Apple 進行身分認證中…… + Retry - 重试 + 重試 + Enter the code shown on your device. + 輸入顯示在您裝置上的認證碼。 + Please enter your Code - 请输入您的验证码 + 請輸入認證碼 + You've successfully authenticated your device. + 您已成功透過裝置認證。 + Flow inspector - 流程检查器 + 流程檢閱器 + Next stage - 下一阶段 + 下一個階段 + Stage name - 阶段名 + 階段名稱 + Stage kind - 阶段种类 + 階段類型 + Stage object - 阶段对象 + 階段物件 + This flow is completed. - 此流程已完成。 + 此流程已執行完成。 + Plan history - 计划历史记录 + 計劃歷史紀錄 + Current plan context - 当前计划上下文 + 目前計劃的上下文 + Session ID - 会话 ID + 會談 ID + Powered by authentik - 由 authentik 强力驱动 + 由 authentik 技術支援 + Background image - 背景图片 + 背景圖片 + Error creating credential: - 创建凭证时出错: - + 建立憑證時發生錯誤: + Server validation of credential failed: - 服务器验证凭据失败: - + 伺服器驗證憑證失敗: + Register device - 注册设备 + 註冊裝置 + Refer to documentation + 請參考文件 No Applications available. - 没有可用的应用程序。 + 沒有可用的應用程式。 + Either no applications are defined, or you don’t have access to any. + 尚未有已定義的應用程式,或是您沒有存取任何應用程式的權限。 My Applications - 我的应用 + 我的應用程式 + My applications - 我的应用 + 我的應用程式 + Change your password - 更改你的密码 + 變更您的密碼 + Change password - 修改密码 + 變更密碼 + + Save - 保存 + 儲存 + Delete account - 删除账户 + 刪除帳號 + Successfully updated details - 已成功更新详情 + 成功更新個人資訊 + Open settings - 打开设置 + 開啟設定 + No settings flow configured. - 未配置设置流程 + 未設定設定流程 + Update details - 更新详情 + 更新個人資訊 + Successfully disconnected source + 成功解除來源的連線 + Failed to disconnected source: + 無法解除來自以下來源的連線: + Disconnect - 断开连接 + 解除連線 + Connect - 连接 + 連線 + Error: unsupported source settings: - 错误:不支持的源设置: - + 錯誤:不支援的來源設定: + Connect your user account to the services listed below, to allow you to login using the service instead of traditional credentials. - 将您的用户帐户连接到下面列出的服务,以允许您使用该服务而不是传统凭据登录。 + 將您的使用者帳號與下方的服務連線,讓您可以直接使用該服務而不使用傳統認證登入。 + No services available. - 没有可用的服务。 + 沒有可用的服務。 + Create App password - 创建应用程序密码 + 建立應用程式密碼 + User details - 用户详细信息 + 使用者個人資訊 + Consent 同意 + MFA Devices - MFA 设备 + 多重要素認證裝置 + Connected services - 连接服务 + 已連接的服務 + Tokens and App passwords - 令牌和应用程序密码 + 權杖和應用程式密碼 + Unread notifications - 未读通知 + 未讀取通知 + Admin interface - 管理员界面 + 管理員介面 + Stop impersonation - 停止模拟 + 離開模擬模式 + Avatar image - Avatar image + 個人檔案圖片 + Failed + 失敗 + Unsynced / N/A + 未同步或無法使用 + Outdated outposts - 过时的 Outposts + 過時的 Outposts + Unhealthy outposts 不健康的 Outposts + Next 下一步 + Inactive - 不活跃 + 停用 + Regular user - 普通用户 + 一般使用者 + Activate - 启用 + 啟用 + Use Server URI for SNI verification + 使用伺服器 URI 進行 SNI 驗證 Required for servers using TLS 1.3+ + 伺服器需啟用 TLS 1.3版以上 Client certificate keypair to authenticate against the LDAP Server's Certificate. + 用於對 LDAP 伺服器的憑證進行認證的用戶端憑證金鑰對。 The certificate for the above configured Base DN. As a fallback, the provider uses a self-signed certificate. + 針對上述設定的 Base DN 的憑證。作為備援方案,供應商使用自簽憑證。 TLS Server name + TLS 伺服器名稱 DNS name for which the above configured certificate should be used. The certificate cannot be detected based on the base DN, as the SSL/TLS negotiation happens before such data is exchanged. + 應使用上述設定憑證的 DNS 名稱。Base DN 無法檢測憑證,因為 SSL/TLS 協商發生在此類資料交換之前。 TLS Client authentication certificate + TLS 用戶端認證憑證 Model + 模型 Match events created by selected model. When left empty, all models are matched. + 將選擇的模型與建立的事件配對。如果為空則將符合所有模型。 Code-based MFA Support + 基於認證碼多重要素認證支援 When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + 當啟用此功能時,可以透過在密碼後加上分號及TOTP認證碼(範例:password:totp認證碼)來使用多重要素驗證。您應只有在所有要連線到此服務的使用者都已設定TOTP裝置的情況下,才啟用此功能。如果使用者的密碼中恰好包含分號,可能會因誤判而被拒絕存取。 User type + 使用者類型 Successfully updated license. + 成功更新授權許可證 Successfully created license. + 成功建立授權許可證 Install ID + 安裝 ID License key + 授權金鑰 Licenses + 授權許可證 License(s) + 授權許可證 Enterprise is in preview. + 企業版正處於預覽版本。 Cumulative license expiry + 累計授權到期人數 Update License + 更新授權許可證 Warning: The current user count has exceeded the configured licenses. + 警告:目前的使用者人數已抵達設設定的授權許可上限。 Click here for more info. + 點擊這裡取得更多資訊。 Enterprise + 企業版 Manage enterprise licenses + 管理企業版授權許可證 No licenses found. + 找不到授權許可證。 Send us feedback! + 提供建議給我們! Get a license + 取得授權許可證。 Go to Customer Portal + 前往客戶入口網站 Forecast internal users + 內部使用者預測 Estimated user count one year from now based on current internal users and forecasted internal users. + 基於目前 名內部使用者和預估的 名內部使用者來估計一年後的使用者總數。 Forecast external users + 外部使用者預測 Estimated user count one year from now based on current external users and forecasted external users. + 基於目前 名外部使用者和預估的 名外部使用者來估計一年後的使用者總數。 Install + 安裝 Install License + 安裝授權許可證 Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + 內部使用者可能是像公司員工這樣的使用者,他們將取得全部企業版功能的存取權限。 External users might be external consultants or B2C customers. These users don't get access to enterprise features. + 外部使用者可能是像顧問或是 B2C 客戶這樣的使用者,這些使用者不會取得企業版功能的存取權限。 Service accounts should be used for machine-to-machine authentication or other automations. + 服務帳號應用於機器對機器的身份認證或其他自動化操作。 Less details + 顯示更少資訊 More details + 顯示更多資訊 Remove item + 移除物件 Open API drawer + 開啟 API 下拉選單 Open Notification drawer + 開啟通知下拉選單 Restart task + 重新啟動工作 Add provider + 新增供應商 Open + 開啟 Copy token + 複製權杖 Add users + 新增使用者 Add group + 新增群組 Import devices + 匯入裝置 Execute + 執行 Show details + 顯示詳細資訊 Apply + 套用 Settings + 設定 Sign out + 登出 The number of tokens generated whenever this stage is used. Every token generated per stage execution will be attached to a single static device. + 每當使用此階段時產生的權杖數量。每次階段執行產生的每個權杖都將附加到一個固定裝置上。 Token length + 權杖長度 The length of the individual generated tokens. Can be increased to improve security. + 每個產生的權杖長度。可以增加以提高安全性。 Internal: + 內部使用者: External: + 外部使用者: Statically deny the flow. To use this stage effectively, disable *Evaluate when flow is planned* on the respective binding. + 靜態拒絕的流程。要有效使用此階段,請在相應的附加上停用「在計劃流程時進行評估」。 Create and bind Policy + 建立政策並附加 Federation and Social login + 聯邦式認證和社群登入 Create and bind Stage + 建立階段並附加 Flows and Stages + 流程與階段 New version available + 有可用的新版本 Failure result + 失敗的結果 Pass + 通過 Don't pass + 不要通過 Result used when policy execution fails. + 當政策執行失敗所使用的結果 Required: User verification must occur. + 必需:使用者驗證必需發生。 Preferred: User verification is preferred if available, but not required. + 推薦:使用者驗證作為可選項目而非必需。 Discouraged: User verification should not occur. + 不建議:使用者驗證不應發生。 Required: The authenticator MUST create a dedicated credential. If it cannot, the RP is prepared for an error to occur + 必須:身份認證器必須建立專屬憑證。如果無法建立,依賴方已準備好應對可能發生的錯誤。 Preferred: The authenticator can create and store a dedicated credential, but if it doesn't that's alright too + 推薦:身份認證器可以建立並儲存專屬憑證,但如果沒有建立也沒關係。 Discouraged: The authenticator should not create a dedicated credential + 不建議:身份認證器不應建立專屬憑證。 Lock the user out of this system + 從這個系統中鎖定使用者 Allow the user to log in and use this system + 允許使用者登入並使用這個系統 Temporarily assume the identity of this user + 臨時扮演該使用者的身份 Enter a new password for this user + 為這個使用者輸入新密碼 Create a link for this user to reset their password + 為這個使用者建立連結來重設他們的密碼 WebAuthn requires this page to be accessed via HTTPS. + WebAuthn 需要使用 HTTPS 存取這個頁面。 WebAuthn not supported by browser. + 不支援 WebAuthn 的瀏覽器。 Use this provider with nginx's auth_request or traefik's forwardAuth. Each application/domain needs its own provider. Additionally, on each domain, /outpost.goauthentik.io must be routed to the outpost (when using a managed outpost, this is done for you). + 將此供應商與 nginx 的 auth_request 或 traefik 的 forwardAuth 一起使用。每個應用程式或網域需要其自己的供應商。此外,在每個網域上,/outpost.goauthentik.io 必須路由到 Outpost(當使用代管的 Outpost 時,這將會自動完成)。 Default relay state + 預設中繼狀態 When using IDP-initiated logins, the relay state will be set to this value. + 當使用 Idp 發起的登入時,中繼狀態將會設定為這個值。 Flow Info + 流程資訊 Stage used to configure a WebAuthn authenticator (i.e. Yubikey, FaceID/Windows Hello). + 用於設定 WebAuthn 身份認證器的階段(例如 Yubikey、FaceID/Windows Hello)。 <<<<<<< HEAD Internal application name used in URLs. + 用於網址的應用程式內部名稱。 Submit + 提交 UI Settings + 使用者介面設定 Transparent Reverse Proxy + 透明反向代理 For transparent reverse proxies with required authentication + 用於需要身份認證的透明反向代理 Configure SAML provider manually + 手動設定 SAML 供應商 Configure RADIUS provider manually + 手動設定 RADIUS 供應商 Configure SCIM provider manually + 手動設定 SCIM 供應商 Saving Application... + 儲存應用程式中…… Authentik was unable to save this application: + authentik 無法儲存這個應用程式: Your application has been saved + 已經儲存您的應用程式 In the Application: + 在應用程式: In the Provider: + 在供應商: Method's display Name. + 方法的顯示名稱。 Use this provider with nginx's auth_request or traefik's forwardAuth. Each application/domain needs its own provider. Additionally, on each domain, /outpost.goauthentik.io must be routed to the outpost (when using a managed outpost, this is done for you). + 將此供應商與 nginx 的auth_request或 traefik 的forwardAuth一起使用。 + 每個應用程式或網域需要其自己的供應商。此外,在每個網域上,/outpost.goauthentik.io必須路由到 Outpost(當使用代管的 Outpost 時,這將會自動完成)。 Custom attributes + 客製化特徵項 Don't show this message again. + 不要再顯示這個通知。 Failed to fetch + 擷取失敗 Failed to fetch data. + 擷取資料失敗。 Successfully assigned permission. + 成功分配權限。 Role + 角色 Assign + 分配 Assign permission to role + 分配權限到角色 Assign to new role + 分配給新增角色 Directly assigned + 直接分配 Assign permission to user + 分配權限給使用者 Assign to new user + 分配權限給新增使用者 User Object Permissions + 使用者物件權限 Role Object Permissions + 角色物件權限 Roles + 角色 Select roles to grant this groups' users' permissions from the selected roles. + 選擇角色以授予此群組或使用者從所選角色中的權限。 Update Permissions + 更新權限 Editing is disabled for managed tokens + 代管權杖的編輯功能已停用 Select permissions to grant + 選擇要取得的權限 Permissions to add + 選擇要加入的權限 Select permissions + 選擇權限 Assign permission + 分配權限 Permission(s) + 權限 Permission + 權限 User doesn't have view permission so description cannot be retrieved. + 使用者沒有讀取權限,所以無法取得描述。 Assigned permissions + 已分配的權限 Assigned global permissions + 已分配的全域權限 Assigned object permissions + 已分配的物件權限 Successfully updated role. + 成功更新角色 Successfully created role. + 成功建立角色 Manage roles which grant permissions to objects within authentik. + 在 authentik 中管理角色來賦予物件權限。 Role(s) + 角色 Update Role + 更新角色 Create Role + 建立角色 Role doesn't have view permission so description cannot be retrieved. + 角色沒有讀取權限,所以無法取得描述。 Role + 角色 Role Info + 角色資訊 Pseudolocale (for testing) + 虛擬翻譯語言(用於測試) Create With Wizard + 使用設定精靈建立 One hint, 'New Application Wizard', is currently hidden + 提示:「新增應用程式設定精靈」目前處於隱藏中 External applications that use authentik as an identity provider via protocols like OAuth2 and SAML. All applications are shown here, even ones you cannot access. + 使用 authentik 作為身份供應商的外部應用程式,透過像 OAuth2 和 SAML 這樣的協議。此處顯示所有應用程式,即使是您無法存取的應用程式也包括在內。 Deny message + 拒絕的訊息 Message shown when this stage is run. + 當這個階段執行時會顯示的訊息。 Open Wizard + 開啟設定精靈 Demo Wizard + 設定精靈示範 Run the demo wizard + 執行設定精靈示範 OAuth2/OIDC (Open Authorization/OpenID Connect) + OAuth2/OIDC (Open Authorization/OpenID Connect) LDAP (Lightweight Directory Access Protocol) + LDAP (Lightweight Directory Access Protocol) Forward Auth (Single Application) + 轉發認證(單一應用程式) Forward Auth (Domain Level) + 轉發認證(網域層級) SAML (Security Assertion Markup Language) + SAML (Security Assertion Markup Language) RADIUS (Remote Authentication Dial-In User Service) + RADIUS (Remote Authentication Dial-In User Service) SCIM (System for Cross-domain Identity Management) + SCIM (System for Cross-domain Identity Management) The token has been copied to your clipboard + 權杖已經複製到您的剪貼簿 The token was displayed because authentik does not have permission to write to the clipboard + 因為 authentik 無法複製到您的剪貼簿,權杖資訊顯示在畫面上 A copy of this recovery link has been placed in your clipboard + 救援連結已經複製到您的剪貼簿中 The current tenant must have a recovery flow configured to use a recovery link + 目前的租戶必需設定救援流程,才能使用救援連結 Create recovery link + 建立救援連結 Create Recovery Link + 建立救援連結 External + 外部 Service account + 服務帳號 Service account (internal) + 服務帳號(內部) Check the release notes + 檢視版本資訊 User Statistics + 使用者統計資料 <No name set> + <No name set> For nginx's auth_request or traefik's forwardAuth + 適用於 nginx 的「auth_request」或 traefik 的「forwardAuth」 For nginx's auth_request or traefik's forwardAuth per root domain + 適用於每個主網域的 nginx 的「auth_request」或 traefik 的「forwardAuth」 RBAC is in preview. + RBAC 正處於預覽版本。 User type used for newly created users. + 用於建立使用者的使用者類型。 Users created + 已建立使用者。 Failed logins + 登入失敗 Also known as Client ID. + 也稱為用戶端 ID Also known as Client Secret. + 也稱為用戶端密碼 Global status + 全域狀態 Vendor + 製造商 No sync status. + 無同步的狀態。 Sync currently running. + 正在進行同步。 Connectivity + 連接性 0: Too guessable: risky password. (guesses &lt; 10^3) + 0: 極為容易猜測,高風險密碼。(猜測次數 &lt; 10^3) 1: Very guessable: protection from throttled online attacks. (guesses &lt; 10^6) + 1: 非常容易猜測:可抵抗受限的線上攻擊。(猜測次數 &lt; 10^6) 2: Somewhat guessable: protection from unthrottled online attacks. (guesses &lt; 10^8) + 2: 普通容易猜測:可抵抗不受限的線上攻擊。(猜測次數 &lt; 10^8) 3: Safely unguessable: moderate protection from offline slow-hash scenario. (guesses &lt; 10^10) + 3: 安全難以猜測:在離線的慢速雜湊情境提供中等保護。(猜測次數 &lt; 10^10) 4: Very unguessable: strong protection from offline slow-hash scenario. (guesses &gt;= 10^10) + 4: 非常難以猜測:在離線的慢速雜湊情境提供強力保護。(猜測次數 &gt;= 10^10) Successfully created user and added to group + 成功建立使用者並加入到群組 - This user will be added to the group "". + This user will be added to the group "". + 這個使用者將會被加入到「」群組。 Pretend user exists + 存在模擬的使用者 When enabled, the stage will always accept the given user identifier and continue. + 啟用時,該階段將始終接受給定的使用者識別碼並繼續執行。 - + \ No newline at end of file From 0e810c588745a741b340bac94d0a63d7a1486abe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 12:52:17 +0100 Subject: [PATCH 39/47] core: bump python from 3.11.5-bookworm to 3.12.0-bookworm (#7048) * core: bump python from 3.11.5-bookworm to 3.12.0-bookworm Bumps python from 3.11.5-bookworm to 3.12.0-bookworm. --- updated-dependencies: - dependency-name: python dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * bump ci and docs Signed-off-by: Jens Langhammer * use aiohttp beta to test Signed-off-by: Jens Langhammer * use same image for deps and final Signed-off-by: Jens Langhammer --------- Signed-off-by: dependabot[bot] Signed-off-by: Jens Langhammer Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jens Langhammer --- .github/actions/setup/action.yml | 2 +- Dockerfile | 4 +- poetry.lock | 1710 +++++++++-------- pyproject.toml | 4 +- website/developer-docs/index.md | 2 +- .../setup/full-dev-environment.md | 2 +- 6 files changed, 897 insertions(+), 827 deletions(-) diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index a52a79bf7..acbf0e320 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -35,7 +35,7 @@ runs: run: | export PSQL_TAG=${{ inputs.postgresql_tag }} docker-compose -f .github/actions/setup/docker-compose.yml up -d - poetry env use python3.11 + poetry env use python3.12 poetry install cd web && npm ci - name: Generate config diff --git a/Dockerfile b/Dockerfile index 3d0e27c6c..6db21c26f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -81,7 +81,7 @@ RUN --mount=type=secret,id=GEOIPUPDATE_ACCOUNT_ID \ /bin/sh -c "/usr/bin/entry.sh || echo 'Failed to get GeoIP database, disabling'; exit 0" # Stage 5: Python dependencies -FROM docker.io/python:3.11.5-bookworm AS python-deps +FROM docker.io/python:3.12.0-slim-bookworm AS python-deps WORKDIR /ak-root/poetry @@ -104,7 +104,7 @@ RUN --mount=type=bind,target=./pyproject.toml,src=./pyproject.toml \ poetry install --only=main --no-ansi --no-interaction # Stage 6: Run -FROM docker.io/python:3.11.5-slim-bookworm AS final-image +FROM docker.io/python:3.12.0-slim-bookworm AS final-image ARG GIT_BUILD_HASH ARG VERSION diff --git a/poetry.lock b/poetry.lock index c2b219855..fe90220ed 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,111 +2,98 @@ [[package]] name = "aiohttp" -version = "3.8.6" +version = "3.9.0" description = "Async http client/server framework (asyncio)" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "aiohttp-3.8.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:41d55fc043954cddbbd82503d9cc3f4814a40bcef30b3569bc7b5e34130718c1"}, - {file = "aiohttp-3.8.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1d84166673694841d8953f0a8d0c90e1087739d24632fe86b1a08819168b4566"}, - {file = "aiohttp-3.8.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:253bf92b744b3170eb4c4ca2fa58f9c4b87aeb1df42f71d4e78815e6e8b73c9e"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fd194939b1f764d6bb05490987bfe104287bbf51b8d862261ccf66f48fb4096"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c5f938d199a6fdbdc10bbb9447496561c3a9a565b43be564648d81e1102ac22"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2817b2f66ca82ee699acd90e05c95e79bbf1dc986abb62b61ec8aaf851e81c93"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fa375b3d34e71ccccf172cab401cd94a72de7a8cc01847a7b3386204093bb47"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9de50a199b7710fa2904be5a4a9b51af587ab24c8e540a7243ab737b45844543"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e1d8cb0b56b3587c5c01de3bf2f600f186da7e7b5f7353d1bf26a8ddca57f965"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8e31e9db1bee8b4f407b77fd2507337a0a80665ad7b6c749d08df595d88f1cf5"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7bc88fc494b1f0311d67f29fee6fd636606f4697e8cc793a2d912ac5b19aa38d"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ec00c3305788e04bf6d29d42e504560e159ccaf0be30c09203b468a6c1ccd3b2"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ad1407db8f2f49329729564f71685557157bfa42b48f4b93e53721a16eb813ed"}, - {file = "aiohttp-3.8.6-cp310-cp310-win32.whl", hash = "sha256:ccc360e87341ad47c777f5723f68adbb52b37ab450c8bc3ca9ca1f3e849e5fe2"}, - {file = "aiohttp-3.8.6-cp310-cp310-win_amd64.whl", hash = "sha256:93c15c8e48e5e7b89d5cb4613479d144fda8344e2d886cf694fd36db4cc86865"}, - {file = "aiohttp-3.8.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e2f9cc8e5328f829f6e1fb74a0a3a939b14e67e80832975e01929e320386b34"}, - {file = "aiohttp-3.8.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e6a00ffcc173e765e200ceefb06399ba09c06db97f401f920513a10c803604ca"}, - {file = "aiohttp-3.8.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:41bdc2ba359032e36c0e9de5a3bd00d6fb7ea558a6ce6b70acedf0da86458321"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14cd52ccf40006c7a6cd34a0f8663734e5363fd981807173faf3a017e202fec9"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d5b785c792802e7b275c420d84f3397668e9d49ab1cb52bd916b3b3ffcf09ad"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1bed815f3dc3d915c5c1e556c397c8667826fbc1b935d95b0ad680787896a358"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96603a562b546632441926cd1293cfcb5b69f0b4159e6077f7c7dbdfb686af4d"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d76e8b13161a202d14c9584590c4df4d068c9567c99506497bdd67eaedf36403"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e3f1e3f1a1751bb62b4a1b7f4e435afcdade6c17a4fd9b9d43607cebd242924a"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:76b36b3124f0223903609944a3c8bf28a599b2cc0ce0be60b45211c8e9be97f8"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:a2ece4af1f3c967a4390c284797ab595a9f1bc1130ef8b01828915a05a6ae684"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:16d330b3b9db87c3883e565340d292638a878236418b23cc8b9b11a054aaa887"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:42c89579f82e49db436b69c938ab3e1559e5a4409eb8639eb4143989bc390f2f"}, - {file = "aiohttp-3.8.6-cp311-cp311-win32.whl", hash = "sha256:efd2fcf7e7b9d7ab16e6b7d54205beded0a9c8566cb30f09c1abe42b4e22bdcb"}, - {file = "aiohttp-3.8.6-cp311-cp311-win_amd64.whl", hash = "sha256:3b2ab182fc28e7a81f6c70bfbd829045d9480063f5ab06f6e601a3eddbbd49a0"}, - {file = "aiohttp-3.8.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fdee8405931b0615220e5ddf8cd7edd8592c606a8e4ca2a00704883c396e4479"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d25036d161c4fe2225d1abff2bd52c34ed0b1099f02c208cd34d8c05729882f0"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d791245a894be071d5ab04bbb4850534261a7d4fd363b094a7b9963e8cdbd31"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0cccd1de239afa866e4ce5c789b3032442f19c261c7d8a01183fd956b1935349"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f13f60d78224f0dace220d8ab4ef1dbc37115eeeab8c06804fec11bec2bbd07"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a9b5a0606faca4f6cc0d338359d6fa137104c337f489cd135bb7fbdbccb1e39"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:13da35c9ceb847732bf5c6c5781dcf4780e14392e5d3b3c689f6d22f8e15ae31"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:4d4cbe4ffa9d05f46a28252efc5941e0462792930caa370a6efaf491f412bc66"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:229852e147f44da0241954fc6cb910ba074e597f06789c867cb7fb0621e0ba7a"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:713103a8bdde61d13490adf47171a1039fd880113981e55401a0f7b42c37d071"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:45ad816b2c8e3b60b510f30dbd37fe74fd4a772248a52bb021f6fd65dff809b6"}, - {file = "aiohttp-3.8.6-cp36-cp36m-win32.whl", hash = "sha256:2b8d4e166e600dcfbff51919c7a3789ff6ca8b3ecce16e1d9c96d95dd569eb4c"}, - {file = "aiohttp-3.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:0912ed87fee967940aacc5306d3aa8ba3a459fcd12add0b407081fbefc931e53"}, - {file = "aiohttp-3.8.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e2a988a0c673c2e12084f5e6ba3392d76c75ddb8ebc6c7e9ead68248101cd446"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebf3fd9f141700b510d4b190094db0ce37ac6361a6806c153c161dc6c041ccda"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3161ce82ab85acd267c8f4b14aa226047a6bee1e4e6adb74b798bd42c6ae1f80"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95fc1bf33a9a81469aa760617b5971331cdd74370d1214f0b3109272c0e1e3c"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c43ecfef7deaf0617cee936836518e7424ee12cb709883f2c9a1adda63cc460"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca80e1b90a05a4f476547f904992ae81eda5c2c85c66ee4195bb8f9c5fb47f28"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:90c72ebb7cb3a08a7f40061079817133f502a160561d0675b0a6adf231382c92"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bb54c54510e47a8c7c8e63454a6acc817519337b2b78606c4e840871a3e15349"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:de6a1c9f6803b90e20869e6b99c2c18cef5cc691363954c93cb9adeb26d9f3ae"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:a3628b6c7b880b181a3ae0a0683698513874df63783fd89de99b7b7539e3e8a8"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fc37e9aef10a696a5a4474802930079ccfc14d9f9c10b4662169671ff034b7df"}, - {file = "aiohttp-3.8.6-cp37-cp37m-win32.whl", hash = "sha256:f8ef51e459eb2ad8e7a66c1d6440c808485840ad55ecc3cafefadea47d1b1ba2"}, - {file = "aiohttp-3.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:b2fe42e523be344124c6c8ef32a011444e869dc5f883c591ed87f84339de5976"}, - {file = "aiohttp-3.8.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9e2ee0ac5a1f5c7dd3197de309adfb99ac4617ff02b0603fd1e65b07dc772e4b"}, - {file = "aiohttp-3.8.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01770d8c04bd8db568abb636c1fdd4f7140b284b8b3e0b4584f070180c1e5c62"}, - {file = "aiohttp-3.8.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3c68330a59506254b556b99a91857428cab98b2f84061260a67865f7f52899f5"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89341b2c19fb5eac30c341133ae2cc3544d40d9b1892749cdd25892bbc6ac951"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71783b0b6455ac8f34b5ec99d83e686892c50498d5d00b8e56d47f41b38fbe04"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f628dbf3c91e12f4d6c8b3f092069567d8eb17814aebba3d7d60c149391aee3a"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04691bc6601ef47c88f0255043df6f570ada1a9ebef99c34bd0b72866c217ae"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee912f7e78287516df155f69da575a0ba33b02dd7c1d6614dbc9463f43066e3"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9c19b26acdd08dd239e0d3669a3dddafd600902e37881f13fbd8a53943079dbc"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:99c5ac4ad492b4a19fc132306cd57075c28446ec2ed970973bbf036bcda1bcc6"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f0f03211fd14a6a0aed2997d4b1c013d49fb7b50eeb9ffdf5e51f23cfe2c77fa"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:8d399dade330c53b4106160f75f55407e9ae7505263ea86f2ccca6bfcbdb4921"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ec4fd86658c6a8964d75426517dc01cbf840bbf32d055ce64a9e63a40fd7b771"}, - {file = "aiohttp-3.8.6-cp38-cp38-win32.whl", hash = "sha256:33164093be11fcef3ce2571a0dccd9041c9a93fa3bde86569d7b03120d276c6f"}, - {file = "aiohttp-3.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:bdf70bfe5a1414ba9afb9d49f0c912dc524cf60141102f3a11143ba3d291870f"}, - {file = "aiohttp-3.8.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d52d5dc7c6682b720280f9d9db41d36ebe4791622c842e258c9206232251ab2b"}, - {file = "aiohttp-3.8.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4ac39027011414dbd3d87f7edb31680e1f430834c8cef029f11c66dad0670aa5"}, - {file = "aiohttp-3.8.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3f5c7ce535a1d2429a634310e308fb7d718905487257060e5d4598e29dc17f0b"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b30e963f9e0d52c28f284d554a9469af073030030cef8693106d918b2ca92f54"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:918810ef188f84152af6b938254911055a72e0f935b5fbc4c1a4ed0b0584aed1"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fcf3eabd3fd1a5e6092d1242295fa37d0354b2eb2077e6eb670accad78e40e1"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:255ba9d6d5ff1a382bb9a578cd563605aa69bec845680e21c44afc2670607a95"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d67f8baed00870aa390ea2590798766256f31dc5ed3ecc737debb6e97e2ede78"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:86f20cee0f0a317c76573b627b954c412ea766d6ada1a9fcf1b805763ae7feeb"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:39a312d0e991690ccc1a61f1e9e42daa519dcc34ad03eb6f826d94c1190190dd"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e827d48cf802de06d9c935088c2924e3c7e7533377d66b6f31ed175c1620e05e"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bd111d7fc5591ddf377a408ed9067045259ff2770f37e2d94e6478d0f3fc0c17"}, - {file = "aiohttp-3.8.6-cp39-cp39-win32.whl", hash = "sha256:caf486ac1e689dda3502567eb89ffe02876546599bbf915ec94b1fa424eeffd4"}, - {file = "aiohttp-3.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:3f0e27e5b733803333bb2371249f41cf42bae8884863e8e8965ec69bebe53132"}, - {file = "aiohttp-3.8.6.tar.gz", hash = "sha256:b0cf2a4501bff9330a8a5248b4ce951851e415bdcce9dc158e76cfd55e15085c"}, + {file = "aiohttp-3.9.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6896b8416be9ada4d22cd359d7cb98955576ce863eadad5596b7cdfbf3e17c6c"}, + {file = "aiohttp-3.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1736d87dad8ef46a8ec9cddd349fa9f7bd3a064c47dd6469c0d6763d3d49a4fc"}, + {file = "aiohttp-3.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c9e5f4d7208cda1a2bb600e29069eecf857e6980d0ccc922ccf9d1372c16f4b"}, + {file = "aiohttp-3.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8488519aa05e636c5997719fe543c8daf19f538f4fa044f3ce94bee608817cff"}, + {file = "aiohttp-3.9.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ab16c254e2312efeb799bc3c06897f65a133b38b69682bf75d1f1ee1a9c43a9"}, + {file = "aiohttp-3.9.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7a94bde005a8f926d0fa38b88092a03dea4b4875a61fbcd9ac6f4351df1b57cd"}, + {file = "aiohttp-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b777c9286b6c6a94f50ddb3a6e730deec327e9e2256cb08b5530db0f7d40fd8"}, + {file = "aiohttp-3.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:571760ad7736b34d05597a1fd38cbc7d47f7b65deb722cb8e86fd827404d1f6b"}, + {file = "aiohttp-3.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:deac0a32aec29608eb25d730f4bc5a261a65b6c48ded1ed861d2a1852577c932"}, + {file = "aiohttp-3.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4ee1b4152bc3190cc40ddd6a14715e3004944263ea208229ab4c297712aa3075"}, + {file = "aiohttp-3.9.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:3607375053df58ed6f23903aa10cf3112b1240e8c799d243bbad0f7be0666986"}, + {file = "aiohttp-3.9.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:65b0a70a25456d329a5e1426702dde67be0fb7a4ead718005ba2ca582d023a94"}, + {file = "aiohttp-3.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a2eb5311a37fe105aa35f62f75a078537e1a9e4e1d78c86ec9893a3c97d7a30"}, + {file = "aiohttp-3.9.0-cp310-cp310-win32.whl", hash = "sha256:2cbc14a13fb6b42d344e4f27746a4b03a2cb0c1c3c5b932b0d6ad8881aa390e3"}, + {file = "aiohttp-3.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ac9669990e2016d644ba8ae4758688534aabde8dbbc81f9af129c3f5f01ca9cd"}, + {file = "aiohttp-3.9.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f8e05f5163528962ce1d1806fce763ab893b1c5b7ace0a3538cd81a90622f844"}, + {file = "aiohttp-3.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4afa8f71dba3a5a2e1e1282a51cba7341ae76585345c43d8f0e624882b622218"}, + {file = "aiohttp-3.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f929f4c9b9a00f3e6cc0587abb95ab9c05681f8b14e0fe1daecfa83ea90f8318"}, + {file = "aiohttp-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28185e36a78d247c55e9fbea2332d16aefa14c5276a582ce7a896231c6b1c208"}, + {file = "aiohttp-3.9.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a486ddf57ab98b6d19ad36458b9f09e6022de0381674fe00228ca7b741aacb2f"}, + {file = "aiohttp-3.9.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70e851f596c00f40a2f00a46126c95c2e04e146015af05a9da3e4867cfc55911"}, + {file = "aiohttp-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5b7bf8fe4d39886adc34311a233a2e01bc10eb4e842220235ed1de57541a896"}, + {file = "aiohttp-3.9.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c67a51ea415192c2e53e4e048c78bab82d21955b4281d297f517707dc836bf3d"}, + {file = "aiohttp-3.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:694df243f394629bcae2d8ed94c589a181e8ba8604159e6e45e7b22e58291113"}, + {file = "aiohttp-3.9.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3dd8119752dd30dd7bca7d4bc2a92a59be6a003e4e5c2cf7e248b89751b8f4b7"}, + {file = "aiohttp-3.9.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:eb6dfd52063186ac97b4caa25764cdbcdb4b10d97f5c5f66b0fa95052e744eb7"}, + {file = "aiohttp-3.9.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:d97c3e286d0ac9af6223bc132dc4bad6540b37c8d6c0a15fe1e70fb34f9ec411"}, + {file = "aiohttp-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:816f4db40555026e4cdda604a1088577c1fb957d02f3f1292e0221353403f192"}, + {file = "aiohttp-3.9.0-cp311-cp311-win32.whl", hash = "sha256:3abf0551874fecf95f93b58f25ef4fc9a250669a2257753f38f8f592db85ddea"}, + {file = "aiohttp-3.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:e18d92c3e9e22553a73e33784fcb0ed484c9874e9a3e96c16a8d6a1e74a0217b"}, + {file = "aiohttp-3.9.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:99ae01fb13a618b9942376df77a1f50c20a281390dad3c56a6ec2942e266220d"}, + {file = "aiohttp-3.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:05857848da443c8c12110d99285d499b4e84d59918a21132e45c3f0804876994"}, + {file = "aiohttp-3.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:317719d7f824eba55857fe0729363af58e27c066c731bc62cd97bc9c3d9c7ea4"}, + {file = "aiohttp-3.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1e3b3c107ccb0e537f309f719994a55621acd2c8fdf6d5ce5152aed788fb940"}, + {file = "aiohttp-3.9.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45820ddbb276113ead8d4907a7802adb77548087ff5465d5c554f9aa3928ae7d"}, + {file = "aiohttp-3.9.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:05a183f1978802588711aed0dea31e697d760ce9055292db9dc1604daa9a8ded"}, + {file = "aiohttp-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a4cd44788ea0b5e6bb8fa704597af3a30be75503a7ed1098bc5b8ffdf6c982"}, + {file = "aiohttp-3.9.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:673343fbc0c1ac44d0d2640addc56e97a052504beacd7ade0dc5e76d3a4c16e8"}, + {file = "aiohttp-3.9.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e8a3b79b6d186a9c99761fd4a5e8dd575a48d96021f220ac5b5fa856e5dd029"}, + {file = "aiohttp-3.9.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6777a390e41e78e7c45dab43a4a0196c55c3b8c30eebe017b152939372a83253"}, + {file = "aiohttp-3.9.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7ae5f99a32c53731c93ac3075abd3e1e5cfbe72fc3eaac4c27c9dd64ba3b19fe"}, + {file = "aiohttp-3.9.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:f1e4f254e9c35d8965d377e065c4a8a55d396fe87c8e7e8429bcfdeeb229bfb3"}, + {file = "aiohttp-3.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11ca808f9a6b63485059f5f6e164ef7ec826483c1212a44f268b3653c91237d8"}, + {file = "aiohttp-3.9.0-cp312-cp312-win32.whl", hash = "sha256:de3cc86f4ea8b4c34a6e43a7306c40c1275e52bfa9748d869c6b7d54aa6dad80"}, + {file = "aiohttp-3.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca4fddf84ac7d8a7d0866664936f93318ff01ee33e32381a115b19fb5a4d1202"}, + {file = "aiohttp-3.9.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f09960b5bb1017d16c0f9e9f7fc42160a5a49fa1e87a175fd4a2b1a1833ea0af"}, + {file = "aiohttp-3.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8303531e2c17b1a494ffaeba48f2da655fe932c4e9a2626c8718403c83e5dd2b"}, + {file = "aiohttp-3.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4790e44f46a4aa07b64504089def5744d3b6780468c4ec3a1a36eb7f2cae9814"}, + {file = "aiohttp-3.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1d7edf74a36de0e5ca50787e83a77cf352f5504eb0ffa3f07000a911ba353fb"}, + {file = "aiohttp-3.9.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94697c7293199c2a2551e3e3e18438b4cba293e79c6bc2319f5fd652fccb7456"}, + {file = "aiohttp-3.9.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a1b66dbb8a7d5f50e9e2ea3804b01e766308331d0cac76eb30c563ac89c95985"}, + {file = "aiohttp-3.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9623cfd9e85b76b83ef88519d98326d4731f8d71869867e47a0b979ffec61c73"}, + {file = "aiohttp-3.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f32c86dc967ab8c719fd229ce71917caad13cc1e8356ee997bf02c5b368799bf"}, + {file = "aiohttp-3.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f50b4663c3e0262c3a361faf440761fbef60ccdde5fe8545689a4b3a3c149fb4"}, + {file = "aiohttp-3.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dcf71c55ec853826cd70eadb2b6ac62ec577416442ca1e0a97ad875a1b3a0305"}, + {file = "aiohttp-3.9.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:42fe4fd9f0dfcc7be4248c162d8056f1d51a04c60e53366b0098d1267c4c9da8"}, + {file = "aiohttp-3.9.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76a86a9989ebf82ee61e06e2bab408aec4ea367dc6da35145c3352b60a112d11"}, + {file = "aiohttp-3.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f9e09a1c83521d770d170b3801eea19b89f41ccaa61d53026ed111cb6f088887"}, + {file = "aiohttp-3.9.0-cp38-cp38-win32.whl", hash = "sha256:a00ce44c21612d185c5275c5cba4bab8d7c1590f248638b667ed8a782fa8cd6f"}, + {file = "aiohttp-3.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:d5b9345ab92ebe6003ae11d8092ce822a0242146e6fa270889b9ba965457ca40"}, + {file = "aiohttp-3.9.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98d21092bf2637c5fa724a428a69e8f5955f2182bff61f8036827cf6ce1157bf"}, + {file = "aiohttp-3.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:35a68cd63ca6aaef5707888f17a70c36efe62b099a4e853d33dc2e9872125be8"}, + {file = "aiohttp-3.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7f6235c7475658acfc1769d968e07ab585c79f6ca438ddfecaa9a08006aee2"}, + {file = "aiohttp-3.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db04d1de548f7a62d1dd7e7cdf7c22893ee168e22701895067a28a8ed51b3735"}, + {file = "aiohttp-3.9.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:536b01513d67d10baf6f71c72decdf492fb7433c5f2f133e9a9087379d4b6f31"}, + {file = "aiohttp-3.9.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c8b0a6487e8109427ccf638580865b54e2e3db4a6e0e11c02639231b41fc0f"}, + {file = "aiohttp-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7276fe0017664414fdc3618fca411630405f1aaf0cc3be69def650eb50441787"}, + {file = "aiohttp-3.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23170247ef89ffa842a02bbfdc425028574d9e010611659abeb24d890bc53bb8"}, + {file = "aiohttp-3.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b1a2ea8252cacc7fd51df5a56d7a2bb1986ed39be9397b51a08015727dfb69bd"}, + {file = "aiohttp-3.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2d71abc15ff7047412ef26bf812dfc8d0d1020d664617f4913df2df469f26b76"}, + {file = "aiohttp-3.9.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:2d820162c8c2bdbe97d328cd4f417c955ca370027dce593345e437b2e9ffdc4d"}, + {file = "aiohttp-3.9.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:2779f5e7c70f7b421915fd47db332c81de365678180a9f3ab404088f87ba5ff9"}, + {file = "aiohttp-3.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:366bc870d7ac61726f32a489fbe3d1d8876e87506870be66b01aeb84389e967e"}, + {file = "aiohttp-3.9.0-cp39-cp39-win32.whl", hash = "sha256:1df43596b826022b14998f0460926ce261544fedefe0d2f653e1b20f49e96454"}, + {file = "aiohttp-3.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:9c196b30f1b1aa3363a69dd69079ae9bec96c2965c4707eaa6914ba099fb7d4f"}, + {file = "aiohttp-3.9.0.tar.gz", hash = "sha256:09f23292d29135025e19e8ff4f0a68df078fe4ee013bca0105b2e803989de92d"}, ] [package.dependencies] aiosignal = ">=1.1.2" -async-timeout = ">=4.0.0a3,<5.0" attrs = ">=17.3.0" -charset-normalizer = ">=2.0,<4.0" frozenlist = ">=1.1.1" multidict = ">=4.5,<7.0" yarl = ">=1.0,<2.0" [package.extras] -speedups = ["Brotli", "aiodns", "cchardet"] +speedups = ["Brotli", "aiodns", "brotlicffi"] [[package]] name = "aiohttp-retry" @@ -138,27 +125,27 @@ frozenlist = ">=1.1.0" [[package]] name = "amqp" -version = "5.1.1" +version = "5.2.0" description = "Low-level AMQP client for Python (fork of amqplib)." optional = false python-versions = ">=3.6" files = [ - {file = "amqp-5.1.1-py3-none-any.whl", hash = "sha256:6f0956d2c23d8fa6e7691934d8c3930eadb44972cbbd1a7ae3a520f735d43359"}, - {file = "amqp-5.1.1.tar.gz", hash = "sha256:2c1b13fecc0893e946c65cbd5f36427861cffa4ea2201d8f6fca22e2a373b5e2"}, + {file = "amqp-5.2.0-py3-none-any.whl", hash = "sha256:827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637"}, + {file = "amqp-5.2.0.tar.gz", hash = "sha256:a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd"}, ] [package.dependencies] -vine = ">=5.0.0" +vine = ">=5.0.0,<6.0.0" [[package]] name = "annotated-types" -version = "0.5.0" +version = "0.6.0" description = "Reusable constraint types to use with typing.Annotated" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "annotated_types-0.5.0-py3-none-any.whl", hash = "sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd"}, - {file = "annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"}, + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] [[package]] @@ -274,17 +261,6 @@ files = [ {file = "astroid-3.0.1.tar.gz", hash = "sha256:86b0bb7d7da0be1a7c4aedb7974e391b32d4ed89e33de6ed6902b4b15c97577e"}, ] -[[package]] -name = "async-timeout" -version = "4.0.3" -description = "Timeout context manager for asyncio programs" -optional = false -python-versions = ">=3.7" -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"}, -] - [[package]] name = "attrs" version = "23.1.0" @@ -484,63 +460,65 @@ files = [ [[package]] name = "cachetools" -version = "5.3.1" +version = "5.3.2" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.1-py3-none-any.whl", hash = "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590"}, - {file = "cachetools-5.3.1.tar.gz", hash = "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b"}, + {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, + {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, ] [[package]] name = "cbor2" -version = "5.4.6" +version = "5.5.1" description = "CBOR (de)serializer with extensive tag support" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "cbor2-5.4.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:309fffbb7f561d67f02095d4b9657b73c9220558701c997e9bfcfbca2696e927"}, - {file = "cbor2-5.4.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff95b33e5482313a74648ca3620c9328e9f30ecfa034df040b828e476597d352"}, - {file = "cbor2-5.4.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db9eb582fce972f0fa429d8159b7891ff8deccb7affc4995090afc61ce0d328a"}, - {file = "cbor2-5.4.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3950be57a1698086cf26d8710b4e5a637b65133c5b1f9eec23967d4089d8cfed"}, - {file = "cbor2-5.4.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:78304df140b9e13b93bcbb2aecee64c9aaa9f1cadbd45f043b5e7b93cc2f21a2"}, - {file = "cbor2-5.4.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e73ca40dd3c7210ff776acff9869ddc9ff67bae7c425b58e5715dcf55275163f"}, - {file = "cbor2-5.4.6-cp310-cp310-win_amd64.whl", hash = "sha256:0b956f19e93ba3180c336282cd1b6665631f2d3a196a9c19b29a833bf979e7a4"}, - {file = "cbor2-5.4.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c12c0ab78f5bc290b08a79152a8621822415836a86f8f4b50dadba371736fda"}, - {file = "cbor2-5.4.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3545b16f9f0d5f34d4c99052829c3726020a07be34c99c250d0df87418f02954"}, - {file = "cbor2-5.4.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24144822f8d2b0156f4cda9427f071f969c18683ffed39663dc86bc0a75ae4dd"}, - {file = "cbor2-5.4.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1835536e76ea16e88c934aac5e369ba9f93d495b01e5fa2d93f0b4986b89146d"}, - {file = "cbor2-5.4.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:39452c799453f5bf33281ffc0752c620b8bfa0b7c13070b87d370257a1311976"}, - {file = "cbor2-5.4.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3316f09a77af85e7772ecfdd693b0f450678a60b1aee641bac319289757e3fa0"}, - {file = "cbor2-5.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:456cdff668a50a52fdb8aa6d0742511e43ed46d6a5b463dba80a5a720fa0d320"}, - {file = "cbor2-5.4.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9394ca49ecdf0957924e45d09a4026482d184a465a047f60c4044eb464c43de9"}, - {file = "cbor2-5.4.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56dfa030cd3d67e5b6701d3067923f2f61536a8ffb1b45be14775d1e866b59ae"}, - {file = "cbor2-5.4.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5094562dfe3e5583202b93ef7ca5082c2ba5571accb2c4412d27b7d0ba8a563"}, - {file = "cbor2-5.4.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:94f844d0e232aca061a86dd6ff191e47ba0389ddd34acb784ad9a41594dc99a4"}, - {file = "cbor2-5.4.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7bbd3470eb685325398023e335be896b74f61b014896604ed45049a7b7b6d8ac"}, - {file = "cbor2-5.4.6-cp37-cp37m-win_amd64.whl", hash = "sha256:0bd12c54a48949d11f5ffc2fa27f5df1b4754111f5207453e5fae3512ebb3cab"}, - {file = "cbor2-5.4.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2984a488f350aee1d54fa9cb8c6a3c1f1f5b268abbc91161e47185de4d829f3"}, - {file = "cbor2-5.4.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c285a2cb2c04004bfead93df89d92a0cef1874ad337d0cb5ea53c2c31e97bfdb"}, - {file = "cbor2-5.4.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6709d97695205cd08255363b54afa035306d5302b7b5e38308c8ff5a47e60f2a"}, - {file = "cbor2-5.4.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96087fa5336ebfc94465c0768cd5de0fcf9af3840d2cf0ce32f5767855f1a293"}, - {file = "cbor2-5.4.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0d2b926b024d3a1549b819bc82fdc387062bbd977b0299dd5fa5e0ea3267b98b"}, - {file = "cbor2-5.4.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6e1b5aee920b6a2f737aa12e2b54de3826b09f885a7ce402db84216343368140"}, - {file = "cbor2-5.4.6-cp38-cp38-win_amd64.whl", hash = "sha256:79e048e623846d60d735bb350263e8fdd36cb6195d7f1a2b57eacd573d9c0b33"}, - {file = "cbor2-5.4.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80ac8ba450c7a41c5afe5f7e503d3092442ed75393e1de162b0bf0d97edf7c7f"}, - {file = "cbor2-5.4.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ce1a2c272ba8523a55ea2f1d66e3464e89fa0e37c9a3d786a919fe64e68dbd7"}, - {file = "cbor2-5.4.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1618d16e310f7ffed141762b0ff5d8bb6b53ad449406115cc465bf04213cefcf"}, - {file = "cbor2-5.4.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bbbdb2e3ef274865dc3f279aae109b5d94f4654aea3c72c479fb37e4a1e7ed7"}, - {file = "cbor2-5.4.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6f9c702bee2954fffdfa3de95a5af1a6b1c5f155e39490353d5654d83bb05bb9"}, - {file = "cbor2-5.4.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b9f3924da0e460a93b3674c7e71020dd6c9e9f17400a34e52a88c0af2dcd2aa"}, - {file = "cbor2-5.4.6-cp39-cp39-win_amd64.whl", hash = "sha256:d54bd840b4fe34f097b8665fc0692c7dd175349e53976be6c5de4433b970daa4"}, - {file = "cbor2-5.4.6-py3-none-any.whl", hash = "sha256:181ac494091d1f9c5bb373cd85514ce1eb967a8cf3ec298e8dfa8878aa823956"}, - {file = "cbor2-5.4.6.tar.gz", hash = "sha256:b893500db0fe033e570c3adc956af6eefc57e280026bd2d86fd53da9f1e594d7"}, + {file = "cbor2-5.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:37ba4f719384bd4ea317e92a8763ea343e205f3112c8241778fd9dbc64ae1498"}, + {file = "cbor2-5.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:425ae919120b9d05b4794b3e5faf6584fc47a9d61db059d4f00ce16ae93a3f63"}, + {file = "cbor2-5.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c511ff6356d6f4292ced856d5048a24ee61a85634816f29dadf1f089e8cb4f9"}, + {file = "cbor2-5.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6ab54a9282dd99a3a70d0f64706d3b3592e7920564a93101caa74dec322346c"}, + {file = "cbor2-5.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:39d94852dd61bda5b3d2bfe74e7b194a7199937d270f90099beec3e7584f0c9b"}, + {file = "cbor2-5.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:65532ba929beebe1c63317ad00c79d4936b60a5c29a3c329d2aa7df4e72ad907"}, + {file = "cbor2-5.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:1206180f66a9ad23e692cf457610c877f186ad303a1264b6c5335015b7bee83e"}, + {file = "cbor2-5.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:42155a20be46312fad2ceb85a408e2d90da059c2d36a65e0b99abca57c5357fd"}, + {file = "cbor2-5.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6f3827ae14c009df9b37790f1da5cd1f9d64f7ffec472a49ebf865c0af6b77e9"}, + {file = "cbor2-5.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bfa417dbb8b4581ad3c2312469899518596551cfb0fe5bdaf8a6921cff69d7e"}, + {file = "cbor2-5.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3317e7dfb4f3180be90bcd853204558d89f119b624c2168153b53dea305e79d"}, + {file = "cbor2-5.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a5770bdf4340de55679efe6c38fc6d64529fda547e7a85eb0217a82717a8235"}, + {file = "cbor2-5.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b5d53826ad0c92fcb004b2a475896610b51e0ca010f6c37d762aae44ab0807b2"}, + {file = "cbor2-5.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc77cac985f7f7a20f2d8b1957d1e79393d7df823f61c7c6173d3a0011c1d770"}, + {file = "cbor2-5.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9e45d5aa8e484b4bf57240d8e7949389f1c9d4073758abb30954386321b55c9d"}, + {file = "cbor2-5.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:93b949a66bec40dd0ca87a6d026136fea2cf1660120f921199a47ac8027af253"}, + {file = "cbor2-5.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93d601ca92d917f769370a5e6c3ead62dca6451b2b603915e4fcf300083b9fcd"}, + {file = "cbor2-5.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11876abd50b9f70d114fcdbb0b5a3249ccd7d321465f0350028fd6d2317e114"}, + {file = "cbor2-5.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fd77c558decdba2a2a7a463e6346d53781d2163bacf205f77b999f561ba4ac73"}, + {file = "cbor2-5.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efb81920d80410b8e80a4a6a8b06ec9b766be0ae7f3029af8ae4b30914edcfa3"}, + {file = "cbor2-5.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:4bb35f3b1ebd4b7b37628f0cd5c839f3008dec669194a2a4a33d91bab7f8663b"}, + {file = "cbor2-5.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f41e4a439f642954ed728dc18915098b5f2ebec7029eaebe52c06c52b6a9a63a"}, + {file = "cbor2-5.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4eae4d56314f22920a28bf7affefdfc918646877ce3b16220dc6cf38a584aa41"}, + {file = "cbor2-5.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:559a0c1ec8dcedd6142b81727403e0f5a2e8f4c18e8bb3c548107ec39af4e9cb"}, + {file = "cbor2-5.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537da7bfee97ee44a11b300c034c18e674af6a5dc4718a6fba141037f099c7ec"}, + {file = "cbor2-5.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5c99fd8bbc6bbf3bf4d6b2996594ae633b778b27b0531559487950762c4e1e3f"}, + {file = "cbor2-5.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4ee46e6dbc8e2cf302a022fec513d57dba65e9d5ec495bcd1ad97a5dbdbab249"}, + {file = "cbor2-5.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:67e2be461320197495fff55f250b111d4125a0a2d02e6256e41f8598adc3ad3f"}, + {file = "cbor2-5.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4384a56afef0b908b61c8ea3cca3e257a316427ace3411308f51ee301b23adf9"}, + {file = "cbor2-5.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8cc64acc606b7f2a4b673a1d6cde5a9cb1860a6ce27b353e269c9535efbd62c"}, + {file = "cbor2-5.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50019fea3cb07fa9b2b53772a52b4243e87de232591570c4c272b3ebdb419493"}, + {file = "cbor2-5.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a18be0af9241883bc67a036c1f33e3f9956d31337ccd412194bf759bc1095e03"}, + {file = "cbor2-5.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:60e7e0073291096605de27de3ce006148cf9a095199160439555f14f93d044d5"}, + {file = "cbor2-5.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:41f7501338228b27dac88c1197928cf8985f6fc775f59be89c6fdaddb4e69658"}, + {file = "cbor2-5.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c85ab7697252af2240e939707c935ea18081ccb580d4b5b9a94b04148ab2c32b"}, + {file = "cbor2-5.5.1-py3-none-any.whl", hash = "sha256:dca639c8ff81b9f0c92faf97324adfdbfb5c2a5bb97f249606c6f5b94c77cc0d"}, + {file = "cbor2-5.5.1.tar.gz", hash = "sha256:f9e192f461a9f8f6082df28c035b006d153904213dc8640bed8a72d72bbc9475"}, ] [package.extras] -doc = ["sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["pytest", "pytest-cov"] +benchmarks = ["pytest-benchmark (==4.0.0)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.3.0)", "typing-extensions"] +test = ["coverage (>=7)", "hypothesis", "pytest"] [[package]] name = "celery" @@ -599,86 +577,74 @@ zstd = ["zstandard (==0.22.0)"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] [[package]] name = "cffi" -version = "1.15.1" +version = "1.16.0" description = "Foreign Function Interface for Python calling C code." optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] [package.dependencies] @@ -727,86 +693,101 @@ tests = ["async-timeout", "cryptography (>=1.3.0)", "pytest", "pytest-asyncio", [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] @@ -902,13 +883,13 @@ files = [ [[package]] name = "constantly" -version = "15.1.0" +version = "23.10.4" description = "Symbolic constants in Python" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "constantly-15.1.0-py2.py3-none-any.whl", hash = "sha256:dd2fa9d6b1a51a83f0d7dd76293d734046aa176e384bf6e33b7e44880eb37c5d"}, - {file = "constantly-15.1.0.tar.gz", hash = "sha256:586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"}, + {file = "constantly-23.10.4-py3-none-any.whl", hash = "sha256:3fd9b4d1c3dc1ec9757f3c52aef7e53ad9323dbe39f51dfd4c43853b68dfa3f9"}, + {file = "constantly-23.10.4.tar.gz", hash = "sha256:aa92b70a33e2ac0bb33cd745eb61776594dc48764b06c35e0efd050b7f1c7cbd"}, ] [[package]] @@ -977,34 +958,34 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.4" +version = "41.0.5" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839"}, - {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143"}, - {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397"}, - {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860"}, - {file = "cryptography-41.0.4-cp37-abi3-win32.whl", hash = "sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd"}, - {file = "cryptography-41.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311"}, - {file = "cryptography-41.0.4.tar.gz", hash = "sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a"}, + {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797"}, + {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20"}, + {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548"}, + {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d"}, + {file = "cryptography-41.0.5-cp37-abi3-win32.whl", hash = "sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936"}, + {file = "cryptography-41.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84"}, + {file = "cryptography-41.0.5.tar.gz", hash = "sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7"}, ] [package.dependencies] @@ -1374,33 +1355,19 @@ six = "*" [[package]] name = "email-validator" -version = "2.0.0.post2" +version = "2.1.0.post1" description = "A robust email address syntax and deliverability validation library." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "email_validator-2.0.0.post2-py3-none-any.whl", hash = "sha256:2466ba57cda361fb7309fd3d5a225723c788ca4bbad32a0ebd5373b99730285c"}, - {file = "email_validator-2.0.0.post2.tar.gz", hash = "sha256:1ff6e86044200c56ae23595695c54e9614f4a9551e0e393614f764860b3d7900"}, + {file = "email_validator-2.1.0.post1-py3-none-any.whl", hash = "sha256:c973053efbeddfef924dc0bd93f6e77a1ea7ee0fce935aea7103c7a3d6d2d637"}, + {file = "email_validator-2.1.0.post1.tar.gz", hash = "sha256:a4b0bd1cf55f073b924258d19321b1f3aa74b4b5a71a42c305575dba920e1a44"}, ] [package.dependencies] dnspython = ">=2.0.0" idna = ">=2.0.0" -[[package]] -name = "exceptiongroup" -version = "1.1.3" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, -] - -[package.extras] -test = ["pytest (>=6)"] - [[package]] name = "facebook-sdk" version = "3.1.0" @@ -1535,13 +1502,13 @@ requests = ">=2.24.0,<3.0.0" [[package]] name = "gitdb" -version = "4.0.10" +version = "4.0.11" description = "Git Object Database" optional = false python-versions = ">=3.7" files = [ - {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, - {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, ] [package.dependencies] @@ -1549,44 +1516,43 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.37" +version = "3.1.40" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.37-py3-none-any.whl", hash = "sha256:5f4c4187de49616d710a77e98ddf17b4782060a1788df441846bddefbb89ab33"}, - {file = "GitPython-3.1.37.tar.gz", hash = "sha256:f9b9ddc0761c125d5780eab2d64be4873fc6817c2899cbcb34b02344bdc7bc54"}, + {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"}, + {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"}, ] [package.dependencies] gitdb = ">=4.0.1,<5" [package.extras] -test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-sugar"] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"] [[package]] name = "google-auth" -version = "2.17.3" +version = "2.23.4" description = "Google Authentication Library" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" +python-versions = ">=3.7" files = [ - {file = "google-auth-2.17.3.tar.gz", hash = "sha256:ce311e2bc58b130fddf316df57c9b3943c2a7b4f6ec31de9663a9333e4064efc"}, - {file = "google_auth-2.17.3-py2.py3-none-any.whl", hash = "sha256:f586b274d3eb7bd932ea424b1c702a30e0393a2e2bc4ca3eae8263ffd8be229f"}, + {file = "google-auth-2.23.4.tar.gz", hash = "sha256:79905d6b1652187def79d491d6e23d0cbb3a21d3c7ba0dbaa9c8a01906b13ff3"}, + {file = "google_auth-2.23.4-py2.py3-none-any.whl", hash = "sha256:d4bbc92fe4b8bfd2f3e8d88e5ba7085935da208ee38a134fc280e7ce682a05f2"}, ] [package.dependencies] cachetools = ">=2.0.0,<6.0" pyasn1-modules = ">=0.2.1" -rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""} -six = ">=1.9.0" +rsa = ">=3.1.4,<5" [package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "requests (>=2.20.0,<3.0.0dev)"] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] -requests = ["requests (>=2.20.0,<3.0.0dev)"] +requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "gprof2dot" @@ -1632,46 +1598,47 @@ files = [ [[package]] name = "httptools" -version = "0.6.0" +version = "0.6.1" description = "A collection of framework independent HTTP protocol utils." optional = false -python-versions = ">=3.5.0" +python-versions = ">=3.8.0" files = [ - {file = "httptools-0.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:818325afee467d483bfab1647a72054246d29f9053fd17cc4b86cda09cc60339"}, - {file = "httptools-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72205730bf1be875003692ca54a4a7c35fac77b4746008966061d9d41a61b0f5"}, - {file = "httptools-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33eb1d4e609c835966e969a31b1dedf5ba16b38cab356c2ce4f3e33ffa94cad3"}, - {file = "httptools-0.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdc6675ec6cb79d27e0575750ac6e2b47032742e24eed011b8db73f2da9ed40"}, - {file = "httptools-0.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:463c3bc5ef64b9cf091be9ac0e0556199503f6e80456b790a917774a616aff6e"}, - {file = "httptools-0.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82f228b88b0e8c6099a9c4757ce9fdbb8b45548074f8d0b1f0fc071e35655d1c"}, - {file = "httptools-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:0781fedc610293a2716bc7fa142d4c85e6776bc59d617a807ff91246a95dea35"}, - {file = "httptools-0.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:721e503245d591527cddd0f6fd771d156c509e831caa7a57929b55ac91ee2b51"}, - {file = "httptools-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:274bf20eeb41b0956e34f6a81f84d26ed57c84dd9253f13dcb7174b27ccd8aaf"}, - {file = "httptools-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:259920bbae18740a40236807915def554132ad70af5067e562f4660b62c59b90"}, - {file = "httptools-0.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03bfd2ae8a2d532952ac54445a2fb2504c804135ed28b53fefaf03d3a93eb1fd"}, - {file = "httptools-0.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f959e4770b3fc8ee4dbc3578fd910fab9003e093f20ac8c621452c4d62e517cb"}, - {file = "httptools-0.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6e22896b42b95b3237eccc42278cd72c0df6f23247d886b7ded3163452481e38"}, - {file = "httptools-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:38f3cafedd6aa20ae05f81f2e616ea6f92116c8a0f8dcb79dc798df3356836e2"}, - {file = "httptools-0.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:47043a6e0ea753f006a9d0dd076a8f8c99bc0ecae86a0888448eb3076c43d717"}, - {file = "httptools-0.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a541579bed0270d1ac10245a3e71e5beeb1903b5fbbc8d8b4d4e728d48ff1d"}, - {file = "httptools-0.6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65d802e7b2538a9756df5acc062300c160907b02e15ed15ba035b02bce43e89c"}, - {file = "httptools-0.6.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:26326e0a8fe56829f3af483200d914a7cd16d8d398d14e36888b56de30bec81a"}, - {file = "httptools-0.6.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e41ccac9e77cd045f3e4ee0fc62cbf3d54d7d4b375431eb855561f26ee7a9ec4"}, - {file = "httptools-0.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4e748fc0d5c4a629988ef50ac1aef99dfb5e8996583a73a717fc2cac4ab89932"}, - {file = "httptools-0.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:cf8169e839a0d740f3d3c9c4fa630ac1a5aaf81641a34575ca6773ed7ce041a1"}, - {file = "httptools-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5dcc14c090ab57b35908d4a4585ec5c0715439df07be2913405991dbb37e049d"}, - {file = "httptools-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d0b0571806a5168013b8c3d180d9f9d6997365a4212cb18ea20df18b938aa0b"}, - {file = "httptools-0.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fb4a608c631f7dcbdf986f40af7a030521a10ba6bc3d36b28c1dc9e9035a3c0"}, - {file = "httptools-0.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:93f89975465133619aea8b1952bc6fa0e6bad22a447c6d982fc338fbb4c89649"}, - {file = "httptools-0.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:73e9d66a5a28b2d5d9fbd9e197a31edd02be310186db423b28e6052472dc8201"}, - {file = "httptools-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:22c01fcd53648162730a71c42842f73b50f989daae36534c818b3f5050b54589"}, - {file = "httptools-0.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f96d2a351b5625a9fd9133c95744e8ca06f7a4f8f0b8231e4bbaae2c485046a"}, - {file = "httptools-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:72ec7c70bd9f95ef1083d14a755f321d181f046ca685b6358676737a5fecd26a"}, - {file = "httptools-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b703d15dbe082cc23266bf5d9448e764c7cb3fcfe7cb358d79d3fd8248673ef9"}, - {file = "httptools-0.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c723ed5982f8ead00f8e7605c53e55ffe47c47465d878305ebe0082b6a1755"}, - {file = "httptools-0.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b0a816bb425c116a160fbc6f34cece097fd22ece15059d68932af686520966bd"}, - {file = "httptools-0.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:dea66d94e5a3f68c5e9d86e0894653b87d952e624845e0b0e3ad1c733c6cc75d"}, - {file = "httptools-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:23b09537086a5a611fad5696fc8963d67c7e7f98cb329d38ee114d588b0b74cd"}, - {file = "httptools-0.6.0.tar.gz", hash = "sha256:9fc6e409ad38cbd68b177cd5158fc4042c796b82ca88d99ec78f07bed6c6b796"}, + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f"}, + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658"}, + {file = "httptools-0.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d"}, + {file = "httptools-0.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb"}, + {file = "httptools-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf"}, + {file = "httptools-0.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a"}, + {file = "httptools-0.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e"}, + {file = "httptools-0.6.1.tar.gz", hash = "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"}, ] [package.extras] @@ -1833,13 +1800,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.19.0" +version = "4.20.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.19.0-py3-none-any.whl", hash = "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb"}, - {file = "jsonschema-4.19.0.tar.gz", hash = "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f"}, + {file = "jsonschema-4.20.0-py3-none-any.whl", hash = "sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3"}, + {file = "jsonschema-4.20.0.tar.gz", hash = "sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa"}, ] [package.dependencies] @@ -1854,27 +1821,27 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.7.1" +version = "2023.11.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, - {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, + {file = "jsonschema_specifications-2023.11.1-py3-none-any.whl", hash = "sha256:f596778ab612b3fd29f72ea0d990393d0540a5aab18bf0407a46632eab540779"}, + {file = "jsonschema_specifications-2023.11.1.tar.gz", hash = "sha256:c9b234904ffe02f079bf91b14d79987faa685fd4b39c377a0996954c0090b9ca"}, ] [package.dependencies] -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "kombu" -version = "5.3.3" +version = "5.3.4" description = "Messaging library for Python." optional = false python-versions = ">=3.8" files = [ - {file = "kombu-5.3.3-py3-none-any.whl", hash = "sha256:6cd5c5d5ef77538434b8f81f3e265c414269418645dbb47dbf130a8a05c3e357"}, - {file = "kombu-5.3.3.tar.gz", hash = "sha256:1491df826cfc5178c80f3e89dd6dfba68e484ef334db81070eb5cb8094b31167"}, + {file = "kombu-5.3.4-py3-none-any.whl", hash = "sha256:63bb093fc9bb80cfb3a0972336a5cec1fa7ac5f9ef7e8237c6bf8dda9469313e"}, + {file = "kombu-5.3.4.tar.gz", hash = "sha256:0bb2e278644d11dea6272c17974a3dbb9688a949f3bb60aeb5b791329c44fadc"}, ] [package.dependencies] @@ -2140,14 +2107,64 @@ files = [ [[package]] name = "maxminddb" -version = "2.4.0" +version = "2.5.1" description = "Reader for the MaxMind DB format" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "maxminddb-2.4.0.tar.gz", hash = "sha256:81e54e53408bd502650e5969ccba16780af659ec1db1c44b2c997e4330a5ed96"}, + {file = "maxminddb-2.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:62e93a8e99937bf4307eeece3ca37e1161325ebf9363c4ce195410fb5daf64a0"}, + {file = "maxminddb-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea2e27a507b53dfbf2ba2ba85c98682a1ad2dac3f9941a7bffa5cb86150d0c47"}, + {file = "maxminddb-2.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0341bd6bee431bb8c07c7ac0ed221250c7390b125c025b7d57578e78e8a3"}, + {file = "maxminddb-2.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:607344b1079ea647629bf962dcea7580ec864faaad3f5aae650e2e8652121d89"}, + {file = "maxminddb-2.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c2901daebd7c8a702302315e7a58cdc38e626406ad4a05b4d48634897d5f5a3"}, + {file = "maxminddb-2.5.1-cp310-cp310-win32.whl", hash = "sha256:7805ae8c9de433c38939ada2e376706a9f6740239f61fd445927b88f5b42c267"}, + {file = "maxminddb-2.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:f1e5bd58b71f322dc6c16a95a129433b1bc229d4b714f870a61c2367425396ee"}, + {file = "maxminddb-2.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0bbbd58b300aaddf985f763720bdebba9f7a73168ff9f57168117f630ad1c06"}, + {file = "maxminddb-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a6751e2e89d62d53217870bcc2a8c887dc56ae370ba1b74e52e880761916e54"}, + {file = "maxminddb-2.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ecb1be961f1969be047d07743093f0dcf2f6d4ec3a06a4555587f380a96f6e7"}, + {file = "maxminddb-2.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1e091c2b44673c218ee2df23adbc0b6d04fd5c646cfcb6c6fe26fb849434812a"}, + {file = "maxminddb-2.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09b295c401c104ae0e30f66c1a3f3c2aa4ba2cbe12a787576499356a5a4d6c1"}, + {file = "maxminddb-2.5.1-cp311-cp311-win32.whl", hash = "sha256:3d52c693baf07bba897d109b0ecb067f21fd0cc0fb266d67db456e85b80d699e"}, + {file = "maxminddb-2.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:4c67621e842c415ce336ab019a9f087305dfcf24c095b68b8e9d27848f6f6d91"}, + {file = "maxminddb-2.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17ea454f61631b9815d420d48d00663f8718fc7de30be53ffcec0f73989475eb"}, + {file = "maxminddb-2.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef4d508c899ce0f37de731340759c68bfd1102a39a873675c71fae2c8d71ad97"}, + {file = "maxminddb-2.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e5ca423b1e310f0327536f5ed1a2c6e08d83289a7f909e021590b0b477cae2"}, + {file = "maxminddb-2.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0a21abd85e10e5e0f60244b49c3db17e7e48befd4972e62a62833d91e2acbb49"}, + {file = "maxminddb-2.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:85a302d79577efe5bc308647394ffdc535dd5f062644c41103604ccf24931a05"}, + {file = "maxminddb-2.5.1-cp312-cp312-win32.whl", hash = "sha256:dd28c434fb44f825dde6a75df2c338d44645791b03480af66a4d993f93801e10"}, + {file = "maxminddb-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:b477852cf1741d9187b021e23723e64b063794bbf946a9b5b84cc222f3caf58a"}, + {file = "maxminddb-2.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a1e1a19f9740f586362f47862d0095b54d50b9d465babcaa8a563746132fe5be"}, + {file = "maxminddb-2.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d654895b546a47e85f2e071b98e377a60bb03cd643b9423017fa66fcd5adedce"}, + {file = "maxminddb-2.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0702da59b9670a72761b65cb1a52bc3032d8f6799bdab641cb8350ad5740580b"}, + {file = "maxminddb-2.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2e20a70c1545d6626dcd4ce2d7ecf3d566d978ea64cb37e7952f93baff66b812"}, + {file = "maxminddb-2.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0cbd272db3202e948c9088e48dec62add071a47971d84ceb11d2cb2880f83e5a"}, + {file = "maxminddb-2.5.1-cp38-cp38-win32.whl", hash = "sha256:fbd01fc7d7b5b2befe914e8cdb5ed3a1c5476e57b765197cceff8d897f33d012"}, + {file = "maxminddb-2.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:fe0af3ba9e1a78ed5f2ad32fc18d18b78ef233e7d0c627e1a77a525a7eb0c241"}, + {file = "maxminddb-2.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d772be68cce812f7c4b15ae8c68e624c8b88ff83071e3903ca5b5f55e343c25"}, + {file = "maxminddb-2.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e7b3ad87d5352ed3f496bd42bffbf9f896245278b0d8e76afa1382e42a7ae"}, + {file = "maxminddb-2.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:892c11a8694394e97d3ac0f8d5974ea588c732d14e721f22095c58b4f584c144"}, + {file = "maxminddb-2.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3ce1f42bdfce7b86cb5a56cba730fed611fb879d867e6024f0d520257bef6891"}, + {file = "maxminddb-2.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6667948e7501a513caef90edda2d367865097239d4c2381eb3998e9905af7209"}, + {file = "maxminddb-2.5.1-cp39-cp39-win32.whl", hash = "sha256:500d321bdefe4dcd351e4390a79b7786aab49b0536bedfa0788e5ffb0e91e421"}, + {file = "maxminddb-2.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:93f7055779caf7753810f1e2c6444af6d727393fd116ffa0767fbd54fb8c9bbf"}, + {file = "maxminddb-2.5.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8cee4315da7cdd3f2a18f1ab1418953a7a9eda65e63095b01f03c7d3645d633e"}, + {file = "maxminddb-2.5.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c97eac5af102cede4b5f57cecb25e8f949fa4e4a8d812bed575539951c60ecaf"}, + {file = "maxminddb-2.5.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:526744b12075051fa20979090c111cc3a42a3b55e2714818270c7b84a41a8cfe"}, + {file = "maxminddb-2.5.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fad45cd2f2e3c5fbebacb8d172a60fb22443222e549bf740a0bc7eeb849e5ce7"}, + {file = "maxminddb-2.5.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b98ed5c34955c48e72d35daed713ba4a6833a8a6d1204e79d2c85e644049792"}, + {file = "maxminddb-2.5.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:639aee8abd63a95baa12b94b6f3a842d51877d631879c7d08c98c68dc44a84c3"}, + {file = "maxminddb-2.5.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a7a73ab4bbc16b81983531c99fa102a0c7dae459db958c17fea48c981f5e764"}, + {file = "maxminddb-2.5.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:aae262da1940a67c3ba765c49e2308947ce68ff647f87630002c306433a98ca1"}, + {file = "maxminddb-2.5.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b223c53077a736c304b63cf5afceb928975fbd12ddae5afd6b71370bab7b4700"}, + {file = "maxminddb-2.5.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:969d0057ea5472e0b574c5293c4f3ecf49585362351c543e8ea55dc48b60f1eb"}, + {file = "maxminddb-2.5.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4d36cf3d390f02d2bdf53d9efefb92be7bd70e07a5a86cdb79020c48c2d81b7"}, + {file = "maxminddb-2.5.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:188173c07dce0692fd5660a6eb7ea8c126d7b3a4b61496c8a8ee9e8b10186ff5"}, + {file = "maxminddb-2.5.1.tar.gz", hash = "sha256:4807d374e645bd68334e4f487ba85a27189dbc1267a98e644aa686a7927e0559"}, ] +[package.dependencies] +setuptools = ">=68.2.2" + [[package]] name = "mccabe" version = "0.7.0" @@ -2172,74 +2189,67 @@ files = [ [[package]] name = "msgpack" -version = "1.0.5" +version = "1.0.7" description = "MessagePack serializer" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "msgpack-1.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:525228efd79bb831cf6830a732e2e80bc1b05436b086d4264814b4b2955b2fa9"}, - {file = "msgpack-1.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4f8d8b3bf1ff2672567d6b5c725a1b347fe838b912772aa8ae2bf70338d5a198"}, - {file = "msgpack-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdc793c50be3f01106245a61b739328f7dccc2c648b501e237f0699fe1395b81"}, - {file = "msgpack-1.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cb47c21a8a65b165ce29f2bec852790cbc04936f502966768e4aae9fa763cb7"}, - {file = "msgpack-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e42b9594cc3bf4d838d67d6ed62b9e59e201862a25e9a157019e171fbe672dd3"}, - {file = "msgpack-1.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:55b56a24893105dc52c1253649b60f475f36b3aa0fc66115bffafb624d7cb30b"}, - {file = "msgpack-1.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1967f6129fc50a43bfe0951c35acbb729be89a55d849fab7686004da85103f1c"}, - {file = "msgpack-1.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20a97bf595a232c3ee6d57ddaadd5453d174a52594bf9c21d10407e2a2d9b3bd"}, - {file = "msgpack-1.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d25dd59bbbbb996eacf7be6b4ad082ed7eacc4e8f3d2df1ba43822da9bfa122a"}, - {file = "msgpack-1.0.5-cp310-cp310-win32.whl", hash = "sha256:382b2c77589331f2cb80b67cc058c00f225e19827dbc818d700f61513ab47bea"}, - {file = "msgpack-1.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:4867aa2df9e2a5fa5f76d7d5565d25ec76e84c106b55509e78c1ede0f152659a"}, - {file = "msgpack-1.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9f5ae84c5c8a857ec44dc180a8b0cc08238e021f57abdf51a8182e915e6299f0"}, - {file = "msgpack-1.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e6ca5d5699bcd89ae605c150aee83b5321f2115695e741b99618f4856c50898"}, - {file = "msgpack-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5494ea30d517a3576749cad32fa27f7585c65f5f38309c88c6d137877fa28a5a"}, - {file = "msgpack-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ab2f3331cb1b54165976a9d976cb251a83183631c88076613c6c780f0d6e45a"}, - {file = "msgpack-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28592e20bbb1620848256ebc105fc420436af59515793ed27d5c77a217477705"}, - {file = "msgpack-1.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe5c63197c55bce6385d9aee16c4d0641684628f63ace85f73571e65ad1c1e8d"}, - {file = "msgpack-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed40e926fa2f297e8a653c954b732f125ef97bdd4c889f243182299de27e2aa9"}, - {file = "msgpack-1.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b2de4c1c0538dcb7010902a2b97f4e00fc4ddf2c8cda9749af0e594d3b7fa3d7"}, - {file = "msgpack-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf22a83f973b50f9d38e55c6aade04c41ddda19b00c4ebc558930d78eecc64ed"}, - {file = "msgpack-1.0.5-cp311-cp311-win32.whl", hash = "sha256:c396e2cc213d12ce017b686e0f53497f94f8ba2b24799c25d913d46c08ec422c"}, - {file = "msgpack-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c4c68d87497f66f96d50142a2b73b97972130d93677ce930718f68828b382e2"}, - {file = "msgpack-1.0.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a2b031c2e9b9af485d5e3c4520f4220d74f4d222a5b8dc8c1a3ab9448ca79c57"}, - {file = "msgpack-1.0.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f837b93669ce4336e24d08286c38761132bc7ab29782727f8557e1eb21b2080"}, - {file = "msgpack-1.0.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1d46dfe3832660f53b13b925d4e0fa1432b00f5f7210eb3ad3bb9a13c6204a6"}, - {file = "msgpack-1.0.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:366c9a7b9057e1547f4ad51d8facad8b406bab69c7d72c0eb6f529cf76d4b85f"}, - {file = "msgpack-1.0.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4c075728a1095efd0634a7dccb06204919a2f67d1893b6aa8e00497258bf926c"}, - {file = "msgpack-1.0.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:f933bbda5a3ee63b8834179096923b094b76f0c7a73c1cfe8f07ad608c58844b"}, - {file = "msgpack-1.0.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:36961b0568c36027c76e2ae3ca1132e35123dcec0706c4b7992683cc26c1320c"}, - {file = "msgpack-1.0.5-cp36-cp36m-win32.whl", hash = "sha256:b5ef2f015b95f912c2fcab19c36814963b5463f1fb9049846994b007962743e9"}, - {file = "msgpack-1.0.5-cp36-cp36m-win_amd64.whl", hash = "sha256:288e32b47e67f7b171f86b030e527e302c91bd3f40fd9033483f2cacc37f327a"}, - {file = "msgpack-1.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:137850656634abddfb88236008339fdaba3178f4751b28f270d2ebe77a563b6c"}, - {file = "msgpack-1.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c05a4a96585525916b109bb85f8cb6511db1c6f5b9d9cbcbc940dc6b4be944b"}, - {file = "msgpack-1.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56a62ec00b636583e5cb6ad313bbed36bb7ead5fa3a3e38938503142c72cba4f"}, - {file = "msgpack-1.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef8108f8dedf204bb7b42994abf93882da1159728a2d4c5e82012edd92c9da9f"}, - {file = "msgpack-1.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1835c84d65f46900920b3708f5ba829fb19b1096c1800ad60bae8418652a951d"}, - {file = "msgpack-1.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e57916ef1bd0fee4f21c4600e9d1da352d8816b52a599c46460e93a6e9f17086"}, - {file = "msgpack-1.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:17358523b85973e5f242ad74aa4712b7ee560715562554aa2134d96e7aa4cbbf"}, - {file = "msgpack-1.0.5-cp37-cp37m-win32.whl", hash = "sha256:cb5aaa8c17760909ec6cb15e744c3ebc2ca8918e727216e79607b7bbce9c8f77"}, - {file = "msgpack-1.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:ab31e908d8424d55601ad7075e471b7d0140d4d3dd3272daf39c5c19d936bd82"}, - {file = "msgpack-1.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b72d0698f86e8d9ddf9442bdedec15b71df3598199ba33322d9711a19f08145c"}, - {file = "msgpack-1.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:379026812e49258016dd84ad79ac8446922234d498058ae1d415f04b522d5b2d"}, - {file = "msgpack-1.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:332360ff25469c346a1c5e47cbe2a725517919892eda5cfaffe6046656f0b7bb"}, - {file = "msgpack-1.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:476a8fe8fae289fdf273d6d2a6cb6e35b5a58541693e8f9f019bfe990a51e4ba"}, - {file = "msgpack-1.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9985b214f33311df47e274eb788a5893a761d025e2b92c723ba4c63936b69b1"}, - {file = "msgpack-1.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48296af57cdb1d885843afd73c4656be5c76c0c6328db3440c9601a98f303d87"}, - {file = "msgpack-1.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:addab7e2e1fcc04bd08e4eb631c2a90960c340e40dfc4a5e24d2ff0d5a3b3edb"}, - {file = "msgpack-1.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:916723458c25dfb77ff07f4c66aed34e47503b2eb3188b3adbec8d8aa6e00f48"}, - {file = "msgpack-1.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:821c7e677cc6acf0fd3f7ac664c98803827ae6de594a9f99563e48c5a2f27eb0"}, - {file = "msgpack-1.0.5-cp38-cp38-win32.whl", hash = "sha256:1c0f7c47f0087ffda62961d425e4407961a7ffd2aa004c81b9c07d9269512f6e"}, - {file = "msgpack-1.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:bae7de2026cbfe3782c8b78b0db9cbfc5455e079f1937cb0ab8d133496ac55e1"}, - {file = "msgpack-1.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:20c784e66b613c7f16f632e7b5e8a1651aa5702463d61394671ba07b2fc9e025"}, - {file = "msgpack-1.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:266fa4202c0eb94d26822d9bfd7af25d1e2c088927fe8de9033d929dd5ba24c5"}, - {file = "msgpack-1.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18334484eafc2b1aa47a6d42427da7fa8f2ab3d60b674120bce7a895a0a85bdd"}, - {file = "msgpack-1.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57e1f3528bd95cc44684beda696f74d3aaa8a5e58c816214b9046512240ef437"}, - {file = "msgpack-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586d0d636f9a628ddc6a17bfd45aa5b5efaf1606d2b60fa5d87b8986326e933f"}, - {file = "msgpack-1.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a740fa0e4087a734455f0fc3abf5e746004c9da72fbd541e9b113013c8dc3282"}, - {file = "msgpack-1.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3055b0455e45810820db1f29d900bf39466df96ddca11dfa6d074fa47054376d"}, - {file = "msgpack-1.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a61215eac016f391129a013c9e46f3ab308db5f5ec9f25811e811f96962599a8"}, - {file = "msgpack-1.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:362d9655cd369b08fda06b6657a303eb7172d5279997abe094512e919cf74b11"}, - {file = "msgpack-1.0.5-cp39-cp39-win32.whl", hash = "sha256:ac9dd47af78cae935901a9a500104e2dea2e253207c924cc95de149606dc43cc"}, - {file = "msgpack-1.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:06f5174b5f8ed0ed919da0e62cbd4ffde676a374aba4020034da05fab67b9164"}, - {file = "msgpack-1.0.5.tar.gz", hash = "sha256:c075544284eadc5cddc70f4757331d99dcbc16b2bbd4849d15f8aae4cf36d31c"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681"}, + {file = "msgpack-1.0.7-cp310-cp310-win32.whl", hash = "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9"}, + {file = "msgpack-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e"}, + {file = "msgpack-1.0.7-cp311-cp311-win32.whl", hash = "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1"}, + {file = "msgpack-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5"}, + {file = "msgpack-1.0.7-cp312-cp312-win32.whl", hash = "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9"}, + {file = "msgpack-1.0.7-cp312-cp312-win_amd64.whl", hash = "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c"}, + {file = "msgpack-1.0.7-cp38-cp38-win32.whl", hash = "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2"}, + {file = "msgpack-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f"}, + {file = "msgpack-1.0.7-cp39-cp39-win32.whl", hash = "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad"}, + {file = "msgpack-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3"}, + {file = "msgpack-1.0.7.tar.gz", hash = "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87"}, ] [[package]] @@ -2338,13 +2348,13 @@ files = [ [[package]] name = "netaddr" -version = "0.8.0" +version = "0.9.0" description = "A network address manipulation library for Python" optional = false python-versions = "*" files = [ - {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, - {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, + {file = "netaddr-0.9.0-py3-none-any.whl", hash = "sha256:5148b1055679d2a1ec070c521b7db82137887fabd6d7e37f5199b44f775c3bb1"}, + {file = "netaddr-0.9.0.tar.gz", hash = "sha256:7b46fa9b1a2d71fd5de9e4a3784ef339700a53a08c8040f08baf5f1194da0128"}, ] [[package]] @@ -2375,13 +2385,13 @@ files = [ [[package]] name = "outcome" -version = "1.2.0" +version = "1.3.0.post0" description = "Capture the outcome of Python function calls." optional = false python-versions = ">=3.7" files = [ - {file = "outcome-1.2.0-py2.py3-none-any.whl", hash = "sha256:c4ab89a56575d6d38a05aa16daeaa333109c1f96167aba8901ab18b6b5e0f7f5"}, - {file = "outcome-1.2.0.tar.gz", hash = "sha256:6f82bd3de45da303cf1f771ecafa1633750a358436a8bb60e06a1ceb745d2672"}, + {file = "outcome-1.3.0.post0-py2.py3-none-any.whl", hash = "sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b"}, + {file = "outcome-1.3.0.post0.tar.gz", hash = "sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8"}, ] [package.dependencies] @@ -2432,13 +2442,13 @@ files = [ [[package]] name = "pbr" -version = "5.11.1" +version = "6.0.0" description = "Python Build Reasonableness" optional = false python-versions = ">=2.6" files = [ - {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, - {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, + {file = "pbr-6.0.0-py2.py3-none-any.whl", hash = "sha256:4a7317d5e3b17a3dccb6a8cfe67dab65b20551404c52c8ed41279fa4f0cb4cda"}, + {file = "pbr-6.0.0.tar.gz", hash = "sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9"}, ] [[package]] @@ -2462,13 +2472,13 @@ dev = ["black", "hypothesis", "mypy", "pygments (>=2.14.0)", "pytest", "pytest-c [[package]] name = "platformdirs" -version = "3.10.0" +version = "4.0.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-4.0.0-py3-none-any.whl", hash = "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b"}, + {file = "platformdirs-4.0.0.tar.gz", hash = "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"}, ] [package.extras] @@ -2492,13 +2502,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prometheus-client" -version = "0.17.1" +version = "0.18.0" description = "Python client for the Prometheus monitoring system." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "prometheus_client-0.17.1-py3-none-any.whl", hash = "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101"}, - {file = "prometheus_client-0.17.1.tar.gz", hash = "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091"}, + {file = "prometheus_client-0.18.0-py3-none-any.whl", hash = "sha256:8de3ae2755f890826f4b6479e5571d4f74ac17a81345fe69a6778fdb92579184"}, + {file = "prometheus_client-0.18.0.tar.gz", hash = "sha256:35f7a8c22139e2bb7ca5a698e92d38145bc8dc74c1c0bf56f25cca886a764e17"}, ] [package.extras] @@ -2506,13 +2516,13 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.39" +version = "3.0.41" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.39-py3-none-any.whl", hash = "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88"}, - {file = "prompt_toolkit-3.0.39.tar.gz", hash = "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac"}, + {file = "prompt_toolkit-3.0.41-py3-none-any.whl", hash = "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2"}, + {file = "prompt_toolkit-3.0.41.tar.gz", hash = "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"}, ] [package.dependencies] @@ -2579,13 +2589,13 @@ pyasn1 = ">=0.4.6,<0.6.0" [[package]] name = "pycodestyle" -version = "2.11.0" +version = "2.11.1" description = "Python style guide checker" optional = false python-versions = ">=3.8" files = [ - {file = "pycodestyle-2.11.0-py2.py3-none-any.whl", hash = "sha256:5d1013ba8dc7895b548be5afb05740ca82454fd899971563d2ef625d090326f8"}, - {file = "pycodestyle-2.11.0.tar.gz", hash = "sha256:259bcc17857d8a8b3b4a2327324b79e5f020a13c16074670f9c8c8f872ea76d0"}, + {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, + {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, ] [[package]] @@ -2796,17 +2806,18 @@ pydantic = [ [[package]] name = "pygments" -version = "2.16.1" +version = "2.17.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, - {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, + {file = "pygments-2.17.0-py3-none-any.whl", hash = "sha256:cd0c46944b2551af02ecc15961050182ea120d3895000e2676160820f3421527"}, + {file = "pygments-2.17.0.tar.gz", hash = "sha256:edaa0fa2453d055d0ac94449d1f73ec7bc52c5e318204da1377c1392978c4a8d"}, ] [package.extras] plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyjwt" @@ -2839,7 +2850,7 @@ files = [ [package.dependencies] astroid = ">=3.0.1,<=3.1.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} +dill = {version = ">=0.3.7", markers = "python_version >= \"3.12\""} isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" @@ -2909,20 +2920,20 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pyopenssl" -version = "23.2.0" +version = "23.3.0" description = "Python wrapper module around the OpenSSL library" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pyOpenSSL-23.2.0-py3-none-any.whl", hash = "sha256:24f0dc5227396b3e831f4c7f602b950a5e9833d292c8e4a2e06b709292806ae2"}, - {file = "pyOpenSSL-23.2.0.tar.gz", hash = "sha256:276f931f55a452e7dea69c7173e984eb2a4407ce413c918aa34b55f82f9b8bac"}, + {file = "pyOpenSSL-23.3.0-py3-none-any.whl", hash = "sha256:6756834481d9ed5470f4a9393455154bc92fe7a64b7bc6ee2c804e78c52099b2"}, + {file = "pyOpenSSL-23.3.0.tar.gz", hash = "sha256:6b2cba5cc46e822750ec3e5a81ee12819850b11303630d575e98108a079c2b12"}, ] [package.dependencies] -cryptography = ">=38.0.0,<40.0.0 || >40.0.0,<40.0.1 || >40.0.1,<42" +cryptography = ">=41.0.5,<42" [package.extras] -docs = ["sphinx (!=5.2.0,!=5.2.0.post0)", "sphinx-rtd-theme"] +docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] test = ["flaky", "pretend", "pytest (>=3.0.1)"] [[package]] @@ -3062,13 +3073,13 @@ cli = ["click (>=5.0)"] [[package]] name = "pytz" -version = "2023.3" +version = "2023.3.post1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, ] [[package]] @@ -3155,31 +3166,28 @@ files = [ [[package]] name = "redis" -version = "5.0.0" +version = "5.0.1" description = "Python client for Redis database and key-value store" optional = false python-versions = ">=3.7" files = [ - {file = "redis-5.0.0-py3-none-any.whl", hash = "sha256:06570d0b2d84d46c21defc550afbaada381af82f5b83e5b3777600e05d8e2ed0"}, - {file = "redis-5.0.0.tar.gz", hash = "sha256:5cea6c0d335c9a7332a460ed8729ceabb4d0c489c7285b0a86dbbf8a017bd120"}, + {file = "redis-5.0.1-py3-none-any.whl", hash = "sha256:ed4802971884ae19d640775ba3b03aa2e7bd5e8fb8dfaed2decce4d0fc48391f"}, + {file = "redis-5.0.1.tar.gz", hash = "sha256:0dab495cd5753069d3bc650a0dde8a8f9edde16fc5691b689a566eda58100d0f"}, ] -[package.dependencies] -async-timeout = {version = ">=4.0.2", markers = "python_full_version <= \"3.11.2\""} - [package.extras] hiredis = ["hiredis (>=1.0.0)"] ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"] [[package]] name = "referencing" -version = "0.30.2" +version = "0.31.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, - {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, + {file = "referencing-0.31.0-py3-none-any.whl", hash = "sha256:381b11e53dd93babb55696c71cf42aef2d36b8a150c49bf0bc301e36d536c882"}, + {file = "referencing-0.31.0.tar.gz", hash = "sha256:cc28f2c88fbe7b961a7817a0abc034c09a1e36358f82fedb4ffdf29a25398863"}, ] [package.dependencies] @@ -3246,13 +3254,13 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] [[package]] name = "rich" -version = "13.5.2" +version = "13.7.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.5.2-py3-none-any.whl", hash = "sha256:146a90b3b6b47cac4a73c12866a499e9817426423f57c5a66949c086191a8808"}, - {file = "rich-13.5.2.tar.gz", hash = "sha256:fb9d6c0a0f643c99eed3875b5377a184132ba9be4d61516a55273d3554d75a39"}, + {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, + {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, ] [package.dependencies] @@ -3264,108 +3272,110 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.10.0" +version = "0.13.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.10.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:c1e0e9916301e3b3d970814b1439ca59487f0616d30f36a44cead66ee1748c31"}, - {file = "rpds_py-0.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ce8caa29ebbdcde67e5fd652c811d34bc01f249dbc0d61e5cc4db05ae79a83b"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad277f74b1c164f7248afa968700e410651eb858d7c160d109fb451dc45a2f09"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e1c68303ccf7fceb50fbab79064a2636119fd9aca121f28453709283dbca727"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:780fcb855be29153901c67fc9c5633d48aebef21b90aa72812fa181d731c6b00"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bbd7b24d108509a1b9b6679fcc1166a7dd031dbef1f3c2c73788f42e3ebb3beb"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0700c2133ba203c4068aaecd6a59bda22e06a5e46255c9da23cbf68c6942215d"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:576da63eae7809f375932bfcbca2cf20620a1915bf2fedce4b9cc8491eceefe3"}, - {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23750a9b8a329844ba1fe267ca456bb3184984da2880ed17ae641c5af8de3fef"}, - {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d08395595c42bcd82c3608762ce734504c6d025eef1c06f42326a6023a584186"}, - {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1d7b7b71bcb82d8713c7c2e9c5f061415598af5938666beded20d81fa23e7640"}, - {file = "rpds_py-0.10.0-cp310-none-win32.whl", hash = "sha256:97f5811df21703446b42303475b8b855ee07d6ab6cdf8565eff115540624f25d"}, - {file = "rpds_py-0.10.0-cp310-none-win_amd64.whl", hash = "sha256:cdbed8f21204398f47de39b0a9b180d7e571f02dfb18bf5f1b618e238454b685"}, - {file = "rpds_py-0.10.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:7a3a3d3e4f1e3cd2a67b93a0b6ed0f2499e33f47cc568e3a0023e405abdc0ff1"}, - {file = "rpds_py-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fc72ae476732cdb7b2c1acb5af23b478b8a0d4b6fcf19b90dd150291e0d5b26b"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0583f69522732bdd79dca4cd3873e63a29acf4a299769c7541f2ca1e4dd4bc6"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8b9a7cd381970e64849070aca7c32d53ab7d96c66db6c2ef7aa23c6e803f514"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d292cabd7c8335bdd3237ded442480a249dbcdb4ddfac5218799364a01a0f5c"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6903cdca64f1e301af9be424798328c1fe3b4b14aede35f04510989fc72f012"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bed57543c99249ab3a4586ddc8786529fbc33309e5e8a1351802a06ca2baf4c2"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15932ec5f224b0e35764dc156514533a4fca52dcfda0dfbe462a1a22b37efd59"}, - {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eb2d59bc196e6d3b1827c7db06c1a898bfa0787c0574af398e65ccf2e97c0fbe"}, - {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f99d74ddf9d3b6126b509e81865f89bd1283e3fc1b568b68cd7bd9dfa15583d7"}, - {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f70bec8a14a692be6dbe7ce8aab303e88df891cbd4a39af091f90b6702e28055"}, - {file = "rpds_py-0.10.0-cp311-none-win32.whl", hash = "sha256:5f7487be65b9c2c510819e744e375bd41b929a97e5915c4852a82fbb085df62c"}, - {file = "rpds_py-0.10.0-cp311-none-win_amd64.whl", hash = "sha256:748e472345c3a82cfb462d0dff998a7bf43e621eed73374cb19f307e97e08a83"}, - {file = "rpds_py-0.10.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:d4639111e73997567343df6551da9dd90d66aece1b9fc26c786d328439488103"}, - {file = "rpds_py-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f4760e1b02173f4155203054f77a5dc0b4078de7645c922b208d28e7eb99f3e2"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a6420a36975e0073acaeee44ead260c1f6ea56812cfc6c31ec00c1c48197173"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:58fc4d66ee349a23dbf08c7e964120dc9027059566e29cf0ce6205d590ed7eca"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:063411228b852fb2ed7485cf91f8e7d30893e69b0acb207ec349db04cccc8225"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65af12f70355de29e1092f319f85a3467f4005e959ab65129cb697169ce94b86"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:298e8b5d8087e0330aac211c85428c8761230ef46a1f2c516d6a2f67fb8803c5"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5b9bf77008f2c55dabbd099fd3ac87009471d223a1c7ebea36873d39511b780a"}, - {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c7853f27195598e550fe089f78f0732c66ee1d1f0eaae8ad081589a5a2f5d4af"}, - {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:75dbfd41a61bc1fb0536bf7b1abf272dc115c53d4d77db770cd65d46d4520882"}, - {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b25136212a3d064a8f0b9ebbb6c57094c5229e0de76d15c79b76feff26aeb7b8"}, - {file = "rpds_py-0.10.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:9affee8cb1ec453382c27eb9043378ab32f49cd4bc24a24275f5c39bf186c279"}, - {file = "rpds_py-0.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4d55528ef13af4b4e074d067977b1f61408602f53ae4537dccf42ba665c2c7bd"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7865df1fb564092bcf46dac61b5def25342faf6352e4bc0e61a286e3fa26a3d"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f5cc8c7bc99d2bbcd704cef165ca7d155cd6464c86cbda8339026a42d219397"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cbae50d352e4717ffc22c566afc2d0da744380e87ed44a144508e3fb9114a3f4"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fccbf0cd3411719e4c9426755df90bf3449d9fc5a89f077f4a7f1abd4f70c910"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d10c431073dc6ebceed35ab22948a016cc2b5120963c13a41e38bdde4a7212"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1b401e8b9aece651512e62c431181e6e83048a651698a727ea0eb0699e9f9b74"}, - {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:7618a082c55cf038eede4a918c1001cc8a4411dfe508dc762659bcd48d8f4c6e"}, - {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:b3226b246facae14909b465061ddcfa2dfeadb6a64f407f24300d42d69bcb1a1"}, - {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a8edd467551c1102dc0f5754ab55cd0703431cd3044edf8c8e7d9208d63fa453"}, - {file = "rpds_py-0.10.0-cp38-none-win32.whl", hash = "sha256:71333c22f7cf5f0480b59a0aef21f652cf9bbaa9679ad261b405b65a57511d1e"}, - {file = "rpds_py-0.10.0-cp38-none-win_amd64.whl", hash = "sha256:a8ab1adf04ae2d6d65835995218fd3f3eb644fe20655ca8ee233e2c7270ff53b"}, - {file = "rpds_py-0.10.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:87c93b25d538c433fb053da6228c6290117ba53ff6a537c133b0f2087948a582"}, - {file = "rpds_py-0.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7996aed3f65667c6dcc8302a69368435a87c2364079a066750a2eac75ea01e"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8856aa76839dc234d3469f1e270918ce6bec1d6a601eba928f45d68a15f04fc3"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00215f6a9058fbf84f9d47536902558eb61f180a6b2a0fa35338d06ceb9a2e5a"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23a059143c1393015c68936370cce11690f7294731904bdae47cc3e16d0b2474"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e5c26905aa651cc8c0ddc45e0e5dea2a1296f70bdc96af17aee9d0493280a17"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c651847545422c8131660704c58606d841e228ed576c8f1666d98b3d318f89da"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80992eb20755701753e30a6952a96aa58f353d12a65ad3c9d48a8da5ec4690cf"}, - {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ffcf18ad3edf1c170e27e88b10282a2c449aa0358659592462448d71b2000cfc"}, - {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:08e08ccf5b10badb7d0a5c84829b914c6e1e1f3a716fdb2bf294e2bd01562775"}, - {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7150b83b3e3ddaac81a8bb6a9b5f93117674a0e7a2b5a5b32ab31fdfea6df27f"}, - {file = "rpds_py-0.10.0-cp39-none-win32.whl", hash = "sha256:3455ecc46ea443b5f7d9c2f946ce4017745e017b0d0f8b99c92564eff97e97f5"}, - {file = "rpds_py-0.10.0-cp39-none-win_amd64.whl", hash = "sha256:afe6b5a04b2ab1aa89bad32ca47bf71358e7302a06fdfdad857389dca8fb5f04"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:b1cb078f54af0abd835ca76f93a3152565b73be0f056264da45117d0adf5e99c"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8e7e2b3577e97fa43c2c2b12a16139b2cedbd0770235d5179c0412b4794efd9b"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae46a50d235f1631d9ec4670503f7b30405103034830bc13df29fd947207f795"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f869e34d2326e417baee430ae998e91412cc8e7fdd83d979277a90a0e79a5b47"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d544a614055b131111bed6edfa1cb0fb082a7265761bcb03321f2dd7b5c6c48"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ee9c2f6ca9774c2c24bbf7b23086264e6b5fa178201450535ec0859739e6f78d"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2da4a8c6d465fde36cea7d54bf47b5cf089073452f0e47c8632ecb9dec23c07"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac00c41dd315d147b129976204839ca9de699d83519ff1272afbe4fb9d362d12"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0155c33af0676fc38e1107679be882077680ad1abb6303956b97259c3177e85e"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:db6585b600b2e76e98131e0ac0e5195759082b51687ad0c94505970c90718f4a"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:7b6975d3763d0952c111700c0634968419268e6bbc0b55fe71138987fa66f309"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:6388e4e95a26717b94a05ced084e19da4d92aca883f392dffcf8e48c8e221a24"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:18f87baa20e02e9277ad8960cd89b63c79c05caf106f4c959a9595c43f2a34a5"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f05fc7d832e970047662b3440b190d24ea04f8d3c760e33e7163b67308c878"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:291c9ce3929a75b45ce8ddde2aa7694fc8449f2bc8f5bd93adf021efaae2d10b"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:861d25ae0985a1dd5297fee35f476b60c6029e2e6e19847d5b4d0a43a390b696"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:668d2b45d62c68c7a370ac3dce108ffda482b0a0f50abd8b4c604a813a59e08f"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:344b89384c250ba6a4ce1786e04d01500e4dac0f4137ceebcaad12973c0ac0b3"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:885e023e73ce09b11b89ab91fc60f35d80878d2c19d6213a32b42ff36543c291"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:841128a22e6ac04070a0f84776d07e9c38c4dcce8e28792a95e45fc621605517"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:899b5e7e2d5a8bc92aa533c2d4e55e5ebba095c485568a5e4bedbc163421259a"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e7947d9a6264c727a556541b1630296bbd5d0a05068d21c38dde8e7a1c703ef0"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4992266817169997854f81df7f6db7bdcda1609972d8ffd6919252f09ec3c0f6"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:26d9fd624649a10e4610fab2bc820e215a184d193e47d0be7fe53c1c8f67f370"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0028eb0967942d0d2891eae700ae1a27b7fd18604cfcb16a1ef486a790fee99e"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9e7e493ded7042712a374471203dd43ae3fff5b81e3de1a0513fa241af9fd41"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d68a8e8a3a816629283faf82358d8c93fe5bd974dd2704152394a3de4cec22a"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6d5f061f6a2aa55790b9e64a23dfd87b6664ab56e24cd06c78eb43986cb260b"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c7c4266c1b61eb429e8aeb7d8ed6a3bfe6c890a1788b18dbec090c35c6b93fa"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80772e3bda6787510d9620bc0c7572be404a922f8ccdfd436bf6c3778119464c"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b98e75b21fc2ba5285aef8efaf34131d16af1c38df36bdca2f50634bea2d3060"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:d63787f289944cc4bde518ad2b5e70a4f0d6e2ce76324635359c74c113fd188f"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:872f3dcaa8bf2245944861d7311179d2c0c9b2aaa7d3b464d99a7c2e401f01fa"}, - {file = "rpds_py-0.10.0.tar.gz", hash = "sha256:e36d7369363d2707d5f68950a64c4e025991eb0177db01ccb6aa6facae48b69f"}, + {file = "rpds_py-0.13.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1758197cc8d7ff383c07405f188253535b4aa7fa745cbc54d221ae84b18e0702"}, + {file = "rpds_py-0.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:715df74cbcef4387d623c917f295352127f4b3e0388038d68fa577b4e4c6e540"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a9cec0f49df9bac252d92f138c0d7708d98828e21fd57db78087d8f50b5656"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5c2545bba02f68abdf398ef4990dc77592cc1e5d29438b35b3a3ca34d171fb4b"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:95375c44ffb9ea2bc25d67fb66e726ea266ff1572df50b9556fe28a5f3519cd7"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54e513df45a8a9419e7952ffd26ac9a5b7b1df97fe72530421794b0de29f9d72"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a25f514a53927b6b4bd04a9a6a13b55209df54f548660eeed673336c0c946d14"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1a920fa679ec2758411d66bf68840b0a21317b9954ab0e973742d723bb67709"}, + {file = "rpds_py-0.13.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f9339d1404b87e6d8cb35e485945753be57a99ab9bb389f42629215b2f6bda0f"}, + {file = "rpds_py-0.13.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c99f9dda2c959f7bb69a7125e192c74fcafb7a534a95ccf49313ae3a04807804"}, + {file = "rpds_py-0.13.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bad6758df5f1042b35683bd1811d5432ac1b17700a5a2a51fdc293f7df5f7827"}, + {file = "rpds_py-0.13.0-cp310-none-win32.whl", hash = "sha256:2a29ec68fa9655ce9501bc6ae074b166e8b45c2dfcd2d71d90d1a61758ed8c73"}, + {file = "rpds_py-0.13.0-cp310-none-win_amd64.whl", hash = "sha256:244be953f13f148b0071d67a610f89cd72eb5013a147e517d6ca3f3f3b7e0380"}, + {file = "rpds_py-0.13.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:240279ca0b2afd6d4710afce1c94bf9e75fc161290bf62c0feba64d64780d80b"}, + {file = "rpds_py-0.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:25c9727da2dabc93664a18eda7a70feedf478f0c4c8294e4cdba7f60a479a246"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981e46e1e5064f95460381bff4353783b4b5ce351c930e5b507ebe0278c61dac"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6052bb47ea583646b8ff562acacb9a2ec5ec847267049cbae3919671929e94c6"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87f591ff8cc834fa01ca5899ab5edcd7ee590492a9cdcf43424ac142e731ce3e"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62772259b3381e2aabf274c74fd1e1ac03b0524de0a6593900684becfa8cfe4b"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4de9d20fe68c16b4d97f551a09920745add0c86430262230528b83c2ed2fe90"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b70a54fb628c1d6400e351674a31ba63d2912b8c5b707f99b408674a5d8b69ab"}, + {file = "rpds_py-0.13.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2063ab9cd1be7ef6b5ed0f408e2bdf32c060b6f40c097a468f32864731302636"}, + {file = "rpds_py-0.13.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:84f7f3f18d29a1c645729634003d21d84028bd9c2fd78eba9d028998f46fa5aa"}, + {file = "rpds_py-0.13.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7c7ddc8d1a64623068da5a15e28001fbd0f0aff754aae7a75a4be5042191638"}, + {file = "rpds_py-0.13.0-cp311-none-win32.whl", hash = "sha256:8a33d2b6340261191bb59adb5a453fa6c7d99de85552bd4e8196411f0509c9bf"}, + {file = "rpds_py-0.13.0-cp311-none-win_amd64.whl", hash = "sha256:8b9c1dd90461940315981499df62a627571c4f0992e8bafc5396d33916224cac"}, + {file = "rpds_py-0.13.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:15a2d542de5cbfc6abddc4846d9412b59f8ee9c8dfa0b9c92a29321297c91745"}, + {file = "rpds_py-0.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8dd69e01b29ff45a0062cad5c480d8aa9301c3ef09da471f86337a78eb2d3405"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efdd02971a02f98492a72b25484f1f6125fb9f2166e48cc4c9bfa563349c851b"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:91ca9aaee7ccdfa66d800b5c4ec634fefca947721bab52d6ad2f6350969a3771"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afcec1f5b09d0db70aeb2d90528a9164acb61841a3124e28f6ac0137f4c36cb4"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c6824673f66c47f7ee759c21e973bfce3ceaf2c25cb940cb45b41105dc914e8"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50b6d80925dfeb573fc5e38582fb9517c6912dc462cc858a11c8177b0837127a"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3a1a38512925829784b5dc38591c757b80cfce115c72c594dc59567dab62b9c4"}, + {file = "rpds_py-0.13.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:977c6123c359dcc70ce3161b781ab70b0d342de2666944b776617e01a0a7822a"}, + {file = "rpds_py-0.13.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c472409037e05ed87b99430f97a6b82130328bb977502813547e8ee6a3392502"}, + {file = "rpds_py-0.13.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:28bb22019f4a783ea06a6b81437d5996551869e8a722ee8720b744f7684d97f4"}, + {file = "rpds_py-0.13.0-cp312-none-win32.whl", hash = "sha256:46be9c0685cce2ea02151aa8308f2c1b78581be41a5dd239448a941a210ef5dd"}, + {file = "rpds_py-0.13.0-cp312-none-win_amd64.whl", hash = "sha256:3c5b9ad4d3e05dfcf8629f0d534f92610e9805dbce2fcb9b3c801ddb886431d5"}, + {file = "rpds_py-0.13.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:66eb5aa36e857f768c598d2082fafb733eaf53e06e1169c6b4de65636e04ffd0"}, + {file = "rpds_py-0.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9f4c2b7d989426e9fe9b720211172cf10eb5f7aa16c63de2e5dc61457abcf35"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1e37dfffe8959a492b7b331995f291847a41a035b4aad82d6060f38e8378a2b"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8220321f2dccd9d66f72639185247cb7bbdd90753bf0b6bfca0fa31dba8af23c"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8f1d466a9747213d3cf7e1afec849cc51edb70d5b4ae9a82eca0f172bfbb6d0"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c4c4b4ff3de834ec5c1c690e5a18233ca78547d003eb83664668ccf09ef1398"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:525d19ef0a999229ef0f0a7687ab2c9a00d1b6a47a005006f4d8c4b8975fdcec"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0982b59d014efb84a57128e7e69399fb29ad8f2da5b0a5bcbfd12e211c00492e"}, + {file = "rpds_py-0.13.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f714dd5b705f1c394d1b361d96486c4981055c434a7eafb1a3147ac75e34a3de"}, + {file = "rpds_py-0.13.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:766b573a964389ef0d91a26bb31e1b59dbc5d06eff7707f3dfcec23d93080ba3"}, + {file = "rpds_py-0.13.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2ed65ad3fc5065d13e31e90794e0b52e405b63ae4fab1080caeaadc10a3439c5"}, + {file = "rpds_py-0.13.0-cp38-none-win32.whl", hash = "sha256:9645f7fe10a68b2396d238250b4b264c2632d2eb6ce2cb90aa0fe08adee194be"}, + {file = "rpds_py-0.13.0-cp38-none-win_amd64.whl", hash = "sha256:42d0ad129c102856a364ccc7d356faec017af86b3543a8539795f22b6cabad11"}, + {file = "rpds_py-0.13.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:95c11647fac2a3515ea2614a79e14b7c75025724ad54c91c7db4a6ea5c25ef19"}, + {file = "rpds_py-0.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9435bf4832555c4f769c6be9401664357be33d5f5d8dc58f5c20fb8d21e2c45d"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b1d671a74395344239ee3adbcd8c496525f6a2b2e54c40fec69620a31a8dcb"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:13c8061115f1468de6ffdfb1d31b446e1bd814f1ff6e556862169aacb9fbbc5d"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a78861123b002725633871a2096c3a4313224aab3d11b953dced87cfba702418"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97c1be5a018cdad54fa7e5f7d36b9ab45ef941a1d185987f18bdab0a42344012"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e33b17915c8e4fb2ea8b91bb4c46cba92242c63dd38b87e869ead5ba217e2970"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:153b6d8cf7ae4b9ffd09de6abeda661e351e3e06eaafd18a8c104ea00099b131"}, + {file = "rpds_py-0.13.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:da2852201e8e00c86be82c43d6893e6c380ef648ae53f337ffd1eaa35e3dfb8a"}, + {file = "rpds_py-0.13.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a2383f400691fd7bd63347d4d75eb2fd525de9d901799a33a4e896c9885609f8"}, + {file = "rpds_py-0.13.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d5bf560634ea6e9a59ceb2181a6cd6195a03f48cef9a400eb15e197e18f14548"}, + {file = "rpds_py-0.13.0-cp39-none-win32.whl", hash = "sha256:fdaef49055cc0c701fb17b9b34a38ef375e5cdb230b3722d4a12baf9b7cbc6d3"}, + {file = "rpds_py-0.13.0-cp39-none-win_amd64.whl", hash = "sha256:26660c74a20fe249fad75ca00bbfcf60e57c3fdbde92971c88a20e07fea1de64"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:28324f2f0247d407daabf7ff357ad9f36126075c92a0cf5319396d96ff4e1248"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b431c2c0ff1ea56048a2b066d99d0c2d151ae7625b20be159b7e699f3e80390b"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7472bd60a8293217444bdc6a46e516feb8d168da44d5f3fccea0336e88e3b79a"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:169063f346b8fd84f47d986c9c48e6094eb38b839c1287e7cb886b8a2b32195d"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eef7ee7c70f8b8698be468d54f9f5e01804f3a1dd5657e8a96363dbd52b9b5ec"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:762013dd59df12380c5444f61ccbf9ae1297027cabbd7aa25891f724ebf8c8f7"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:152570689a27ae0be1d5f50b21dad38d450b9227d0974f23bd400400ea087e88"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d70a93a40e55da117c511ddc514642bc7d59a95a99137168a5f3f2f876b47962"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e6c6fed07d13b9e0fb689356c40c81f1aa92e3c9d91d8fd5816a0348ccd999f7"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:cdded3cf9e36840b09ccef714d5fa74a03f4eb6cf81e694226ed9cb5e6f90de0"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e1f40faf406c52c7ae7d208b9140377c06397248978ccb03fbfbb30a0571e359"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c10326e30c97a95b7e1d75e5200ef0b9827aa0f861e331e43b15dfdfd63e669b"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:afde37e3763c602d0385bce5c12f262e7b1dd2a0f323e239fa9d7b2d4d5d8509"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4084ab6840bd4d79eff3b5f497add847a7db31ce5a0c2d440c90b2d2b7011857"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1c9c9cb48ab77ebfa47db25b753f594d4f44959cfe43b713439ca6e3c9329671"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:533d728ea5ad5253af3395102723ca8a77b62de47b2295155650c9a88fcdeec8"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f22cab655b41033d430f20266bf563b35038a7f01c9a099b0ccfd30a7fb9247"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a0507342c37132813449393e6e6f351bbff376031cfff1ee6e616402ac7908"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4eb1faf8e2ee9a2de3cb3ae4c8c355914cdc85f2cd7f27edf76444c9550ce1e7"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:a61a152d61e3ae26e0bbba7b2f568f6f25ca0abdeb6553eca7e7c45b59d9b1a9"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:e499bf2200eb74774a6f85a7465e3bc5273fa8ef0055590d97a88c1e7ea02eea"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:1e5becd0de924616ca9a12abeb6458568d1dc8fe5c670d5cdb738402a8a8429d"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:70cfe098d915f566eeebcb683f49f9404d2f948432891b6e075354336eda9dfb"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:2e73511e88368f93c24efe7c9a20b319eaa828bc7431f8a17713efb9e31a39fa"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c07cb9bcccd08f9bc2fd05bf586479df4272ea5a6a70fbcb59b018ed48a5a84d"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c4e84016ba225e09df20fed8befe8c68d14fbeff6078f4a0ff907ae2095e17e"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ad465e5a70580ca9c1944f43a9a71bca3a7b74554347fc96ca0479eca8981f9"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:189aebd44a07fa7b7966cf78b85bde8335b0b6c3b1c4ef5589f8c03176830107"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f50ca0460f1f7a89ab9b8355d83ac993d5998ad4218e76654ecf8afe648d8aa"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f6c225011467021879c0482316e42d8a28852fc29f0c15d2a435ff457cadccd4"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1e63b32b856c0f08a56b76967d61b6ad811d8d330a8aebb9d21afadd82a296f6"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7e5fbe9800f09c56967fda88c4d9272955e781699a66102bd098f22511a3f260"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:fea99967d4a978ce95dd52310bcb4a943b77c61725393bca631b0908047d6e2f"}, + {file = "rpds_py-0.13.0.tar.gz", hash = "sha256:35cc91cbb0b775705e0feb3362490b8418c408e9e3c3b9cb3b02f6e495f03ee7"}, ] [[package]] @@ -3496,19 +3506,19 @@ tests = ["coverage[toml] (>=5.0.2)", "pytest"] [[package]] name = "setuptools" -version = "68.1.2" +version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-68.1.2-py3-none-any.whl", hash = "sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b"}, - {file = "setuptools-68.1.2.tar.gz", hash = "sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d"}, + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5,<=7.1.2)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -3523,13 +3533,13 @@ files = [ [[package]] name = "smmap" -version = "5.0.0" +version = "5.0.1" description = "A pure Python implementation of a sliding window memory map manager" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, - {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, ] [[package]] @@ -3619,13 +3629,13 @@ typing-extensions = "*" [[package]] name = "tomlkit" -version = "0.12.1" +version = "0.12.3" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.1-py3-none-any.whl", hash = "sha256:712cbd236609acc6a3e2e97253dfc52d4c2082982a88f61b640ecf0817eab899"}, - {file = "tomlkit-0.12.1.tar.gz", hash = "sha256:38e1ff8edb991273ec9f6181244a6a391ac30e9f5098e7535640ea6be97a7c86"}, + {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"}, + {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"}, ] [[package]] @@ -3650,13 +3660,13 @@ files = [ [[package]] name = "trio" -version = "0.22.2" +version = "0.23.1" description = "A friendly Python library for async concurrency and I/O" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "trio-0.22.2-py3-none-any.whl", hash = "sha256:f43da357620e5872b3d940a2e3589aa251fd3f881b65a608d742e00809b1ec38"}, - {file = "trio-0.22.2.tar.gz", hash = "sha256:3887cf18c8bcc894433420305468388dac76932e9668afa1c49aa3806b6accb3"}, + {file = "trio-0.23.1-py3-none-any.whl", hash = "sha256:bb4abb3f4af23f96679e7c8cdabb8b234520f2498550d2cf63ebfd95f2ce27fe"}, + {file = "trio-0.23.1.tar.gz", hash = "sha256:16f89f7dcc8f7b9dcdec1fcd863e0c039af6d0f9a22f8dfd56f75d75ec73fd48"}, ] [package.dependencies] @@ -3664,22 +3674,21 @@ attrs = ">=20.1.0" cffi = {version = ">=1.14", markers = "os_name == \"nt\" and implementation_name != \"pypy\""} idna = "*" outcome = "*" -sniffio = "*" +sniffio = ">=1.3.0" sortedcontainers = "*" [[package]] name = "trio-websocket" -version = "0.10.3" +version = "0.11.1" description = "WebSocket library for Trio" optional = false python-versions = ">=3.7" files = [ - {file = "trio-websocket-0.10.3.tar.gz", hash = "sha256:1a748604ad906a7dcab9a43c6eb5681e37de4793ba0847ef0bc9486933ed027b"}, - {file = "trio_websocket-0.10.3-py3-none-any.whl", hash = "sha256:a9937d48e8132ebf833019efde2a52ca82d223a30a7ea3e8d60a7d28f75a4e3a"}, + {file = "trio-websocket-0.11.1.tar.gz", hash = "sha256:18c11793647703c158b1f6e62de638acada927344d534e3c7628eedcb746839f"}, + {file = "trio_websocket-0.11.1-py3-none-any.whl", hash = "sha256:520d046b0d030cf970b8b2b2e00c4c2245b3807853ecd44214acd33d74581638"}, ] [package.dependencies] -exceptiongroup = "*" trio = ">=0.11" wsproto = ">=0.14" @@ -3785,13 +3794,13 @@ twisted = ["twisted (>=20.3.0)", "zope.interface (>=5.2.0)"] [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, ] [[package]] @@ -3873,47 +3882,47 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", [[package]] name = "uvloop" -version = "0.17.0" +version = "0.19.0" description = "Fast implementation of asyncio event loop on top of libuv" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8.0" files = [ - {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ce9f61938d7155f79d3cb2ffa663147d4a76d16e08f65e2c66b77bd41b356718"}, - {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:68532f4349fd3900b839f588972b3392ee56042e440dd5873dfbbcd2cc67617c"}, - {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0949caf774b9fcefc7c5756bacbbbd3fc4c05a6b7eebc7c7ad6f825b23998d6d"}, - {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff3d00b70ce95adce264462c930fbaecb29718ba6563db354608f37e49e09024"}, - {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a5abddb3558d3f0a78949c750644a67be31e47936042d4f6c888dd6f3c95f4aa"}, - {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8efcadc5a0003d3a6e887ccc1fb44dec25594f117a94e3127954c05cf144d811"}, - {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3378eb62c63bf336ae2070599e49089005771cc651c8769aaad72d1bd9385a7c"}, - {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6aafa5a78b9e62493539456f8b646f85abc7093dd997f4976bb105537cf2635e"}, - {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c686a47d57ca910a2572fddfe9912819880b8765e2f01dc0dd12a9bf8573e539"}, - {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:864e1197139d651a76c81757db5eb199db8866e13acb0dfe96e6fc5d1cf45fc4"}, - {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2a6149e1defac0faf505406259561bc14b034cdf1d4711a3ddcdfbaa8d825a05"}, - {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6708f30db9117f115eadc4f125c2a10c1a50d711461699a0cbfaa45b9a78e376"}, - {file = "uvloop-0.17.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:23609ca361a7fc587031429fa25ad2ed7242941adec948f9d10c045bfecab06b"}, - {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2deae0b0fb00a6af41fe60a675cec079615b01d68beb4cc7b722424406b126a8"}, - {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45cea33b208971e87a31c17622e4b440cac231766ec11e5d22c76fab3bf9df62"}, - {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9b09e0f0ac29eee0451d71798878eae5a4e6a91aa275e114037b27f7db72702d"}, - {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbbaf9da2ee98ee2531e0c780455f2841e4675ff580ecf93fe5c48fe733b5667"}, - {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a4aee22ece20958888eedbad20e4dbb03c37533e010fb824161b4f05e641f738"}, - {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:307958f9fc5c8bb01fad752d1345168c0abc5d62c1b72a4a8c6c06f042b45b20"}, - {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ebeeec6a6641d0adb2ea71dcfb76017602ee2bfd8213e3fcc18d8f699c5104f"}, - {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1436c8673c1563422213ac6907789ecb2b070f5939b9cbff9ef7113f2b531595"}, - {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8887d675a64cfc59f4ecd34382e5b4f0ef4ae1da37ed665adba0c2badf0d6578"}, - {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3db8de10ed684995a7f34a001f15b374c230f7655ae840964d51496e2f8a8474"}, - {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d37dccc7ae63e61f7b96ee2e19c40f153ba6ce730d8ba4d3b4e9738c1dccc1b"}, - {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cbbe908fda687e39afd6ea2a2f14c2c3e43f2ca88e3a11964b297822358d0e6c"}, - {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d97672dc709fa4447ab83276f344a165075fd9f366a97b712bdd3fee05efae8"}, - {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e507c9ee39c61bfddd79714e4f85900656db1aec4d40c6de55648e85c2799c"}, - {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c092a2c1e736086d59ac8e41f9c98f26bbf9b9222a76f21af9dfe949b99b2eb9"}, - {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30babd84706115626ea78ea5dbc7dd8d0d01a2e9f9b306d24ca4ed5796c66ded"}, - {file = "uvloop-0.17.0.tar.gz", hash = "sha256:0ddf6baf9cf11a1a22c71487f39f15b2cf78eb5bde7e5b45fbb99e8a9d91b9e1"}, + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e"}, + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428"}, + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8"}, + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849"}, + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957"}, + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd"}, + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef"}, + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2"}, + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1"}, + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24"}, + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533"}, + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12"}, + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"}, + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec"}, + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc"}, + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6"}, + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593"}, + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3"}, + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd"}, + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd"}, + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be"}, + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797"}, + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d"}, + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7"}, + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b"}, + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67"}, + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7"}, + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256"}, + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17"}, + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5"}, + {file = "uvloop-0.19.0.tar.gz", hash = "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd"}, ] [package.extras] -dev = ["Cython (>=0.29.32,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=3.6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] -test = ["Cython (>=0.29.32,<0.30.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)"] +test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] [[package]] name = "vine" @@ -3967,33 +3976,86 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "watchfiles" -version = "0.20.0" +version = "0.21.0" description = "Simple, modern and high performance file watching and code reload in python." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "watchfiles-0.20.0-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:3796312bd3587e14926013612b23066912cf45a14af71cf2b20db1c12dadf4e9"}, - {file = "watchfiles-0.20.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:d0002d81c89a662b595645fb684a371b98ff90a9c7d8f8630c82f0fde8310458"}, - {file = "watchfiles-0.20.0-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:570848706440373b4cd8017f3e850ae17f76dbdf1e9045fc79023b11e1afe490"}, - {file = "watchfiles-0.20.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a0351d20d03c6f7ad6b2e8a226a5efafb924c7755ee1e34f04c77c3682417fa"}, - {file = "watchfiles-0.20.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:007dcc4a401093010b389c044e81172c8a2520dba257c88f8828b3d460c6bb38"}, - {file = "watchfiles-0.20.0-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d82dbc1832da83e441d112069833eedd4cf583d983fb8dd666fbefbea9d99c0"}, - {file = "watchfiles-0.20.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99f4c65fd2fce61a571b2a6fcf747d6868db0bef8a934e8ca235cc8533944d95"}, - {file = "watchfiles-0.20.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5392dd327a05f538c56edb1c6ebba6af91afc81b40822452342f6da54907bbdf"}, - {file = "watchfiles-0.20.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:08dc702529bb06a2b23859110c214db245455532da5eaea602921687cfcd23db"}, - {file = "watchfiles-0.20.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:7d4e66a857621584869cfbad87039e65dadd7119f0d9bb9dbc957e089e32c164"}, - {file = "watchfiles-0.20.0-cp37-abi3-win32.whl", hash = "sha256:a03d1e6feb7966b417f43c3e3783188167fd69c2063e86bad31e62c4ea794cc5"}, - {file = "watchfiles-0.20.0-cp37-abi3-win_amd64.whl", hash = "sha256:eccc8942bcdc7d638a01435d915b913255bbd66f018f1af051cd8afddb339ea3"}, - {file = "watchfiles-0.20.0-cp37-abi3-win_arm64.whl", hash = "sha256:b17d4176c49d207865630da5b59a91779468dd3e08692fe943064da260de2c7c"}, - {file = "watchfiles-0.20.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d97db179f7566dcf145c5179ddb2ae2a4450e3a634eb864b09ea04e68c252e8e"}, - {file = "watchfiles-0.20.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:835df2da7a5df5464c4a23b2d963e1a9d35afa422c83bf4ff4380b3114603644"}, - {file = "watchfiles-0.20.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:608cd94a8767f49521901aff9ae0c92cc8f5a24d528db7d6b0295290f9d41193"}, - {file = "watchfiles-0.20.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89d1de8218874925bce7bb2ae9657efc504411528930d7a83f98b1749864f2ef"}, - {file = "watchfiles-0.20.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:13f995d5152a8ba4ed7c2bbbaeee4e11a5944defc7cacd0ccb4dcbdcfd78029a"}, - {file = "watchfiles-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b5c8d3be7b502f8c43a33c63166ada8828dbb0c6d49c8f9ce990a96de2f5a49"}, - {file = "watchfiles-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e43af4464daa08723c04b43cf978ab86cc55c684c16172622bdac64b34e36af0"}, - {file = "watchfiles-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87d9e1f75c4f86c93d73b5bd1ebe667558357548f11b4f8af4e0e272f79413ce"}, - {file = "watchfiles-0.20.0.tar.gz", hash = "sha256:728575b6b94c90dd531514677201e8851708e6e4b5fe7028ac506a200b622019"}, + {file = "watchfiles-0.21.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa"}, + {file = "watchfiles-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c"}, + {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9"}, + {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9"}, + {file = "watchfiles-0.21.0-cp310-none-win32.whl", hash = "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293"}, + {file = "watchfiles-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235"}, + {file = "watchfiles-0.21.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7"}, + {file = "watchfiles-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7"}, + {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0"}, + {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365"}, + {file = "watchfiles-0.21.0-cp311-none-win32.whl", hash = "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400"}, + {file = "watchfiles-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe"}, + {file = "watchfiles-0.21.0-cp311-none-win_arm64.whl", hash = "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078"}, + {file = "watchfiles-0.21.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a"}, + {file = "watchfiles-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c"}, + {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235"}, + {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7"}, + {file = "watchfiles-0.21.0-cp312-none-win32.whl", hash = "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3"}, + {file = "watchfiles-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094"}, + {file = "watchfiles-0.21.0-cp312-none-win_arm64.whl", hash = "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6"}, + {file = "watchfiles-0.21.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99"}, + {file = "watchfiles-0.21.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562"}, + {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19"}, + {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0"}, + {file = "watchfiles-0.21.0-cp38-none-win32.whl", hash = "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214"}, + {file = "watchfiles-0.21.0-cp38-none-win_amd64.whl", hash = "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca"}, + {file = "watchfiles-0.21.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e"}, + {file = "watchfiles-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28"}, + {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6"}, + {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49"}, + {file = "watchfiles-0.21.0-cp39-none-win32.whl", hash = "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94"}, + {file = "watchfiles-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097"}, + {file = "watchfiles-0.21.0.tar.gz", hash = "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3"}, ] [package.dependencies] @@ -4001,13 +4063,13 @@ anyio = ">=3.0.0" [[package]] name = "wcwidth" -version = "0.2.6" +version = "0.2.10" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, - {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, + {file = "wcwidth-0.2.10-py2.py3-none-any.whl", hash = "sha256:aec5179002dd0f0d40c456026e74a729661c9d468e1ed64405e3a6c2176ca36f"}, + {file = "wcwidth-0.2.10.tar.gz", hash = "sha256:390c7454101092a6a5e43baad8f83de615463af459201709556b6e4b1c861f97"}, ] [[package]] @@ -4030,13 +4092,13 @@ pyOpenSSL = ">=23.2.0" [[package]] name = "websocket-client" -version = "1.6.2" +version = "1.6.4" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" files = [ - {file = "websocket-client-1.6.2.tar.gz", hash = "sha256:53e95c826bf800c4c465f50093a8c4ff091c7327023b10bfaff40cf1ef170eaa"}, - {file = "websocket_client-1.6.2-py3-none-any.whl", hash = "sha256:ce54f419dfae71f4bdba69ebe65bf7f0a93fe71bc009ad3a010aacc3eebad537"}, + {file = "websocket-client-1.6.4.tar.gz", hash = "sha256:b3324019b3c28572086c4a319f91d1dcd44e6e11cd340232978c684a7650d0df"}, + {file = "websocket_client-1.6.4-py3-none-any.whl", hash = "sha256:084072e0a7f5f347ef2ac3d8698a5e0b4ffbfcab607628cadabc650fc9a83a24"}, ] [package.extras] @@ -4046,81 +4108,83 @@ test = ["websockets"] [[package]] name = "websockets" -version = "11.0.3" +version = "12.0" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3ccc8a0c387629aec40f2fc9fdcb4b9d5431954f934da3eaf16cdc94f67dbfac"}, - {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d67ac60a307f760c6e65dad586f556dde58e683fab03323221a4e530ead6f74d"}, - {file = "websockets-11.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84d27a4832cc1a0ee07cdcf2b0629a8a72db73f4cf6de6f0904f6661227f256f"}, - {file = "websockets-11.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffd7dcaf744f25f82190856bc26ed81721508fc5cbf2a330751e135ff1283564"}, - {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7622a89d696fc87af8e8d280d9b421db5133ef5b29d3f7a1ce9f1a7bf7fcfa11"}, - {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bceab846bac555aff6427d060f2fcfff71042dba6f5fca7dc4f75cac815e57ca"}, - {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:54c6e5b3d3a8936a4ab6870d46bdd6ec500ad62bde9e44462c32d18f1e9a8e54"}, - {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:41f696ba95cd92dc047e46b41b26dd24518384749ed0d99bea0a941ca87404c4"}, - {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86d2a77fd490ae3ff6fae1c6ceaecad063d3cc2320b44377efdde79880e11526"}, - {file = "websockets-11.0.3-cp310-cp310-win32.whl", hash = "sha256:2d903ad4419f5b472de90cd2d40384573b25da71e33519a67797de17ef849b69"}, - {file = "websockets-11.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:1d2256283fa4b7f4c7d7d3e84dc2ece74d341bce57d5b9bf385df109c2a1a82f"}, - {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e848f46a58b9fcf3d06061d17be388caf70ea5b8cc3466251963c8345e13f7eb"}, - {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa5003845cdd21ac0dc6c9bf661c5beddd01116f6eb9eb3c8e272353d45b3288"}, - {file = "websockets-11.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b58cbf0697721120866820b89f93659abc31c1e876bf20d0b3d03cef14faf84d"}, - {file = "websockets-11.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:660e2d9068d2bedc0912af508f30bbeb505bbbf9774d98def45f68278cea20d3"}, - {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1f0524f203e3bd35149f12157438f406eff2e4fb30f71221c8a5eceb3617b6b"}, - {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:def07915168ac8f7853812cc593c71185a16216e9e4fa886358a17ed0fd9fcf6"}, - {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b30c6590146e53149f04e85a6e4fcae068df4289e31e4aee1fdf56a0dead8f97"}, - {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:619d9f06372b3a42bc29d0cd0354c9bb9fb39c2cbc1a9c5025b4538738dbffaf"}, - {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:01f5567d9cf6f502d655151645d4e8b72b453413d3819d2b6f1185abc23e82dd"}, - {file = "websockets-11.0.3-cp311-cp311-win32.whl", hash = "sha256:e1459677e5d12be8bbc7584c35b992eea142911a6236a3278b9b5ce3326f282c"}, - {file = "websockets-11.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:e7837cb169eca3b3ae94cc5787c4fed99eef74c0ab9506756eea335e0d6f3ed8"}, - {file = "websockets-11.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9f59a3c656fef341a99e3d63189852be7084c0e54b75734cde571182c087b152"}, - {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2529338a6ff0eb0b50c7be33dc3d0e456381157a31eefc561771ee431134a97f"}, - {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34fd59a4ac42dff6d4681d8843217137f6bc85ed29722f2f7222bd619d15e95b"}, - {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:332d126167ddddec94597c2365537baf9ff62dfcc9db4266f263d455f2f031cb"}, - {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6505c1b31274723ccaf5f515c1824a4ad2f0d191cec942666b3d0f3aa4cb4007"}, - {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f467ba0050b7de85016b43f5a22b46383ef004c4f672148a8abf32bc999a87f0"}, - {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9d9acd80072abcc98bd2c86c3c9cd4ac2347b5a5a0cae7ed5c0ee5675f86d9af"}, - {file = "websockets-11.0.3-cp37-cp37m-win32.whl", hash = "sha256:e590228200fcfc7e9109509e4d9125eace2042fd52b595dd22bbc34bb282307f"}, - {file = "websockets-11.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:b16fff62b45eccb9c7abb18e60e7e446998093cdcb50fed33134b9b6878836de"}, - {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fb06eea71a00a7af0ae6aefbb932fb8a7df3cb390cc217d51a9ad7343de1b8d0"}, - {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8a34e13a62a59c871064dfd8ffb150867e54291e46d4a7cf11d02c94a5275bae"}, - {file = "websockets-11.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4841ed00f1026dfbced6fca7d963c4e7043aa832648671b5138008dc5a8f6d99"}, - {file = "websockets-11.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a073fc9ab1c8aff37c99f11f1641e16da517770e31a37265d2755282a5d28aa"}, - {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68b977f21ce443d6d378dbd5ca38621755f2063d6fdb3335bda981d552cfff86"}, - {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1a99a7a71631f0efe727c10edfba09ea6bee4166a6f9c19aafb6c0b5917d09c"}, - {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bee9fcb41db2a23bed96c6b6ead6489702c12334ea20a297aa095ce6d31370d0"}, - {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4b253869ea05a5a073ebfdcb5cb3b0266a57c3764cf6fe114e4cd90f4bfa5f5e"}, - {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1553cb82942b2a74dd9b15a018dce645d4e68674de2ca31ff13ebc2d9f283788"}, - {file = "websockets-11.0.3-cp38-cp38-win32.whl", hash = "sha256:f61bdb1df43dc9c131791fbc2355535f9024b9a04398d3bd0684fc16ab07df74"}, - {file = "websockets-11.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:03aae4edc0b1c68498f41a6772d80ac7c1e33c06c6ffa2ac1c27a07653e79d6f"}, - {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:777354ee16f02f643a4c7f2b3eff8027a33c9861edc691a2003531f5da4f6bc8"}, - {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c82f11964f010053e13daafdc7154ce7385ecc538989a354ccc7067fd7028fd"}, - {file = "websockets-11.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3580dd9c1ad0701169e4d6fc41e878ffe05e6bdcaf3c412f9d559389d0c9e016"}, - {file = "websockets-11.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f1a3f10f836fab6ca6efa97bb952300b20ae56b409414ca85bff2ad241d2a61"}, - {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df41b9bc27c2c25b486bae7cf42fccdc52ff181c8c387bfd026624a491c2671b"}, - {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:279e5de4671e79a9ac877427f4ac4ce93751b8823f276b681d04b2156713b9dd"}, - {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1fdf26fa8a6a592f8f9235285b8affa72748dc12e964a5518c6c5e8f916716f7"}, - {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:69269f3a0b472e91125b503d3c0b3566bda26da0a3261c49f0027eb6075086d1"}, - {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:97b52894d948d2f6ea480171a27122d77af14ced35f62e5c892ca2fae9344311"}, - {file = "websockets-11.0.3-cp39-cp39-win32.whl", hash = "sha256:c7f3cb904cce8e1be667c7e6fef4516b98d1a6a0635a58a57528d577ac18a128"}, - {file = "websockets-11.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c792ea4eabc0159535608fc5658a74d1a81020eb35195dd63214dcf07556f67e"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f2e58f2c36cc52d41f2659e4c0cbf7353e28c8c9e63e30d8c6d3494dc9fdedcf"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de36fe9c02995c7e6ae6efe2e205816f5f00c22fd1fbf343d4d18c3d5ceac2f5"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ac56b661e60edd453585f4bd68eb6a29ae25b5184fd5ba51e97652580458998"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e052b8467dd07d4943936009f46ae5ce7b908ddcac3fda581656b1b19c083d9b"}, - {file = "websockets-11.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:42cc5452a54a8e46a032521d7365da775823e21bfba2895fb7b77633cce031bb"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e6316827e3e79b7b8e7d8e3b08f4e331af91a48e794d5d8b099928b6f0b85f20"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8531fdcad636d82c517b26a448dcfe62f720e1922b33c81ce695d0edb91eb931"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c114e8da9b475739dde229fd3bc6b05a6537a88a578358bc8eb29b4030fac9c9"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e063b1865974611313a3849d43f2c3f5368093691349cf3c7c8f8f75ad7cb280"}, - {file = "websockets-11.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:92b2065d642bf8c0a82d59e59053dd2fdde64d4ed44efe4870fa816c1232647b"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0ee68fe502f9031f19d495dae2c268830df2760c0524cbac5d759921ba8c8e82"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcacf2c7a6c3a84e720d1bb2b543c675bf6c40e460300b628bab1b1efc7c034c"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b67c6f5e5a401fc56394f191f00f9b3811fe843ee93f4a70df3c389d1adf857d"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d5023a4b6a5b183dc838808087033ec5df77580485fc533e7dab2567851b0a4"}, - {file = "websockets-11.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ed058398f55163a79bb9f06a90ef9ccc063b204bb346c4de78efc5d15abfe602"}, - {file = "websockets-11.0.3-py3-none-any.whl", hash = "sha256:6681ba9e7f8f3b19440921e99efbb40fc89f26cd71bf539e45d8c8a25c976dc6"}, - {file = "websockets-11.0.3.tar.gz", hash = "sha256:88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016"}, + {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, + {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"}, + {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"}, + {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"}, + {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"}, + {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"}, + {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"}, + {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, + {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"}, + {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"}, + {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"}, + {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"}, + {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"}, + {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"}, + {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"}, + {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"}, + {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"}, + {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"}, + {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"}, + {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"}, + {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"}, + {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"}, + {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"}, + {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"}, + {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, ] [[package]] @@ -4251,63 +4315,69 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.16.2" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "zope-interface" -version = "6.0" +version = "6.1" description = "Interfaces for Python" optional = false python-versions = ">=3.7" files = [ - {file = "zope.interface-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f299c020c6679cb389814a3b81200fe55d428012c5e76da7e722491f5d205990"}, - {file = "zope.interface-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee4b43f35f5dc15e1fec55ccb53c130adb1d11e8ad8263d68b1284b66a04190d"}, - {file = "zope.interface-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a158846d0fca0a908c1afb281ddba88744d403f2550dc34405c3691769cdd85"}, - {file = "zope.interface-6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f72f23bab1848edb7472309e9898603141644faec9fd57a823ea6b4d1c4c8995"}, - {file = "zope.interface-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48f4d38cf4b462e75fac78b6f11ad47b06b1c568eb59896db5b6ec1094eb467f"}, - {file = "zope.interface-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:87b690bbee9876163210fd3f500ee59f5803e4a6607d1b1238833b8885ebd410"}, - {file = "zope.interface-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2363e5fd81afb650085c6686f2ee3706975c54f331b426800b53531191fdf28"}, - {file = "zope.interface-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af169ba897692e9cd984a81cb0f02e46dacdc07d6cf9fd5c91e81f8efaf93d52"}, - {file = "zope.interface-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa90bac61c9dc3e1a563e5babb3fd2c0c1c80567e815442ddbe561eadc803b30"}, - {file = "zope.interface-6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89086c9d3490a0f265a3c4b794037a84541ff5ffa28bb9c24cc9f66566968464"}, - {file = "zope.interface-6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:809fe3bf1a91393abc7e92d607976bbb8586512913a79f2bf7d7ec15bd8ea518"}, - {file = "zope.interface-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:0ec9653825f837fbddc4e4b603d90269b501486c11800d7c761eee7ce46d1bbb"}, - {file = "zope.interface-6.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:790c1d9d8f9c92819c31ea660cd43c3d5451df1df61e2e814a6f99cebb292788"}, - {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b39b8711578dcfd45fc0140993403b8a81e879ec25d53189f3faa1f006087dca"}, - {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eba51599370c87088d8882ab74f637de0c4f04a6d08a312dce49368ba9ed5c2a"}, - {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee934f023f875ec2cfd2b05a937bd817efcc6c4c3f55c5778cbf78e58362ddc"}, - {file = "zope.interface-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:042f2381118b093714081fd82c98e3b189b68db38ee7d35b63c327c470ef8373"}, - {file = "zope.interface-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dfbbbf0809a3606046a41f8561c3eada9db811be94138f42d9135a5c47e75f6f"}, - {file = "zope.interface-6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:424d23b97fa1542d7be882eae0c0fc3d6827784105264a8169a26ce16db260d8"}, - {file = "zope.interface-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e538f2d4a6ffb6edfb303ce70ae7e88629ac6e5581870e66c306d9ad7b564a58"}, - {file = "zope.interface-6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12175ca6b4db7621aedd7c30aa7cfa0a2d65ea3a0105393e05482d7a2d367446"}, - {file = "zope.interface-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3d7dfd897a588ec27e391edbe3dd320a03684457470415870254e714126b1f"}, - {file = "zope.interface-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b3f543ae9d3408549a9900720f18c0194ac0fe810cecda2a584fd4dca2eb3bb8"}, - {file = "zope.interface-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0583b75f2e70ec93f100931660328965bb9ff65ae54695fb3fa0a1255daa6f2"}, - {file = "zope.interface-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:23ac41d52fd15dd8be77e3257bc51bbb82469cf7f5e9a30b75e903e21439d16c"}, - {file = "zope.interface-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99856d6c98a326abbcc2363827e16bd6044f70f2ef42f453c0bd5440c4ce24e5"}, - {file = "zope.interface-6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1592f68ae11e557b9ff2bc96ac8fc30b187e77c45a3c9cd876e3368c53dc5ba8"}, - {file = "zope.interface-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4407b1435572e3e1610797c9203ad2753666c62883b921318c5403fb7139dec2"}, - {file = "zope.interface-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:5171eb073474a5038321409a630904fd61f12dd1856dd7e9d19cd6fe092cbbc5"}, - {file = "zope.interface-6.0.tar.gz", hash = "sha256:aab584725afd10c710b8f1e6e208dbee2d0ad009f57d674cb9d1b3964037275d"}, + {file = "zope.interface-6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:43b576c34ef0c1f5a4981163b551a8781896f2a37f71b8655fd20b5af0386abb"}, + {file = "zope.interface-6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:67be3ca75012c6e9b109860820a8b6c9a84bfb036fbd1076246b98e56951ca92"}, + {file = "zope.interface-6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b9bc671626281f6045ad61d93a60f52fd5e8209b1610972cf0ef1bbe6d808e3"}, + {file = "zope.interface-6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbe81def9cf3e46f16ce01d9bfd8bea595e06505e51b7baf45115c77352675fd"}, + {file = "zope.interface-6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dc998f6de015723196a904045e5a2217f3590b62ea31990672e31fbc5370b41"}, + {file = "zope.interface-6.1-cp310-cp310-win_amd64.whl", hash = "sha256:239a4a08525c080ff833560171d23b249f7f4d17fcbf9316ef4159f44997616f"}, + {file = "zope.interface-6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9ffdaa5290422ac0f1688cb8adb1b94ca56cee3ad11f29f2ae301df8aecba7d1"}, + {file = "zope.interface-6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34c15ca9248f2e095ef2e93af2d633358c5f048c49fbfddf5fdfc47d5e263736"}, + {file = "zope.interface-6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b012d023b4fb59183909b45d7f97fb493ef7a46d2838a5e716e3155081894605"}, + {file = "zope.interface-6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97806e9ca3651588c1baaebb8d0c5ee3db95430b612db354c199b57378312ee8"}, + {file = "zope.interface-6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fddbab55a2473f1d3b8833ec6b7ac31e8211b0aa608df5ab09ce07f3727326de"}, + {file = "zope.interface-6.1-cp311-cp311-win_amd64.whl", hash = "sha256:a0da79117952a9a41253696ed3e8b560a425197d4e41634a23b1507efe3273f1"}, + {file = "zope.interface-6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8bb9c990ca9027b4214fa543fd4025818dc95f8b7abce79d61dc8a2112b561a"}, + {file = "zope.interface-6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b51b64432eed4c0744241e9ce5c70dcfecac866dff720e746d0a9c82f371dfa7"}, + {file = "zope.interface-6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa6fd016e9644406d0a61313e50348c706e911dca29736a3266fc9e28ec4ca6d"}, + {file = "zope.interface-6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c8cf55261e15590065039696607f6c9c1aeda700ceee40c70478552d323b3ff"}, + {file = "zope.interface-6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e30506bcb03de8983f78884807e4fd95d8db6e65b69257eea05d13d519b83ac0"}, + {file = "zope.interface-6.1-cp312-cp312-win_amd64.whl", hash = "sha256:e33e86fd65f369f10608b08729c8f1c92ec7e0e485964670b4d2633a4812d36b"}, + {file = "zope.interface-6.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:2f8d89721834524a813f37fa174bac074ec3d179858e4ad1b7efd4401f8ac45d"}, + {file = "zope.interface-6.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13b7d0f2a67eb83c385880489dbb80145e9d344427b4262c49fbf2581677c11c"}, + {file = "zope.interface-6.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef43ee91c193f827e49599e824385ec7c7f3cd152d74cb1dfe02cb135f264d83"}, + {file = "zope.interface-6.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e441e8b7d587af0414d25e8d05e27040d78581388eed4c54c30c0c91aad3a379"}, + {file = "zope.interface-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f89b28772fc2562ed9ad871c865f5320ef761a7fcc188a935e21fe8b31a38ca9"}, + {file = "zope.interface-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70d2cef1bf529bff41559be2de9d44d47b002f65e17f43c73ddefc92f32bf00f"}, + {file = "zope.interface-6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ad54ed57bdfa3254d23ae04a4b1ce405954969c1b0550cc2d1d2990e8b439de1"}, + {file = "zope.interface-6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef467d86d3cfde8b39ea1b35090208b0447caaabd38405420830f7fd85fbdd56"}, + {file = "zope.interface-6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6af47f10cfc54c2ba2d825220f180cc1e2d4914d783d6fc0cd93d43d7bc1c78b"}, + {file = "zope.interface-6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9559138690e1bd4ea6cd0954d22d1e9251e8025ce9ede5d0af0ceae4a401e43"}, + {file = "zope.interface-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:964a7af27379ff4357dad1256d9f215047e70e93009e532d36dcb8909036033d"}, + {file = "zope.interface-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:387545206c56b0315fbadb0431d5129c797f92dc59e276b3ce82db07ac1c6179"}, + {file = "zope.interface-6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57d0a8ce40ce440f96a2c77824ee94bf0d0925e6089df7366c2272ccefcb7941"}, + {file = "zope.interface-6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ebc4d34e7620c4f0da7bf162c81978fce0ea820e4fa1e8fc40ee763839805f3"}, + {file = "zope.interface-6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a804abc126b33824a44a7aa94f06cd211a18bbf31898ba04bd0924fbe9d282d"}, + {file = "zope.interface-6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f294a15f7723fc0d3b40701ca9b446133ec713eafc1cc6afa7b3d98666ee1ac"}, + {file = "zope.interface-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:a41f87bb93b8048fe866fa9e3d0c51e27fe55149035dcf5f43da4b56732c0a40"}, + {file = "zope.interface-6.1.tar.gz", hash = "sha256:2fdc7ccbd6eb6b7df5353012fbed6c3c5d04ceaca0038f75e601060e95345309"}, ] [package.dependencies] setuptools = "*" [package.extras] -docs = ["Sphinx", "repoze.sphinx.autointerface"] +docs = ["Sphinx", "repoze.sphinx.autointerface", "sphinx-rtd-theme"] test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] @@ -4323,5 +4393,5 @@ files = [ [metadata] lock-version = "2.0" -python-versions = "~3.11" -content-hash = "f64a4f4c392d2f40ec97276254d470d3e3768f5d1a975bf807e30c7ffcbcc79a" +python-versions = "~3.12" +content-hash = "d0fe6ae1be389f8a5ca5112aa90555e2ce0a4f336f07a1da9c43dd521e9d9340" diff --git a/pyproject.toml b/pyproject.toml index ff8230e70..519dfee67 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ reportOptionalSubscript = false # so we have to disable those for now reportGeneralTypeIssues = false verboseOutput = false -pythonVersion = "3.11" +pythonVersion = "3.12" pythonPlatform = "All" [tool.black] @@ -154,7 +154,7 @@ pycryptodome = "*" pydantic = "*" pydantic-scim = "*" pyjwt = "*" -python = "~3.11" +python = "~3.12" pyyaml = "*" requests-oauthlib = "*" sentry-sdk = "*" diff --git a/website/developer-docs/index.md b/website/developer-docs/index.md index e28c48a0b..9b312b8a0 100644 --- a/website/developer-docs/index.md +++ b/website/developer-docs/index.md @@ -160,7 +160,7 @@ While the prerequisites above must be satisfied prior to having your pull reques All Python code is linted with [black](https://black.readthedocs.io/en/stable/), [PyLint](https://www.pylint.org/) and [isort](https://pycqa.github.io/isort/). -authentik runs on Python 3.11 at the time of writing this. +authentik runs on Python 3.12 at the time of writing this. - Use native type-annotations wherever possible. - Add meaningful docstrings when possible. diff --git a/website/developer-docs/setup/full-dev-environment.md b/website/developer-docs/setup/full-dev-environment.md index eb4888e8b..10784a53d 100644 --- a/website/developer-docs/setup/full-dev-environment.md +++ b/website/developer-docs/setup/full-dev-environment.md @@ -4,7 +4,7 @@ title: Full development environment ## Requirements -- Python 3.11 +- Python 3.12 - Poetry, which is used to manage dependencies - Go 1.20 - Node.js 20 From 0e244c3ebabbf7f205a771dbc68f386cdf0de487 Mon Sep 17 00:00:00 2001 From: Jens L Date: Wed, 22 Nov 2023 14:50:13 +0100 Subject: [PATCH 40/47] web: fix locale (#7689) Signed-off-by: Jens Langhammer --- web/xliff/fr.xlf | 66 +++++++++++++++++++++---------------------- web/xliff/zh-Hans.xlf | 48 +++++++++++++++---------------- web/xliff/zh_TW.xlf | 39 +++++++++++++------------ 3 files changed, 76 insertions(+), 77 deletions(-) diff --git a/web/xliff/fr.xlf b/web/xliff/fr.xlf index fd335ca02..37dfc4bce 100644 --- a/web/xliff/fr.xlf +++ b/web/xliff/fr.xlf @@ -1,4 +1,4 @@ - + @@ -613,9 +613,9 @@ Il y a jour(s) - The URL "" was not found. - L'URL " - " n'a pas été trouvée. + The URL "" was not found. + L'URL " + " n'a pas été trouvée. @@ -1057,8 +1057,8 @@ Il y a jour(s) - To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. - Pour permettre n'importe quelle URI de redirection, définissez cette valeur sur ".*". Soyez conscient des possibles implications de sécurité que cela peut avoir. + To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. + Pour permettre n'importe quelle URI de redirection, définissez cette valeur sur ".*". Soyez conscient des possibles implications de sécurité que cela peut avoir. @@ -1630,7 +1630,7 @@ Il y a jour(s) Token to authenticate with. Currently only bearer authentication is supported. - Jeton d'authentification à utiliser. Actuellement, seule l'authentification "bearer authentication" est prise en charge. + Jeton d'authentification à utiliser. Actuellement, seule l'authentification "bearer authentication" est prise en charge. @@ -1798,8 +1798,8 @@ Il y a jour(s) - Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". - Entrez une URL complète, un chemin relatif ou utilisez 'fa://fa-test' pour utiliser l'icône Font Awesome "fa-test". + Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". + Entrez une URL complète, un chemin relatif ou utilisez 'fa://fa-test' pour utiliser l'icône Font Awesome "fa-test". @@ -2897,7 +2897,7 @@ doesn't pass when either or both of the selected options are equal or above the To use SSL instead, use 'ldaps://' and disable this option. - Pour utiliser SSL à la base, utilisez "ldaps://" et désactviez cette option. + Pour utiliser SSL à la base, utilisez "ldaps://" et désactviez cette option. @@ -2986,8 +2986,8 @@ doesn't pass when either or both of the selected options are equal or above the - Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' - Champ qui contient les membres d'un groupe. Si vous utilisez le champ "memberUid", la valeur est censée contenir un nom distinctif relatif, par exemple 'memberUid=un-utilisateur' au lieu de 'memberUid=cn=un-utilisateur,ou=groups,...' + Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' + Champ qui contient les membres d'un groupe. Si vous utilisez le champ "memberUid", la valeur est censée contenir un nom distinctif relatif, par exemple 'memberUid=un-utilisateur' au lieu de 'memberUid=cn=un-utilisateur,ou=groups,...' @@ -3282,7 +3282,7 @@ doesn't pass when either or both of the selected options are equal or above the Time offset when temporary users should be deleted. This only applies if your IDP uses the NameID Format 'transient', and the user doesn't log out manually. - Moment où les utilisateurs temporaires doivent être supprimés. Cela ne s'applique que si votre IDP utilise le format NameID "transient" et que l'utilisateur ne se déconnecte pas manuellement. + Moment où les utilisateurs temporaires doivent être supprimés. Cela ne s'applique que si votre IDP utilise le format NameID "transient" et que l'utilisateur ne se déconnecte pas manuellement. @@ -3450,7 +3450,7 @@ doesn't pass when either or both of the selected options are equal or above the Optionally set the 'FriendlyName' value of the Assertion attribute. - Indiquer la valeur "FriendlyName" de l'attribut d'assertion (optionnel) + Indiquer la valeur "FriendlyName" de l'attribut d'assertion (optionnel) @@ -3779,8 +3779,8 @@ doesn't pass when either or both of the selected options are equal or above the - When using an external logging solution for archiving, this can be set to "minutes=5". - En cas d'utilisation d'une solution de journalisation externe pour l'archivage, cette valeur peut être fixée à "minutes=5". + When using an external logging solution for archiving, this can be set to "minutes=5". + En cas d'utilisation d'une solution de journalisation externe pour l'archivage, cette valeur peut être fixée à "minutes=5". @@ -3789,8 +3789,8 @@ doesn't pass when either or both of the selected options are equal or above the - Format: "weeks=3;days=2;hours=3,seconds=2". - Format : "weeks=3;days=2;hours=3,seconds=2". + Format: "weeks=3;days=2;hours=3,seconds=2". + Format : "weeks=3;days=2;hours=3,seconds=2". @@ -3986,10 +3986,10 @@ doesn't pass when either or both of the selected options are equal or above the - Are you sure you want to update ""? + Are you sure you want to update ""? Êtes-vous sûr de vouloir mettre à jour - " - " ? + " + " ? @@ -5075,8 +5075,8 @@ doesn't pass when either or both of the selected options are equal or above the - A "roaming" authenticator, like a YubiKey - Un authentificateur "itinérant", comme une YubiKey + A "roaming" authenticator, like a YubiKey + Un authentificateur "itinérant", comme une YubiKey @@ -5401,7 +5401,7 @@ doesn't pass when either or both of the selected options are equal or above the Show arbitrary input fields to the user, for example during enrollment. Data is saved in the flow context under the 'prompt_data' variable. - Afficher des champs de saisie arbitraires à l'utilisateur, par exemple pendant l'inscription. Les données sont enregistrées dans le contexte du flux sous la variable "prompt_data". + Afficher des champs de saisie arbitraires à l'utilisateur, par exemple pendant l'inscription. Les données sont enregistrées dans le contexte du flux sous la variable "prompt_data". @@ -5410,10 +5410,10 @@ doesn't pass when either or both of the selected options are equal or above the - ("", of type ) + ("", of type ) - (" - ", de type + (" + ", de type ) @@ -5462,8 +5462,8 @@ doesn't pass when either or both of the selected options are equal or above the - If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. - Si défini à une durée supérieure à 0, l'utilisateur aura la possibilité de choisir de "rester connecté", ce qui prolongera sa session jusqu'à la durée spécifiée ici. + If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. + Si défini à une durée supérieure à 0, l'utilisateur aura la possibilité de choisir de "rester connecté", ce qui prolongera sa session jusqu'à la durée spécifiée ici. @@ -6247,7 +6247,7 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti Can be in the format of 'unix://' when connecting to a local docker daemon, using 'ssh://' to connect via SSH, or 'https://:2376' when connecting to a remote system. - Peut être au format "unix://" pour une connexion à un service docker local, "ssh://" pour une connexion via SSH, ou "https://:2376" pour une connexion à un système distant. + Peut être au format "unix://" pour une connexion à un service docker local, "ssh://" pour une connexion via SSH, ou "https://:2376" pour une connexion à un système distant. @@ -7554,7 +7554,7 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti Use this provider with nginx's auth_request or traefik's forwardAuth. Each application/domain needs its own provider. Additionally, on each domain, /outpost.goauthentik.io must be routed to the outpost (when using a managed outpost, this is done for you). - Utilisez ce fournisseur avec l'option "auth_request" de Nginx ou "forwardAuth" de Traefik. Chaque application/domaine a besoin de son propre fournisseur. De plus, sur chaque domaine, "/outpost.goauthentik.io" doit être routé vers le poste avancé (lorsque vous utilisez un poste avancé géré, cela est fait pour vous). + Utilisez ce fournisseur avec l'option "auth_request" de Nginx ou "forwardAuth" de Traefik. Chaque application/domaine a besoin de son propre fournisseur. De plus, sur chaque domaine, "/outpost.goauthentik.io" doit être routé vers le poste avancé (lorsque vous utilisez un poste avancé géré, cela est fait pour vous). Default relay state @@ -7976,7 +7976,7 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti Utilisateur créé et ajouté au groupe avec succès - This user will be added to the group "". + This user will be added to the group "". Cet utilisateur sera ajouté au groupe &quot;&quot;. @@ -7989,4 +7989,4 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti - \ No newline at end of file + diff --git a/web/xliff/zh-Hans.xlf b/web/xliff/zh-Hans.xlf index f314f44a2..96bfb9808 100644 --- a/web/xliff/zh-Hans.xlf +++ b/web/xliff/zh-Hans.xlf @@ -1,4 +1,4 @@ - + @@ -613,9 +613,9 @@ - The URL "" was not found. - 未找到 URL " - "。 + The URL "" was not found. + 未找到 URL " + "。 @@ -1057,8 +1057,8 @@ - To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. - 要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。 + To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. + 要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。 @@ -1799,8 +1799,8 @@ - Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". - 输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。 + Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". + 输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。 @@ -2988,8 +2988,8 @@ doesn't pass when either or both of the selected options are equal or above the - Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' - 包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...' + Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' + 包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...' @@ -3781,8 +3781,8 @@ doesn't pass when either or both of the selected options are equal or above the - When using an external logging solution for archiving, this can be set to "minutes=5". - 使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。 + When using an external logging solution for archiving, this can be set to "minutes=5". + 使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。 @@ -3791,8 +3791,8 @@ doesn't pass when either or both of the selected options are equal or above the - Format: "weeks=3;days=2;hours=3,seconds=2". - 格式:"weeks=3;days=2;hours=3,seconds=2"。 + Format: "weeks=3;days=2;hours=3,seconds=2". + 格式:"weeks=3;days=2;hours=3,seconds=2"。 @@ -3988,10 +3988,10 @@ doesn't pass when either or both of the selected options are equal or above the - Are you sure you want to update ""? + Are you sure you want to update ""? 您确定要更新 - " - " 吗? + " + " 吗? @@ -5077,7 +5077,7 @@ doesn't pass when either or both of the selected options are equal or above the - A "roaming" authenticator, like a YubiKey + A "roaming" authenticator, like a YubiKey 像 YubiKey 这样的“漫游”身份验证器 @@ -5412,10 +5412,10 @@ doesn't pass when either or both of the selected options are equal or above the - ("", of type ) + ("", of type ) - (" - ",类型为 + (" + ",类型为 @@ -5464,7 +5464,7 @@ doesn't pass when either or both of the selected options are equal or above the - If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. + If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. 如果设置时长大于 0,用户可以选择“保持登录”选项,这将使用户的会话延长此处设置的时间。 @@ -7978,7 +7978,7 @@ Bindings to groups/users are checked against the user of the event. 成功创建用户并添加到组 - This user will be added to the group "". + This user will be added to the group "". 此用户将会被添加到组 &quot;&quot;。 @@ -7991,4 +7991,4 @@ Bindings to groups/users are checked against the user of the event. - \ No newline at end of file + diff --git a/web/xliff/zh_TW.xlf b/web/xliff/zh_TW.xlf index aa8793c9a..eccaef9f7 100644 --- a/web/xliff/zh_TW.xlf +++ b/web/xliff/zh_TW.xlf @@ -1,4 +1,4 @@ - + @@ -604,8 +604,8 @@ - The URL "" was not found. - 找不到網址 ""。 + The URL "" was not found. + 找不到網址 ""。 @@ -1044,8 +1044,8 @@ - To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. - 欲允許任何重新導向的 URI,輸入 ".*" ,但請注意這個可會有安全性風險。 + To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. + 欲允許任何重新導向的 URI,輸入 ".*" ,但請注意這個可會有安全性風險。 @@ -1780,7 +1780,7 @@ - Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". + Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". 輸入完整網址、相對路徑,或者使用 'fa://fa-test' 來使用 Font Awesome 圖示 「fa-test」。 @@ -2965,7 +2965,7 @@ doesn't pass when either or both of the selected options are equal or above the - Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' + Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' 包含群組成員的欄位。注意,如果使用「memberUid」欄位,則假設其值包含相對可分辨的名稱。例如,「memberUID=some-user」而不是「memberuid=cn=some-user,ou=groups,... 」 @@ -3755,7 +3755,7 @@ doesn't pass when either or both of the selected options are equal or above the - When using an external logging solution for archiving, this can be set to "minutes=5". + When using an external logging solution for archiving, this can be set to "minutes=5". 如果使用外部日誌紀錄解決方案時,可以設定為「minutes=5」。 @@ -3765,7 +3765,7 @@ doesn't pass when either or both of the selected options are equal or above the - Format: "weeks=3;days=2;hours=3,seconds=2". + Format: "weeks=3;days=2;hours=3,seconds=2". 格式:(weeks=3;days=2;hours=3,seconds=2)。 @@ -3958,7 +3958,7 @@ doesn't pass when either or both of the selected options are equal or above the - Are you sure you want to update ""? + Are you sure you want to update ""? 您確定要更新 」嗎? @@ -3997,11 +3997,7 @@ doesn't pass when either or both of the selected options are equal or above the 移除使用者 - - Are you sure you want to remove the selected users from the group ? - 您確定要將選擇的使用者從群組中移除嗎? - - + Remove 移除 @@ -5037,7 +5033,7 @@ doesn't pass when either or both of the selected options are equal or above the - A "roaming" authenticator, like a YubiKey + A "roaming" authenticator, like a YubiKey 外接式的身分認證器,例如 YubiKey @@ -5372,7 +5368,7 @@ doesn't pass when either or both of the selected options are equal or above the - ("", of type ) + ("", of type ) (「」,類型為 ) @@ -5422,7 +5418,7 @@ doesn't pass when either or both of the selected options are equal or above the - If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. + If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. 如果持續時間大於零,使用者介面上將會有「保持登入」選項。這將會依照設定的時間延長會談。 @@ -7916,7 +7912,7 @@ Bindings to groups/users are checked against the user of the event. 成功建立使用者並加入到群組 - This user will be added to the group "". + This user will be added to the group "". 這個使用者將會被加入到「」群組。 @@ -7926,7 +7922,10 @@ Bindings to groups/users are checked against the user of the event. When enabled, the stage will always accept the given user identifier and continue. 啟用時,該階段將始終接受給定的使用者識別碼並繼續執行。 + + + Are you sure you want to remove the selected users from the group ? - \ No newline at end of file + From 30f9d6bf83fb73363cac2c51fa57daefc2162852 Mon Sep 17 00:00:00 2001 From: sdimovv <36302090+sdimovv@users.noreply.github.com> Date: Wed, 22 Nov 2023 15:22:42 +0000 Subject: [PATCH 41/47] website/docs: Add OIDC auth integration with Nextcloud (#7406) * Add OIDC auth docs * lint * fix note * lint * typo * Update index.md Signed-off-by: sdimovv <36302090+sdimovv@users.noreply.github.com> * clarify 2 SSO protocols * lint * Update index.md Signed-off-by: sdimovv <36302090+sdimovv@users.noreply.github.com> * fix typos Signed-off-by: Jens Langhammer --------- Signed-off-by: sdimovv <36302090+sdimovv@users.noreply.github.com> Signed-off-by: Jens Langhammer Co-authored-by: Jens Langhammer --- .../integrations/services/nextcloud/index.md | 193 +++++++++++++++++- 1 file changed, 189 insertions(+), 4 deletions(-) diff --git a/website/integrations/services/nextcloud/index.md b/website/integrations/services/nextcloud/index.md index d052f8ca7..ab8d92f0d 100644 --- a/website/integrations/services/nextcloud/index.md +++ b/website/integrations/services/nextcloud/index.md @@ -18,7 +18,192 @@ This setup only works, when Nextcloud is running with HTTPS enabled. See [here]( In case something goes wrong with the configuration, you can use the URL `http://nextcloud.company/login?direct=1` to log in using the built-in authentication. ::: -## Preparation +## Authentication + +There are 2 ways to setup single sign on (SSO) for Nextcloud: + +- [via OIDC Connect (OAuth)](#openid-connect-auth) +- [via SAML](#saml-auth) + +### OpenID Connect auth + +#### Preparation + +The following placeholders will be used: + +- `nextcloud.company` is the FQDN of the Nextcloud install. +- `authentik.company` is the FQDN of the authentik install. +- `authentik.local` is the internal FQDN of the authentik install (only relevant when running authentik and Nextcloud behind a reverse proxy) + +Lets start by thinking what user attributes need to be available in Nextcloud: + +- name +- email +- unique user ID +- storage quota (optional) +- groups (optional) + +authentik already provides some default _scopes_ with _claims_ inside them, such as: + +- `email` scope: Has claims `email` and `email_verified` +- `profile` scope: Has claims `name`, `given_name`, `preferred_username`, `nickname`, `groups` +- `openid` scope: This is a default scope required by the OpenID spec. It contains no claims + +##### Custom profile scope + +If you do not need storage quota or group information in Nextcloud [skip to the next step](#provider-and-application). + +However, if you want to be able to control how much storage users in Nextcloud can use, as well as which users are recognized as Nextcloud administrators, you would need to make this information available in Nextcloud. To achieve this you would need to create a custom `profile` scope. To do so, go to _Customisation_ -> _Property mappings_. Create a _Scope mapping_ with the following parameters: + +- Name: Nextcloud Profile +- Scope name: profile +- Expression: + +```python +# Extract all groups the user is a member of +groups = [group.name for group in user.ak_groups.all()] + +# Nextcloud admins must be members of a group called "admin". +# This is static and cannot be changed. +# We append a fictional "admin" group to the user's groups if they are an admin in authentik. +# This group would only be visible in Nextcloud and does not exist in authentik. +if user.is_superuser and "admin" not in groups: + groups.append("admin") + +return { + "name": request.user.name, + "groups": groups, + # To set a quota set the "nextcloud_quota" property in the user's attributes + "quota": user.group_attributes().get("nextcloud_quota", None) +} +``` + +:::note +To set a quota set the "nextcloud_quota" property in the user's attributes. This can be set for individual users or a group of users, as long as the target user is a member of a group which has this attribute set. + +If set to a value, for example `1 GB`, user(s) will have 1GB storage quota. If the attribute is not set, user(s) will have unlimited storage. +::: + +##### Provider and Application + +Create a provider for Nextcloud. In the Admin Interface, go to _Applications_ -> _Providers_. Create an _OAuth2/OpenID Provider_ with the following parameters: + +- Name: Nextcloud +- Client type: Confidential +- Redirect URIs/Origins (RegEx): `https://nextcloud.company/apps/user_oidc/code` +- Signing key: Any valid certificate +- Under advanced settings: + - Scopes: + - `authentik default Oauth Mapping email` + - `Nextcloud Profile` (or `authentik default Oauth Mapping profile` if you skipped the [custom profile scope](#custom-profile-scope) section) + - Subject mode: Based on the User's UUID + :::danger + Nextcloud will use the UUID as username. However, mapping the subject mode to authentik usernames is **not recommended** due to their mutable nature. This can lead to security issues such as user impersonation. If you still wish to map the subject mode to an username, [disable username changing](../../../docs/installation/configuration#authentik_default_user_change_username) in authentik and set this to `Based on the User's username`. + ::: + - Include claims in ID token: ✔️ + +Before continuing, make sure to take note of your `client ID` and `secret ID`. Don't worry you can go back to see/change them at any time. + +:::warning +Currently there is a bug in the Nextcloud OIDC app, that is [limiting the size of the secret ID](https://github.com/nextcloud/user_oidc/issues/405) token to 64 characters. Since authentik uses 128 characters for a secret ID by default, you will need to trim it down to 64 characters in order to be able to set it in Nextcloud. Don't worry, 64 characters is still sufficiently long and should not compromise security. +::: + +:::note +Depending on your Nextcloud configuration, you might need to use `https://nextcloud.company/index.php/` instead of `https://nextcloud.company/` +::: + +After the provider is created, link it to an app. Go to _Applications_ -> _Applications_. Create an application and choose the provider you just created. Make sure to take note of the _application slug_. You will need this later. + +#### Nextcloud + +In Nextcloud, ensure that the `OpenID Connect user backend` app is installed. Navigate to `Settings`, then `OpenID Connect`. + +Add a new provider using the `+` button and set the following values: + +- Identifier: Authentik +- Client ID: The client ID from the provider +- Client secret: The secret ID from the provider +- Discovery endpoint: `https://authentik.company/application/o//.well-known/openid-configuration` + :::tip + If you are running both your authentik and Nextcloud instances behind a reverse proxy, you can go ahead and use your internal FQDN here (i.e. `http://authentik.local`, however, note that if you do so there is [extra configuration required](#extra-configuration-when-running-behind-a-reverse-proxy)). + ::: +- Scope: `email`, `profile` (you can safely omit `openid` if you prefer) +- Attribute mappings: + - User ID mapping: sub + - Display name mapping: name + - Email mapping: email + - Quota mapping: quota (leave empty if you have skipped the [custom profile scope](#custom-profile-scope) section) + - Groups mapping: group (leave empty if you have skipped the [custom profile scope](#custom-profile-scope) section) + :::tip + You need to enable the "Use group provisioning" checkmark to be able to write to this field + ::: +- Use unique user ID: If you only have one provider you can uncheck this if you prefer. + +At this stage you should be able to login with SSO. + +##### Making the OIDC provider the default login method + +If you intend to only login to Nextcloud using your freshly configured authentik provider, you may wish to make it the default login method. This will allow your users to be automatically redirected to authentik when they attempt to access your Nextcloud instance, as opposed to having to manually click on "Log in with Authentik" every time they wish to login. + +To achieve this, you will need to use the `occ` command of your Nextcloud instance: + +```bash +sudo -u www-data php var/www/nextcloud/occ config:app:set --value=0 user_oidc allow_multiple_user_backends +``` + +##### Extra configuration when running behind a reverse proxy + +The OpendID Connect discovery endpoint is queried by Nextcloud and contains a list of endpoints for use by both the relying party (Nextcloud) and the authenticating user. + +:::note +If you are configuring an insecure (http) discovery endpoint, Nextcloud will, by default, refuse to connect to it. To change this behaviour, you must add `allow_local_remote_servers => true` to your `config.php` +::: + +:::note +It is currently not possible force Nextcloud to connect to an https endpoint which uses an untrusted (selfsigned) certificate. If this is the case with your setup, you can do one of 3 things: + +- switch to using a trusted certificate +- add the selfsigned certificate to Nextcloud's trust store +- switch to using an http endpoint and add `allow_local_remote_servers => true` to your `config.php` + +::: + +Because authentik has no knowledge of where each endpoint is/can be accessed from, it will always return endpoints with domain names matching the one used to make the discovery endpoint request. + +For example, if your Nextcloud instance queries the discovery endpoint using an internal domain name (`authentik.local`), all returned endpoints will have the same domain name. In this case: + +- `http://authentik.local/application/o//` +- `http://authentik.local/application/o/authorize/` +- `http://authentik.local/application/o/token/` +- `http://authentik.local/application/o/userinfo/` +- `http://authentik.local/application/o//end-session/` +- `http://authentik.local/application/o/introspect/` +- `http://authentik.local/application/o/revoke/` +- `http://authentik.local/application/o/device/` +- `http://authentik.local/application/o//jwks/` + +This represents a problem, because Nextcloud will attempt to redirect the user to the received `authorization` and `end-session` endpoints during login and logout respectively. When that happens, the user will try to access an internal domain and fail. + +The easiest way to fix this is to modify the redirect response's `Location` header coming back from Nextcloud during login and logout. Different proxies have different ways of achieving this. For example with Traefik, a 3rd party plugin called [Rewrite Header](https://plugins.traefik.io/plugins/628c9eb5108ecc83915d7758/rewrite-header) can be used. + +At a minimum, the `authorize` and `end-session` endpoints must be edited in-flight like so: + +- `http://authentik.local/application/o/authorize/` -> `https://authentik.company/application/o/authorize/` +- `http://authentik.local/application/o//end-session/` -> `https://authentik.company/application/o//end-session/` + +:::note +HTTP headers are usually capitalised (e.g. **L**ocation), however, at least some versions of Nextcloud seem to return all lowercase headers (e.g. **l**ocation). To be safe, make sure to add header replacement rules for both cases. +::: + +If you prefer, you may also edit the rest of the endpoints, though that should not be necessary, as they should not be accessed by the user. + +:::tip +If you do not have any relying parties accessing authentik from the outside, you may also configure your proxy to only allow access to the `authorize` and `end-session` endpoints from the outside world. +::: + +### SAML auth + +#### Preparation The following placeholders will be used: @@ -40,7 +225,7 @@ Depending on your Nextcloud configuration, you might need to use `https://nextcl You can of course use a custom signing certificate, and adjust durations. -## Nextcloud +#### Nextcloud In Nextcloud, ensure that the `SSO & SAML Authentication` app is installed. Navigate to `Settings`, then `SSO & SAML Authentication`. @@ -70,7 +255,7 @@ To do this you will need to add the line `'overwriteprotocol' => 'https'` to `co See https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/reverse_proxy_configuration.html#overwrite-parameters for additional information ::: -## Group Quotas +#### Group Quotas Create a group for each different level of quota you want users to have. Set a custom attribute, for example called `nextcloud_quota`, to the quota you want, for example `15 GB`. @@ -91,7 +276,7 @@ In Nextcloud, go to `Settings`, then `SSO & SAML Authentication`Under `Attribute - Attribute to map the quota to.: `nextcloud_quota` -## Admin Group +#### Admin Group To give authentik users admin access to your Nextcloud instance, you need to create a custom Property Mapping that maps an authentik group to "admin". It has to be mapped to "admin" as this is static in Nextcloud and cannot be changed. From 255e1430ed40331589026a71d8acf899a7c99dca Mon Sep 17 00:00:00 2001 From: Ken Sternberg <133134217+kensternberg-authentik@users.noreply.github.com> Date: Wed, 22 Nov 2023 08:42:46 -0800 Subject: [PATCH 42/47] web: fix labels on group view page (#7677) * web: break circular dependency between AKElement & Interface. This commit changes the way the root node of the web application shell is discovered by child components, such that the base class shared by both no longer results in a circular dependency between the two models. I've run this in isolation and have seen no failures of discovery; the identity token exists as soon as the Interface is constructed and is found by every item on the page. * web: fix broken typescript references This built... and then it didn't? Anyway, the current fix is to provide type information the AkInterface for the data that consumers require. * web: rollback dependabot's upgrade of context The most frustrating part of this is that I RAN THIS, dammit, with the updated context and the current Wizard, and it finished the End-to-End tests without complaint. * web: fix labels on group view page This is a wild bug, because what caused it and how it manifested are seemingly unrelated as to be hallcinatory. --- web/src/admin/groups/GroupViewPage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/admin/groups/GroupViewPage.ts b/web/src/admin/groups/GroupViewPage.ts index a2f704363..8faaca198 100644 --- a/web/src/admin/groups/GroupViewPage.ts +++ b/web/src/admin/groups/GroupViewPage.ts @@ -118,7 +118,7 @@ export class GroupViewPage extends AKElement {
    From 8db34fc65b42207f33678ca34dbe9ec6b1c1dc9c Mon Sep 17 00:00:00 2001 From: Jens L Date: Wed, 22 Nov 2023 20:53:10 +0100 Subject: [PATCH 43/47] events: include user agent in events (#7693) * events: include user agent in events Signed-off-by: Jens Langhammer * fix tests Signed-off-by: Jens Langhammer --------- Signed-off-by: Jens Langhammer --- authentik/events/models.py | 1 + authentik/events/tests/test_event.py | 12 +++++++++++- .../stages/authenticator_validate/tests/test_duo.py | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/authentik/events/models.py b/authentik/events/models.py index 4b245e49f..c43128419 100644 --- a/authentik/events/models.py +++ b/authentik/events/models.py @@ -217,6 +217,7 @@ class Event(SerializerModel, ExpiringModel): "path": request.path, "method": request.method, "args": cleanse_dict(QueryDict(request.META.get("QUERY_STRING", ""))), + "user_agent": request.META.get("HTTP_USER_AGENT", ""), } # Special case for events created during flow execution # since they keep the http query within a wrapped query diff --git a/authentik/events/tests/test_event.py b/authentik/events/tests/test_event.py index 4d636e9b2..3019d5bae 100644 --- a/authentik/events/tests/test_event.py +++ b/authentik/events/tests/test_event.py @@ -53,7 +53,15 @@ class TestEvents(TestCase): """Test plain from_http""" event = Event.new("unittest").from_http(self.factory.get("/")) self.assertEqual( - event.context, {"http_request": {"args": {}, "method": "GET", "path": "/"}} + event.context, + { + "http_request": { + "args": {}, + "method": "GET", + "path": "/", + "user_agent": "", + } + }, ) def test_from_http_clean_querystring(self): @@ -67,6 +75,7 @@ class TestEvents(TestCase): "args": {"token": SafeExceptionReporterFilter.cleansed_substitute}, "method": "GET", "path": "/", + "user_agent": "", } }, ) @@ -83,6 +92,7 @@ class TestEvents(TestCase): "args": {"token": SafeExceptionReporterFilter.cleansed_substitute}, "method": "GET", "path": "/", + "user_agent": "", } }, ) diff --git a/authentik/stages/authenticator_validate/tests/test_duo.py b/authentik/stages/authenticator_validate/tests/test_duo.py index 22d1fe746..1f3edb62e 100644 --- a/authentik/stages/authenticator_validate/tests/test_duo.py +++ b/authentik/stages/authenticator_validate/tests/test_duo.py @@ -184,6 +184,7 @@ class AuthenticatorValidateStageDuoTests(FlowTestCase): "args": {}, "method": "GET", "path": f"/api/v3/flows/executor/{flow.slug}/", + "user_agent": "", }, }, ) From 4e1e74142e5cc4eea8bf35389473ed684bb9137a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 10:55:00 +0100 Subject: [PATCH 44/47] web: bump the wdio group in /tests/wdio with 4 updates (#7696) Bumps the wdio group in /tests/wdio with 4 updates: [@wdio/cli](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-cli), [@wdio/local-runner](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-local-runner), [@wdio/mocha-framework](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-mocha-framework) and [@wdio/spec-reporter](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-spec-reporter). Updates `@wdio/cli` from 8.23.4 to 8.24.0 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.24.0/packages/wdio-cli) Updates `@wdio/local-runner` from 8.23.4 to 8.24.0 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.24.0/packages/wdio-local-runner) Updates `@wdio/mocha-framework` from 8.23.1 to 8.24.0 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.24.0/packages/wdio-mocha-framework) Updates `@wdio/spec-reporter` from 8.23.1 to 8.24.0 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.24.0/packages/wdio-spec-reporter) --- updated-dependencies: - dependency-name: "@wdio/cli" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: wdio - dependency-name: "@wdio/local-runner" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: wdio - dependency-name: "@wdio/mocha-framework" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: wdio - dependency-name: "@wdio/spec-reporter" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: wdio ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/wdio/package-lock.json | 153 ++++++++++++++++++----------------- tests/wdio/package.json | 8 +- 2 files changed, 81 insertions(+), 80 deletions(-) diff --git a/tests/wdio/package-lock.json b/tests/wdio/package-lock.json index a376489d1..29766a263 100644 --- a/tests/wdio/package-lock.json +++ b/tests/wdio/package-lock.json @@ -9,10 +9,10 @@ "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", - "@wdio/cli": "^8.23.4", - "@wdio/local-runner": "^8.23.4", - "@wdio/mocha-framework": "^8.23.1", - "@wdio/spec-reporter": "^8.23.1", + "@wdio/cli": "^8.24.0", + "@wdio/local-runner": "^8.24.0", + "@wdio/mocha-framework": "^8.24.0", + "@wdio/spec-reporter": "^8.24.0", "eslint": "^8.54.0", "eslint-config-google": "^0.14.0", "eslint-plugin-sonarjs": "^0.23.0", @@ -1141,18 +1141,18 @@ "dev": true }, "node_modules/@wdio/cli": { - "version": "8.23.4", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.23.4.tgz", - "integrity": "sha512-ceEALiV4zhljyrOfWInOe68VgeAgBgYu3KvFxZxsZv5RM8psZ2yvuDf77MTno9zIeqDYSBjVIFjq1UQOkt9Hgg==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.24.0.tgz", + "integrity": "sha512-dcoJzGDLFz+FyEsXIQ4HN34LY+DzYslVv/Trvk7+ITnsIG8z6/hVjIlzfYTizAWOie7ipnaoenYmODuS0DXCgA==", "dev": true, "dependencies": { "@types/node": "^20.1.1", - "@wdio/config": "8.23.1", - "@wdio/globals": "8.23.4", + "@wdio/config": "8.24.0", + "@wdio/globals": "8.24.0", "@wdio/logger": "8.16.17", "@wdio/protocols": "8.23.0", - "@wdio/types": "8.23.1", - "@wdio/utils": "8.23.1", + "@wdio/types": "8.24.0", + "@wdio/utils": "8.24.0", "async-exit-hook": "^2.0.1", "chalk": "^5.2.0", "chokidar": "^3.5.3", @@ -1168,7 +1168,7 @@ "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", "recursive-readdir": "^2.2.3", - "webdriverio": "8.23.4", + "webdriverio": "8.24.0", "yargs": "^17.7.2" }, "bin": { @@ -1191,14 +1191,14 @@ } }, "node_modules/@wdio/config": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.23.1.tgz", - "integrity": "sha512-MljMBvMr+QYoy4/FytFHWorFE3CrBdEWuroOaGzC/0gkVOcHRO4nOy2rKahdcPXJAuxFwJNqqHhBPj+4tWiz9w==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.24.0.tgz", + "integrity": "sha512-n92MPtRCLH763ssS6f/r7uWhnFkIg072nqZK+YnXTlTVIED9SdlMXlyjp9e/1sRmXUc7LbVPwvEVa35lsO0S8w==", "dev": true, "dependencies": { "@wdio/logger": "8.16.17", - "@wdio/types": "8.23.1", - "@wdio/utils": "8.23.1", + "@wdio/types": "8.24.0", + "@wdio/utils": "8.24.0", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", @@ -1209,29 +1209,29 @@ } }, "node_modules/@wdio/globals": { - "version": "8.23.4", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.23.4.tgz", - "integrity": "sha512-Sxw1HxDexfz1WTUsVekUysbi7VZ7mjbWZ4YfU12TraBi9azuoah7pEOvBp8Rwfsz6kuLl3ac1UsdPYo8ar6/uw==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.24.0.tgz", + "integrity": "sha512-hdYyY8fF8DU6Gr0dCyqaP8u4OMjUiRUPaphwbXgjcNfoe7Hc5eHxDIMGc5rWO6QSC1M6LwFzvCu/6DwE04iG7g==", "dev": true, "engines": { "node": "^16.13 || >=18" }, "optionalDependencies": { - "expect-webdriverio": "^4.5.1", - "webdriverio": "8.23.4" + "expect-webdriverio": "^4.6.1", + "webdriverio": "8.24.0" } }, "node_modules/@wdio/local-runner": { - "version": "8.23.4", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.23.4.tgz", - "integrity": "sha512-c2R8Xe4uAlLP1ESODNuElz8kFRdnfvsURQAh1FBLVCgl7Yfyj6QF2ei25C6CThtAUoCdrTSULgp7SWBdQIRwpg==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.24.0.tgz", + "integrity": "sha512-P8KVz5QdWKkRMI+WMVdC+m6YRXC36v44mQ+HCUR1XCLO3omTNU6frzLvc7eOKm0cr3vuS16sFAnce9qO4V6xnQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@wdio/logger": "8.16.17", "@wdio/repl": "8.23.1", - "@wdio/runner": "8.23.4", - "@wdio/types": "8.23.1", + "@wdio/runner": "8.24.0", + "@wdio/types": "8.24.0", "async-exit-hook": "^2.0.1", "split2": "^4.1.0", "stream-buffers": "^3.0.2" @@ -1268,16 +1268,16 @@ } }, "node_modules/@wdio/mocha-framework": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-8.23.1.tgz", - "integrity": "sha512-6PbALck8MuLnKhW5JGjCQrtfBivlX1fKqdin6clppVEI6LTqOxj5w8wmLhBbDV5oy68MzaSgc6hP141caWptuQ==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-8.24.0.tgz", + "integrity": "sha512-UqmvE5Z+KsD+u4mGuV5Y4GUDwrfmX1qIzD07idaLwidU/rHRy+Csn5mzyN38VIrIAuyMYdMGRyxEEieeu6a/4w==", "dev": true, "dependencies": { "@types/mocha": "^10.0.0", "@types/node": "^20.1.0", "@wdio/logger": "8.16.17", - "@wdio/types": "8.23.1", - "@wdio/utils": "8.23.1", + "@wdio/types": "8.24.0", + "@wdio/utils": "8.24.0", "mocha": "^10.0.0" }, "engines": { @@ -1303,14 +1303,14 @@ } }, "node_modules/@wdio/reporter": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-8.23.1.tgz", - "integrity": "sha512-MQKImrjRZdiJC1n0mw+OjgroX7SZdFApJTPijAT3mJ0KLeIf5PA+jnW3TZueMcWvG1NB7ZTAzL8BTWInOoZtgA==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-8.24.0.tgz", + "integrity": "sha512-yQhUwV5W1oDnVzr1pPBaOOCDwAE0Iyri9sAzIHb4pF1ezdUNTVe8ZfoWZSD4i7oC3riK8MlH8hXfGNCfrFrWlg==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@wdio/logger": "8.16.17", - "@wdio/types": "8.23.1", + "@wdio/types": "8.24.0", "diff": "^5.0.0", "object-inspect": "^1.12.0" }, @@ -1319,35 +1319,35 @@ } }, "node_modules/@wdio/runner": { - "version": "8.23.4", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.23.4.tgz", - "integrity": "sha512-rbOluDjnYAUwc7WnsKi7yLNcHn7/uFUdc3oFEB46nwyNQpVSGaduMbyvzVR6cc38DVAuVyFBmT41GM+sRqA/PA==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.24.0.tgz", + "integrity": "sha512-TMlp9bXT6z9b8P8bvXitdAX/lZDrbqNLA0WH6nYokG8joDMQvMz2PaNz/4zbmcfWFfM1GhrUM8K2kOuxdUOTbQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.23.1", - "@wdio/globals": "8.23.4", + "@wdio/config": "8.24.0", + "@wdio/globals": "8.24.0", "@wdio/logger": "8.16.17", - "@wdio/types": "8.23.1", - "@wdio/utils": "8.23.1", + "@wdio/types": "8.24.0", + "@wdio/utils": "8.24.0", "deepmerge-ts": "^5.0.0", - "expect-webdriverio": "^4.5.1", + "expect-webdriverio": "^4.6.1", "gaze": "^1.1.2", - "webdriver": "8.23.1", - "webdriverio": "8.23.4" + "webdriver": "8.24.0", + "webdriverio": "8.24.0" }, "engines": { "node": "^16.13 || >=18" } }, "node_modules/@wdio/spec-reporter": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-8.23.1.tgz", - "integrity": "sha512-Igc/vsa58xbklwz8vJ1He3tyuxeEP9TQvlT23HizG1QziBvvU1b6V5qnM9BPiDvTg+n3SByJI0Ce0jyn4J2wYQ==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-8.24.0.tgz", + "integrity": "sha512-L65ua0+lGkmiiElHWE1zD3EnzZzyJli5tLmwYcahh4LwJ3hEOL7ut/GOZ8LTMih87T1q+KttQiJVmgnOEjMH5w==", "dev": true, "dependencies": { - "@wdio/reporter": "8.23.1", - "@wdio/types": "8.23.1", + "@wdio/reporter": "8.24.0", + "@wdio/types": "8.24.0", "chalk": "^5.1.2", "easy-table": "^1.2.0", "pretty-ms": "^7.0.0" @@ -1369,9 +1369,9 @@ } }, "node_modules/@wdio/types": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.23.1.tgz", - "integrity": "sha512-ym3tWSUGvmKwQ9vNPQfcKvJwGNK/Fh3e5WloNj3zoaUTKgD0aJeFQ0+Dz6KGlNowA0j5VkcqTTXo+UZ3l4Cx9A==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.24.0.tgz", + "integrity": "sha512-FXbJnQCS1b39RKqBlW9HTNEP4vukxjFc+GiwvPS+XPtY+3Vn7eOyBv3X3CiH1K7C+tzelqlio/HgP68pV5cXsQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0" @@ -1381,14 +1381,14 @@ } }, "node_modules/@wdio/utils": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.23.1.tgz", - "integrity": "sha512-VA47MOpt+7svHj3W9r+DUl3t73tJbjF7+ZXL0Lk7QLe79xevd+mPk+YmuTEepn+0MljJWAuqRCEKFG/HK77RNw==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.24.0.tgz", + "integrity": "sha512-m0qsWx2U5ZBTS0vzg1gTBp9mTrcLQlDrOBVR28LJ93a/e0bj+4aQ4c5U2y9gUzV+lKH0wUJSZTLnhebQwapURQ==", "dev": true, "dependencies": { "@puppeteer/browsers": "^1.6.0", "@wdio/logger": "8.16.17", - "@wdio/types": "8.23.1", + "@wdio/types": "8.24.0", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", @@ -3278,9 +3278,9 @@ } }, "node_modules/expect-webdriverio": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.5.1.tgz", - "integrity": "sha512-fwcMpPV/+e0bS+F7+bC1UoQsZYjJTcbA1XhU4VVB2pEZDhNmeuaPrCanA0tLVP8nDya75oegXK7LgPzP3zZR9w==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.6.1.tgz", + "integrity": "sha512-w6ee91kN3BoxNGVKQheAqFpRGMehdDg7kDiErEk/oM7tbd/WUT4R4v9KYOUtjiaUFHWWCRW2FtcOOjcd0+1pvQ==", "dev": true, "dependencies": { "expect": "^29.7.0", @@ -3291,8 +3291,9 @@ "node": ">=16 || >=18 || >=20" }, "optionalDependencies": { - "@wdio/globals": "^8.22.1", - "webdriverio": "^8.22.1" + "@wdio/globals": "^8.23.1", + "@wdio/logger": "^8.16.17", + "webdriverio": "^8.23.1" } }, "node_modules/external-editor": { @@ -8615,18 +8616,18 @@ } }, "node_modules/webdriver": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.23.1.tgz", - "integrity": "sha512-0PLN6cqP5cSorZBU2OBk2XKhxKpWWKzvClHBiGCqZIuofZ3kPTq7uYFapej0c4xFmKXHEiLIN7Qkt4H3gWTs8g==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.24.0.tgz", + "integrity": "sha512-zI1zw4lbP2cg1NPikIaUBHQU3+xdvEEBi0Jrydhtp3VVeIEqJWwUFxG/P9LwJpiQ0PYMb/5cxoQrSRhrEXyXHQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.23.1", + "@wdio/config": "8.24.0", "@wdio/logger": "8.16.17", "@wdio/protocols": "8.23.0", - "@wdio/types": "8.23.1", - "@wdio/utils": "8.23.1", + "@wdio/types": "8.24.0", + "@wdio/utils": "8.24.0", "deepmerge-ts": "^5.1.0", "got": "^ 12.6.1", "ky": "^0.33.0", @@ -8674,18 +8675,18 @@ } }, "node_modules/webdriverio": { - "version": "8.23.4", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.23.4.tgz", - "integrity": "sha512-tlma460ls27zv5Z+WHZG99SJrgcIZi4jsFrZeCCPZTtspOvXoqImL7g6orJTOJXVMhqptkFZN16zHONuAoXV5Q==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.24.0.tgz", + "integrity": "sha512-TYzJ2cVk3kBG00yZGN5xYOKtOVhNnIx7ZQdIeY1WSdWxqVN9tdvCnxAiBgWQ9nBh7yXyMWc25XFv1zNwQh2+Dg==", "dev": true, "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.23.1", + "@wdio/config": "8.24.0", "@wdio/logger": "8.16.17", "@wdio/protocols": "8.23.0", "@wdio/repl": "8.23.1", - "@wdio/types": "8.23.1", - "@wdio/utils": "8.23.1", + "@wdio/types": "8.24.0", + "@wdio/utils": "8.24.0", "archiver": "^6.0.0", "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", @@ -8702,7 +8703,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^11.0.1", - "webdriver": "8.23.1" + "webdriver": "8.24.0" }, "engines": { "node": "^16.13 || >=18" diff --git a/tests/wdio/package.json b/tests/wdio/package.json index ed0b0f351..b051b1f3d 100644 --- a/tests/wdio/package.json +++ b/tests/wdio/package.json @@ -6,10 +6,10 @@ "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", - "@wdio/cli": "^8.23.4", - "@wdio/local-runner": "^8.23.4", - "@wdio/mocha-framework": "^8.23.1", - "@wdio/spec-reporter": "^8.23.1", + "@wdio/cli": "^8.24.0", + "@wdio/local-runner": "^8.24.0", + "@wdio/mocha-framework": "^8.24.0", + "@wdio/spec-reporter": "^8.24.0", "eslint": "^8.54.0", "eslint-config-google": "^0.14.0", "eslint-plugin-sonarjs": "^0.23.0", From 0797dec46bb46ab57813e09d821acf97c275d808 Mon Sep 17 00:00:00 2001 From: Jens L Date: Thu, 23 Nov 2023 11:43:39 +0100 Subject: [PATCH 45/47] events: add better fallback for sanitize_item to ensure everything can be saved as JSON (#7694) * events: fix events sanitizing not handling all types Signed-off-by: Jens Langhammer * remove some leftover prints Signed-off-by: Jens Langhammer --------- Signed-off-by: Jens Langhammer --- authentik/events/utils.py | 11 +++++++++-- authentik/stages/authenticator_sms/stage.py | 1 - authentik/stages/authenticator_sms/tests.py | 2 -- authentik/stages/email/stage.py | 1 - 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/authentik/events/utils.py b/authentik/events/utils.py index d910e4a2d..2bc3587d6 100644 --- a/authentik/events/utils.py +++ b/authentik/events/utils.py @@ -5,12 +5,13 @@ from dataclasses import asdict, is_dataclass from datetime import date, datetime, time, timedelta from enum import Enum from pathlib import Path -from types import GeneratorType +from types import GeneratorType, NoneType from typing import Any, Optional from uuid import UUID from django.contrib.auth.models import AnonymousUser from django.core.handlers.wsgi import WSGIRequest +from django.core.serializers.json import DjangoJSONEncoder from django.db import models from django.db.models.base import Model from django.http.request import HttpRequest @@ -159,7 +160,13 @@ def sanitize_item(value: Any) -> Any: "name": value.__name__, "module": value.__module__, } - return value + # List taken from the stdlib's JSON encoder (_make_iterencode, encoder.py:415) + if isinstance(value, (bool, int, float, NoneType, list, tuple, dict)): + return value + try: + return DjangoJSONEncoder.default(value) + finally: + return str(value) def sanitize_dict(source: dict[Any, Any]) -> dict[Any, Any]: diff --git a/authentik/stages/authenticator_sms/stage.py b/authentik/stages/authenticator_sms/stage.py index dfbf48c68..e2c661089 100644 --- a/authentik/stages/authenticator_sms/stage.py +++ b/authentik/stages/authenticator_sms/stage.py @@ -69,7 +69,6 @@ class AuthenticatorSMSStageView(ChallengeStageView): stage: AuthenticatorSMSStage = self.executor.current_stage hashed_number = hash_phone_number(phone_number) query = Q(phone_number=hashed_number) | Q(phone_number=phone_number) - print(SMSDevice.objects.filter(query, stage=stage.pk)) if SMSDevice.objects.filter(query, stage=stage.pk).exists(): raise ValidationError(_("Invalid phone number")) # No code yet, but we have a phone number, so send a verification message diff --git a/authentik/stages/authenticator_sms/tests.py b/authentik/stages/authenticator_sms/tests.py index 9601cf886..1ab16aa56 100644 --- a/authentik/stages/authenticator_sms/tests.py +++ b/authentik/stages/authenticator_sms/tests.py @@ -199,11 +199,9 @@ class AuthenticatorSMSStageTests(FlowTestCase): sms_send_mock, ), ): - print(self.client.session[SESSION_KEY_PLAN]) response = self.client.get( reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), ) - print(response.content.decode()) self.assertStageResponse( response, self.flow, diff --git a/authentik/stages/email/stage.py b/authentik/stages/email/stage.py index 0b92173d5..a9570190a 100644 --- a/authentik/stages/email/stage.py +++ b/authentik/stages/email/stage.py @@ -59,7 +59,6 @@ class EmailStageView(ChallengeStageView): query_params = QueryDict(self.request.GET.get(QS_QUERY), mutable=True) query_params.pop(QS_KEY_TOKEN, None) query_params.update(kwargs) - print(query_params) full_url = base_url if len(query_params) > 0: full_url = f"{full_url}?{query_params.urlencode()}" From 8889e0d39addc015bc644ef1c16c6cf327bfec7e Mon Sep 17 00:00:00 2001 From: Jens L Date: Thu, 23 Nov 2023 23:59:42 +0100 Subject: [PATCH 46/47] events: fix lint (#7700) * events: fix lint Signed-off-by: Jens Langhammer * test without explicit poetry env use? Signed-off-by: Jens Langhammer * delete previous poetry env Signed-off-by: Jens Langhammer * prevent invalid cached poetry envs Signed-off-by: Jens Langhammer * run test-from-stable as matrix and make required Signed-off-by: Jens Langhammer * fix missing postgres version Signed-off-by: Jens Langhammer * sigh Signed-off-by: Jens Langhammer * idk Signed-off-by: Jens Langhammer --------- Signed-off-by: Jens Langhammer --- .github/actions/setup/action.yml | 5 ++--- .github/workflows/ci-main.yml | 21 +++++++++++++++++++-- authentik/events/utils.py | 5 +++-- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index acbf0e320..6e5bd99e6 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -2,7 +2,7 @@ name: "Setup authentik testing environment" description: "Setup authentik testing environment" inputs: - postgresql_tag: + postgresql_version: description: "Optional postgresql image tag" default: "12" @@ -33,9 +33,8 @@ runs: - name: Setup dependencies shell: bash run: | - export PSQL_TAG=${{ inputs.postgresql_tag }} + export PSQL_TAG=${{ inputs.postgresql_version }} docker-compose -f .github/actions/setup/docker-compose.yml up -d - poetry env use python3.12 poetry install cd web && npm ci - name: Generate config diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml index 9fa00800b..26baa3556 100644 --- a/.github/workflows/ci-main.yml +++ b/.github/workflows/ci-main.yml @@ -48,16 +48,27 @@ jobs: - name: run migrations run: poetry run python -m lifecycle.migrate test-migrations-from-stable: + name: test-migrations-from-stable - PostgreSQL ${{ matrix.psql }} runs-on: ubuntu-latest - continue-on-error: true + strategy: + fail-fast: false + matrix: + psql: + - 12-alpine + - 15-alpine + - 16-alpine steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup authentik env uses: ./.github/actions/setup + with: + postgresql_version: ${{ matrix.psql }} - name: checkout stable run: | + # Delete all poetry envs + rm -rf /home/runner/.cache/pypoetry # Copy current, latest config to local cp authentik/lib/default.yml local.env.yml cp -R .github .. @@ -67,6 +78,8 @@ jobs: mv ../.github ../scripts . - name: Setup authentik env (ensure stable deps are installed) uses: ./.github/actions/setup + with: + postgresql_version: ${{ matrix.psql }} - name: run migrations to stable run: poetry run python -m lifecycle.migrate - name: checkout current code @@ -76,9 +89,13 @@ jobs: git reset --hard HEAD git clean -d -fx . git checkout $GITHUB_SHA + # Delete previous poetry env + rm -rf $(poetry env info --path) poetry install - name: Setup authentik env (ensure latest deps are installed) uses: ./.github/actions/setup + with: + postgresql_version: ${{ matrix.psql }} - name: migrate to latest run: poetry run python -m lifecycle.migrate test-unittest: @@ -97,7 +114,7 @@ jobs: - name: Setup authentik env uses: ./.github/actions/setup with: - postgresql_tag: ${{ matrix.psql }} + postgresql_version: ${{ matrix.psql }} - name: run unittest run: | poetry run make test diff --git a/authentik/events/utils.py b/authentik/events/utils.py index 2bc3587d6..a7c3bdf3e 100644 --- a/authentik/events/utils.py +++ b/authentik/events/utils.py @@ -164,9 +164,10 @@ def sanitize_item(value: Any) -> Any: if isinstance(value, (bool, int, float, NoneType, list, tuple, dict)): return value try: - return DjangoJSONEncoder.default(value) - finally: + return DjangoJSONEncoder().default(value) + except TypeError: return str(value) + return str(value) def sanitize_dict(source: dict[Any, Any]) -> dict[Any, Any]: From 12f2484d084499bc8ac87b0c6dadd12e9e9b2569 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Nov 2023 13:15:03 +0100 Subject: [PATCH 47/47] web: bump the wdio group in /tests/wdio with 2 updates (#7702) Bumps the wdio group in /tests/wdio with 2 updates: [@wdio/cli](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-cli) and [@wdio/local-runner](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-local-runner). Updates `@wdio/cli` from 8.24.0 to 8.24.1 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.24.1/packages/wdio-cli) Updates `@wdio/local-runner` from 8.24.0 to 8.24.1 - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.24.1/packages/wdio-local-runner) --- updated-dependencies: - dependency-name: "@wdio/cli" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: wdio - dependency-name: "@wdio/local-runner" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: wdio ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/wdio/package-lock.json | 46 ++++++++++++++++++------------------ tests/wdio/package.json | 4 ++-- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/tests/wdio/package-lock.json b/tests/wdio/package-lock.json index 29766a263..c55e1f66d 100644 --- a/tests/wdio/package-lock.json +++ b/tests/wdio/package-lock.json @@ -9,8 +9,8 @@ "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", - "@wdio/cli": "^8.24.0", - "@wdio/local-runner": "^8.24.0", + "@wdio/cli": "^8.24.1", + "@wdio/local-runner": "^8.24.1", "@wdio/mocha-framework": "^8.24.0", "@wdio/spec-reporter": "^8.24.0", "eslint": "^8.54.0", @@ -1141,14 +1141,14 @@ "dev": true }, "node_modules/@wdio/cli": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.24.0.tgz", - "integrity": "sha512-dcoJzGDLFz+FyEsXIQ4HN34LY+DzYslVv/Trvk7+ITnsIG8z6/hVjIlzfYTizAWOie7ipnaoenYmODuS0DXCgA==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.24.1.tgz", + "integrity": "sha512-3NB5LwPN5f1C8LPumlOHFfoCFfE7OmM0h7vN0/gzjcIlCXMrJ9igePyDQ6Af7u/jqfPk3SloBsG9DnxZBCcAxQ==", "dev": true, "dependencies": { "@types/node": "^20.1.1", "@wdio/config": "8.24.0", - "@wdio/globals": "8.24.0", + "@wdio/globals": "8.24.1", "@wdio/logger": "8.16.17", "@wdio/protocols": "8.23.0", "@wdio/types": "8.24.0", @@ -1168,7 +1168,7 @@ "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", "recursive-readdir": "^2.2.3", - "webdriverio": "8.24.0", + "webdriverio": "8.24.1", "yargs": "^17.7.2" }, "bin": { @@ -1209,28 +1209,28 @@ } }, "node_modules/@wdio/globals": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.24.0.tgz", - "integrity": "sha512-hdYyY8fF8DU6Gr0dCyqaP8u4OMjUiRUPaphwbXgjcNfoe7Hc5eHxDIMGc5rWO6QSC1M6LwFzvCu/6DwE04iG7g==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.24.1.tgz", + "integrity": "sha512-r5JmeAZd9BiVwUesj8vTRPHybyEMAN/gkscVaawCXEWAm/+7pzLARv6e8PMrAayO4MkeviGBDYCm6d4+nYFOUQ==", "dev": true, "engines": { "node": "^16.13 || >=18" }, "optionalDependencies": { "expect-webdriverio": "^4.6.1", - "webdriverio": "8.24.0" + "webdriverio": "8.24.1" } }, "node_modules/@wdio/local-runner": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.24.0.tgz", - "integrity": "sha512-P8KVz5QdWKkRMI+WMVdC+m6YRXC36v44mQ+HCUR1XCLO3omTNU6frzLvc7eOKm0cr3vuS16sFAnce9qO4V6xnQ==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.24.1.tgz", + "integrity": "sha512-/KdUVZn7aY5l1SBWd+xiTKhuO/eSAoFgNDLOArbL98ED2TYDzCZ3QCTlebbMckHA4J4ZZW/Rvox75a9Ne6yRzw==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@wdio/logger": "8.16.17", "@wdio/repl": "8.23.1", - "@wdio/runner": "8.24.0", + "@wdio/runner": "8.24.1", "@wdio/types": "8.24.0", "async-exit-hook": "^2.0.1", "split2": "^4.1.0", @@ -1319,14 +1319,14 @@ } }, "node_modules/@wdio/runner": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.24.0.tgz", - "integrity": "sha512-TMlp9bXT6z9b8P8bvXitdAX/lZDrbqNLA0WH6nYokG8joDMQvMz2PaNz/4zbmcfWFfM1GhrUM8K2kOuxdUOTbQ==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.24.1.tgz", + "integrity": "sha512-IfbLFUM+/cZoEJCLPjesekQ9FjuH/+OnJPzDIcxEv4RLShZX8mQKmiUw/HNMlQlcOkeAzfTObzaT+f8Tt2ZYlQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@wdio/config": "8.24.0", - "@wdio/globals": "8.24.0", + "@wdio/globals": "8.24.1", "@wdio/logger": "8.16.17", "@wdio/types": "8.24.0", "@wdio/utils": "8.24.0", @@ -1334,7 +1334,7 @@ "expect-webdriverio": "^4.6.1", "gaze": "^1.1.2", "webdriver": "8.24.0", - "webdriverio": "8.24.0" + "webdriverio": "8.24.1" }, "engines": { "node": "^16.13 || >=18" @@ -8675,9 +8675,9 @@ } }, "node_modules/webdriverio": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.24.0.tgz", - "integrity": "sha512-TYzJ2cVk3kBG00yZGN5xYOKtOVhNnIx7ZQdIeY1WSdWxqVN9tdvCnxAiBgWQ9nBh7yXyMWc25XFv1zNwQh2+Dg==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.24.1.tgz", + "integrity": "sha512-NMu5Y0EFjx7GK4K8uDDi14q8IdHdSQiqzJoyGjuzGy8mj5c04Ta1hoLG5KPag5LzIQNOtJmqwbTFL5PLqragOg==", "dev": true, "dependencies": { "@types/node": "^20.1.0", diff --git a/tests/wdio/package.json b/tests/wdio/package.json index b051b1f3d..0b048885d 100644 --- a/tests/wdio/package.json +++ b/tests/wdio/package.json @@ -6,8 +6,8 @@ "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", - "@wdio/cli": "^8.24.0", - "@wdio/local-runner": "^8.24.0", + "@wdio/cli": "^8.24.1", + "@wdio/local-runner": "^8.24.1", "@wdio/mocha-framework": "^8.24.0", "@wdio/spec-reporter": "^8.24.0", "eslint": "^8.54.0",