@agents-at-scale/ark 0.1.67 → 0.1.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arkServices.js +22 -0
- package/dist/commands/export/index.js +133 -6
- package/dist/lib/arkApiClient.d.ts +6 -0
- package/dist/lib/arkApiClient.js +38 -35
- package/package.json +9 -6
- package/templates/mcp-server/Dockerfile +1 -1
- package/templates/tool/uv.lock +58 -61
package/dist/arkServices.js
CHANGED
|
@@ -158,6 +158,7 @@ const defaultArkServices = {
|
|
|
158
158
|
helmReleaseName: 'ark-broker',
|
|
159
159
|
description: 'In-memory storage service with streaming support for Ark queries',
|
|
160
160
|
enabled: true,
|
|
161
|
+
mandatory: true,
|
|
161
162
|
category: 'service',
|
|
162
163
|
chartPath: `${REGISTRY_BASE}/ark-broker:${CHART_VERSION}`,
|
|
163
164
|
installArgs: [],
|
|
@@ -202,6 +203,27 @@ const defaultArkServices = {
|
|
|
202
203
|
k8sServicePort: 8639,
|
|
203
204
|
k8sDeploymentName: 'noah-mcp',
|
|
204
205
|
},
|
|
206
|
+
'kubernetes-mcp-server': {
|
|
207
|
+
name: 'kubernetes-mcp-server',
|
|
208
|
+
helmReleaseName: 'kubernetes-mcp-server',
|
|
209
|
+
description: 'Read-only Kubernetes MCP server exposing cluster resources as tools',
|
|
210
|
+
enabled: true,
|
|
211
|
+
category: 'service',
|
|
212
|
+
chartPath: `${getMarketplaceRegistry()}/kubernetes-mcp-server`,
|
|
213
|
+
installArgs: [],
|
|
214
|
+
k8sServiceName: 'kubernetes-mcp-server',
|
|
215
|
+
k8sServicePort: 8080,
|
|
216
|
+
k8sDeploymentName: 'kubernetes-mcp-server',
|
|
217
|
+
},
|
|
218
|
+
'argo-make-author': {
|
|
219
|
+
name: 'argo-make-author',
|
|
220
|
+
helmReleaseName: 'argo-make-author',
|
|
221
|
+
description: 'Conversational Argo WorkflowTemplate authoring agent',
|
|
222
|
+
enabled: false,
|
|
223
|
+
category: 'service',
|
|
224
|
+
chartPath: `${getMarketplaceRegistry()}/argo-make-author`,
|
|
225
|
+
installArgs: [],
|
|
226
|
+
},
|
|
205
227
|
};
|
|
206
228
|
function applyConfigOverrides(defaults) {
|
|
207
229
|
const config = loadConfig();
|
|
@@ -3,6 +3,14 @@ import * as fs from 'fs/promises';
|
|
|
3
3
|
import yaml from 'yaml';
|
|
4
4
|
import { listResources } from '../../lib/kubectl.js';
|
|
5
5
|
import output from '../../lib/output.js';
|
|
6
|
+
// Argo workflow resources, in dependency order (cluster templates before the
|
|
7
|
+
// namespaced templates that may reference them). These live in Argo CRDs that
|
|
8
|
+
// may not be installed on the source cluster, so they are treated as optional.
|
|
9
|
+
const ARGO_RESOURCE_TYPES = [
|
|
10
|
+
'clusterworkflowtemplates',
|
|
11
|
+
'workflowtemplates',
|
|
12
|
+
'cronworkflows',
|
|
13
|
+
];
|
|
6
14
|
// resource types in dependency order so that they can be loaded correctly
|
|
7
15
|
// by default these will all be exported if not specified; can be overridden with defaultExportTypes in config
|
|
8
16
|
const RESOURCE_ORDER = [
|
|
@@ -13,7 +21,88 @@ const RESOURCE_ORDER = [
|
|
|
13
21
|
'teams',
|
|
14
22
|
'mcpservers',
|
|
15
23
|
'a2aservers',
|
|
24
|
+
...ARGO_RESOURCE_TYPES,
|
|
25
|
+
];
|
|
26
|
+
// resource types whose CRDs may be absent; a missing CRD is warned and skipped
|
|
27
|
+
// rather than failing the whole export
|
|
28
|
+
const OPTIONAL_RESOURCE_TYPES = new Set(ARGO_RESOURCE_TYPES);
|
|
29
|
+
// cluster-scoped types have no namespace to filter on, so a namespace-scoped
|
|
30
|
+
// export skips them rather than sweeping in cluster-wide resources shared across
|
|
31
|
+
// tenants; they are captured by a cluster-wide export (no --namespace)
|
|
32
|
+
const CLUSTER_SCOPED_TYPES = new Set(['clusterworkflowtemplates']);
|
|
33
|
+
const SERVER_MANAGED_METADATA_FIELDS = [
|
|
34
|
+
'resourceVersion',
|
|
35
|
+
'uid',
|
|
36
|
+
'generation',
|
|
37
|
+
'creationTimestamp',
|
|
38
|
+
'managedFields',
|
|
39
|
+
'selfLink',
|
|
40
|
+
'deletionTimestamp',
|
|
41
|
+
'deletionGracePeriodSeconds',
|
|
42
|
+
'ownerReferences',
|
|
43
|
+
'finalizers',
|
|
16
44
|
];
|
|
45
|
+
const LAST_APPLIED_ANNOTATION = 'kubectl.kubernetes.io/last-applied-configuration';
|
|
46
|
+
function isRecord(value) {
|
|
47
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
48
|
+
}
|
|
49
|
+
function errorText(error) {
|
|
50
|
+
const stderr = isRecord(error) && typeof error.stderr === 'string' ? error.stderr : '';
|
|
51
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
52
|
+
return `${stderr}\n${message}`;
|
|
53
|
+
}
|
|
54
|
+
function isResourceTypeNotFoundError(error) {
|
|
55
|
+
const combined = errorText(error);
|
|
56
|
+
return (combined.includes("doesn't have a resource type") ||
|
|
57
|
+
combined.includes('could not find the requested resource'));
|
|
58
|
+
}
|
|
59
|
+
function isForbiddenError(error) {
|
|
60
|
+
const combined = errorText(error);
|
|
61
|
+
return (combined.includes('(Forbidden)') || combined.includes('is forbidden:'));
|
|
62
|
+
}
|
|
63
|
+
function sanitizeResource(resource) {
|
|
64
|
+
const sanitized = { ...resource };
|
|
65
|
+
delete sanitized.status;
|
|
66
|
+
const metadata = { ...resource.metadata };
|
|
67
|
+
for (const field of SERVER_MANAGED_METADATA_FIELDS) {
|
|
68
|
+
delete metadata[field];
|
|
69
|
+
}
|
|
70
|
+
if (isRecord(metadata.annotations)) {
|
|
71
|
+
const annotations = { ...metadata.annotations };
|
|
72
|
+
delete annotations[LAST_APPLIED_ANNOTATION];
|
|
73
|
+
if (Object.keys(annotations).length === 0) {
|
|
74
|
+
delete metadata.annotations;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
metadata.annotations = annotations;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
sanitized.metadata = metadata;
|
|
81
|
+
return sanitized;
|
|
82
|
+
}
|
|
83
|
+
function isExcludedSecret(resource) {
|
|
84
|
+
const isHelmRelease = resource.type === 'helm.sh/release.v1' &&
|
|
85
|
+
resource.metadata.name.startsWith('sh.helm.release.v1.');
|
|
86
|
+
return (isHelmRelease || resource.type === 'kubernetes.io/service-account-token');
|
|
87
|
+
}
|
|
88
|
+
function hasOwnerReference(resource, ownerKind) {
|
|
89
|
+
return (Array.isArray(resource.metadata.ownerReferences) &&
|
|
90
|
+
resource.metadata.ownerReferences.some((ownerReference) => isRecord(ownerReference) && ownerReference.kind === ownerKind));
|
|
91
|
+
}
|
|
92
|
+
function isControllerManagedResource(resourceType, resource) {
|
|
93
|
+
const labels = isRecord(resource.metadata.labels)
|
|
94
|
+
? resource.metadata.labels
|
|
95
|
+
: {};
|
|
96
|
+
if (resourceType === 'tools') {
|
|
97
|
+
return (typeof labels['mcp/server'] === 'string' ||
|
|
98
|
+
hasOwnerReference(resource, 'MCPServer'));
|
|
99
|
+
}
|
|
100
|
+
if (resourceType === 'agents') {
|
|
101
|
+
return (typeof labels['a2a/server'] === 'string' ||
|
|
102
|
+
hasOwnerReference(resource, 'A2AServer'));
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
17
106
|
async function exportResources(options, config) {
|
|
18
107
|
try {
|
|
19
108
|
const allResourceTypes = config.defaultExportTypes || RESOURCE_ORDER;
|
|
@@ -28,23 +117,61 @@ async function exportResources(options, config) {
|
|
|
28
117
|
output.info(`exporting ark resources to ${outputPath}...`);
|
|
29
118
|
const allResources = [];
|
|
30
119
|
let allResourceCount = 0;
|
|
120
|
+
let excludedSecretCount = 0;
|
|
121
|
+
let excludedManagedResourceCount = 0;
|
|
31
122
|
for (const resourceType of resourceTypes) {
|
|
32
123
|
if (!RESOURCE_ORDER.includes(resourceType)) {
|
|
33
124
|
output.warning(`unknown resource type: ${resourceType}, skipping`);
|
|
34
125
|
continue;
|
|
35
126
|
}
|
|
127
|
+
if (options.namespace && CLUSTER_SCOPED_TYPES.has(resourceType)) {
|
|
128
|
+
output.info(`skipping cluster-scoped ${resourceType} for namespace-scoped export`);
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
36
131
|
output.info(`fetching ${resourceType}...`);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
132
|
+
let resources;
|
|
133
|
+
try {
|
|
134
|
+
resources = await listResources(resourceType, {
|
|
135
|
+
namespace: options.namespace,
|
|
136
|
+
labels: options.labels,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
if (OPTIONAL_RESOURCE_TYPES.has(resourceType)) {
|
|
141
|
+
if (isResourceTypeNotFoundError(error)) {
|
|
142
|
+
output.warning(`${resourceType} CRD not installed on this cluster, skipping`);
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (isForbiddenError(error)) {
|
|
146
|
+
output.warning(`not authorized to list ${resourceType}, skipping`);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
41
152
|
const resourceCount = resources.length;
|
|
42
153
|
if (resources.length > 0) {
|
|
43
154
|
output.success(`found ${resourceCount} ${resourceType}`);
|
|
44
|
-
|
|
45
|
-
|
|
155
|
+
let exportableResources = resourceType === 'secrets'
|
|
156
|
+
? resources.filter((resource) => !isExcludedSecret(resource))
|
|
157
|
+
: resources;
|
|
158
|
+
excludedSecretCount += resourceCount - exportableResources.length;
|
|
159
|
+
const resourceCountAfterSecretFiltering = exportableResources.length;
|
|
160
|
+
exportableResources = exportableResources.filter((resource) => !isControllerManagedResource(resourceType, resource));
|
|
161
|
+
excludedManagedResourceCount +=
|
|
162
|
+
resourceCountAfterSecretFiltering - exportableResources.length;
|
|
163
|
+
allResources.push(...exportableResources.map(sanitizeResource));
|
|
164
|
+
allResourceCount += exportableResources.length;
|
|
46
165
|
}
|
|
47
166
|
}
|
|
167
|
+
if (excludedSecretCount > 0) {
|
|
168
|
+
const secretLabel = excludedSecretCount === 1 ? 'secret' : 'secrets';
|
|
169
|
+
output.info(`excluded ${excludedSecretCount} system-managed ${secretLabel}`);
|
|
170
|
+
}
|
|
171
|
+
if (excludedManagedResourceCount > 0) {
|
|
172
|
+
const resourceLabel = excludedManagedResourceCount === 1 ? 'resource' : 'resources';
|
|
173
|
+
output.info(`excluded ${excludedManagedResourceCount} controller-managed ${resourceLabel}`);
|
|
174
|
+
}
|
|
48
175
|
if (allResourceCount === 0) {
|
|
49
176
|
output.warning('no resources found to export');
|
|
50
177
|
return;
|
|
@@ -40,6 +40,12 @@ export declare class ArkApiClient {
|
|
|
40
40
|
private baseUrl;
|
|
41
41
|
constructor(arkApiUrl: string);
|
|
42
42
|
getBaseUrl(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Fetch every page of a cursor-paginated ark-api list endpoint and return
|
|
45
|
+
* the concatenated items. Follows the `continue_token` returned by ark-api
|
|
46
|
+
* until the server reports the last page (`continue_token` null/absent).
|
|
47
|
+
*/
|
|
48
|
+
private fetchAllPages;
|
|
43
49
|
getQueryTargets(): Promise<QueryTarget[]>;
|
|
44
50
|
getAgents(): Promise<Agent[]>;
|
|
45
51
|
getModels(): Promise<Model[]>;
|
package/dist/lib/arkApiClient.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const PAGE_LIMIT = 100;
|
|
1
2
|
export class ArkApiClient {
|
|
2
3
|
baseUrl;
|
|
3
4
|
constructor(arkApiUrl) {
|
|
@@ -6,6 +7,31 @@ export class ArkApiClient {
|
|
|
6
7
|
getBaseUrl() {
|
|
7
8
|
return this.baseUrl;
|
|
8
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Fetch every page of a cursor-paginated ark-api list endpoint and return
|
|
12
|
+
* the concatenated items. Follows the `continue_token` returned by ark-api
|
|
13
|
+
* until the server reports the last page (`continue_token` null/absent).
|
|
14
|
+
*/
|
|
15
|
+
async fetchAllPages(path) {
|
|
16
|
+
const items = [];
|
|
17
|
+
let continueToken;
|
|
18
|
+
do {
|
|
19
|
+
const url = new URL(`${this.baseUrl}${path}`);
|
|
20
|
+
url.searchParams.set('limit', String(PAGE_LIMIT));
|
|
21
|
+
if (continueToken) {
|
|
22
|
+
url.searchParams.set('continue', continueToken);
|
|
23
|
+
}
|
|
24
|
+
const response = await fetch(url.toString());
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
27
|
+
}
|
|
28
|
+
const data = (await response.json());
|
|
29
|
+
if (data.items)
|
|
30
|
+
items.push(...data.items);
|
|
31
|
+
continueToken = data.continue_token;
|
|
32
|
+
} while (continueToken);
|
|
33
|
+
return items;
|
|
34
|
+
}
|
|
9
35
|
async getQueryTargets() {
|
|
10
36
|
try {
|
|
11
37
|
const targets = [];
|
|
@@ -17,17 +43,14 @@ export class ArkApiClient {
|
|
|
17
43
|
];
|
|
18
44
|
for (const ep of endpoints) {
|
|
19
45
|
try {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
description: item.description || item.name,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
46
|
+
const items = await this.fetchAllPages(ep.path);
|
|
47
|
+
for (const item of items) {
|
|
48
|
+
targets.push({
|
|
49
|
+
id: `${ep.type}/${item.name}`,
|
|
50
|
+
name: item.name,
|
|
51
|
+
type: ep.type,
|
|
52
|
+
description: item.description || item.name,
|
|
53
|
+
});
|
|
31
54
|
}
|
|
32
55
|
}
|
|
33
56
|
catch {
|
|
@@ -42,12 +65,7 @@ export class ArkApiClient {
|
|
|
42
65
|
}
|
|
43
66
|
async getAgents() {
|
|
44
67
|
try {
|
|
45
|
-
|
|
46
|
-
if (!response.ok) {
|
|
47
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
48
|
-
}
|
|
49
|
-
const data = (await response.json());
|
|
50
|
-
return data.items || [];
|
|
68
|
+
return await this.fetchAllPages('/v1/agents');
|
|
51
69
|
}
|
|
52
70
|
catch (error) {
|
|
53
71
|
throw new Error(`Failed to get agents: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
|
|
@@ -55,12 +73,7 @@ export class ArkApiClient {
|
|
|
55
73
|
}
|
|
56
74
|
async getModels() {
|
|
57
75
|
try {
|
|
58
|
-
|
|
59
|
-
if (!response.ok) {
|
|
60
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
61
|
-
}
|
|
62
|
-
const data = (await response.json());
|
|
63
|
-
return data.items || [];
|
|
76
|
+
return await this.fetchAllPages('/v1/models');
|
|
64
77
|
}
|
|
65
78
|
catch (error) {
|
|
66
79
|
throw new Error(`Failed to get models: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
|
|
@@ -68,12 +81,7 @@ export class ArkApiClient {
|
|
|
68
81
|
}
|
|
69
82
|
async getTools() {
|
|
70
83
|
try {
|
|
71
|
-
|
|
72
|
-
if (!response.ok) {
|
|
73
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
74
|
-
}
|
|
75
|
-
const data = (await response.json());
|
|
76
|
-
return data.items || [];
|
|
84
|
+
return await this.fetchAllPages('/v1/tools');
|
|
77
85
|
}
|
|
78
86
|
catch (error) {
|
|
79
87
|
throw new Error(`Failed to get tools: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
|
|
@@ -81,12 +89,7 @@ export class ArkApiClient {
|
|
|
81
89
|
}
|
|
82
90
|
async getTeams() {
|
|
83
91
|
try {
|
|
84
|
-
|
|
85
|
-
if (!response.ok) {
|
|
86
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
87
|
-
}
|
|
88
|
-
const data = (await response.json());
|
|
89
|
-
return data.items || [];
|
|
92
|
+
return await this.fetchAllPages('/v1/teams');
|
|
90
93
|
}
|
|
91
94
|
catch (error) {
|
|
92
95
|
throw new Error(`Failed to get teams: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agents-at-scale/ark",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.69",
|
|
4
4
|
"description": "Ark CLI - Interactive terminal interface for ARK agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@kubernetes/client-node": "^1.3.0",
|
|
46
46
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
47
|
-
"axios": "^1.
|
|
47
|
+
"axios": "^1.18.0",
|
|
48
48
|
"chalk": "^4.1.2",
|
|
49
49
|
"commander": "^12.1.0",
|
|
50
50
|
"debug": "^4.4.1",
|
|
@@ -85,17 +85,20 @@
|
|
|
85
85
|
"node": ">=18.0.0"
|
|
86
86
|
},
|
|
87
87
|
"overrides": {
|
|
88
|
-
"brace-expansion": ">=5.0.
|
|
88
|
+
"brace-expansion": ">=5.0.9",
|
|
89
|
+
"ip-address": "^10.3.1",
|
|
90
|
+
"js-yaml": "^4.3.1",
|
|
89
91
|
"minimatch": "^10.2.3",
|
|
90
92
|
"rollup": "4.59.0",
|
|
91
93
|
"hono": "^4.12.25",
|
|
92
|
-
"@hono/node-server": "^
|
|
94
|
+
"@hono/node-server": "^2.0.5",
|
|
93
95
|
"flatted": "^3.4.2",
|
|
94
96
|
"tar": "^7.5.11",
|
|
95
97
|
"express-rate-limit": "^8.3.0",
|
|
96
|
-
"fast-uri": "^
|
|
98
|
+
"fast-uri": "^4.1.4",
|
|
97
99
|
"ws": "^8.21.0",
|
|
98
100
|
"esbuild": "^0.28.1",
|
|
99
|
-
"form-data": "^4.0.6"
|
|
101
|
+
"form-data": "^4.0.6",
|
|
102
|
+
"postcss": "^8.5.18"
|
|
100
103
|
}
|
|
101
104
|
}
|
|
@@ -63,7 +63,7 @@ ENTRYPOINT [ "/bin/bash", "-c", "mcp-proxy --debug --port 8080 --host 0.0.0.0 --
|
|
|
63
63
|
{{- end }}
|
|
64
64
|
|
|
65
65
|
{{- else if eq .Values.technology "go" }}
|
|
66
|
-
FROM golang:1.26.
|
|
66
|
+
FROM golang:1.26.6-alpine AS go-builder
|
|
67
67
|
{{- if .Values.packageSource }}
|
|
68
68
|
{{- if eq .Values.packageSource "go-install" }}
|
|
69
69
|
RUN go install {{ .Values.packageName }}@latest
|
package/templates/tool/uv.lock
CHANGED
|
@@ -192,55 +192,52 @@ wheels = [
|
|
|
192
192
|
|
|
193
193
|
[[package]]
|
|
194
194
|
name = "cryptography"
|
|
195
|
-
version = "
|
|
195
|
+
version = "50.0.0"
|
|
196
196
|
source = { registry = "https://pypi.org/simple" }
|
|
197
197
|
dependencies = [
|
|
198
198
|
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
|
|
199
199
|
]
|
|
200
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
201
|
-
wheels = [
|
|
202
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
203
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
204
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
205
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
206
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
207
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
208
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
209
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
210
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
211
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
212
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
213
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
214
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
215
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
216
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
217
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
218
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
219
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
220
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
221
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
222
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
223
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
224
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
225
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
226
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
227
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
228
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
229
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
230
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
231
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
232
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
233
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
234
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
235
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
236
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
237
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
238
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
239
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
240
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
241
|
-
{ url = "https://files.pythonhosted.org/packages/52/41/04cb5eb17085ade6f50cc611fb657df6a0f5885350de8764ece89c050197/cryptography-48.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:86fe77abb1bd87afb251d4d02ada7ecf53a32cee9b67d976abb2e45a13297475", size = 4964539, upload-time = "2026-06-09T22:31:18.793Z" },
|
|
242
|
-
{ url = "https://files.pythonhosted.org/packages/36/bf/ed70785c496e89d7e73b7cda2d21f2447fd6d4e821714b8d04ff217fed92/cryptography-48.0.1-cp39-abi3-win32.whl", hash = "sha256:6b2c0c3e6ccf3ade7750f836ef3ee36eea250cc467d45c256895573ac08cc6f1", size = 3282307, upload-time = "2026-06-09T22:30:53.162Z" },
|
|
243
|
-
{ url = "https://files.pythonhosted.org/packages/b3/ff/371ea7d252656ee1eb6d83eeeef3d1d0c6baf1d6497687d081ea03814670/cryptography-48.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:9a49ca6c81417f6a5edb50375a60cccdd70fa0a91a5211829dbea74eba94d2ac", size = 3793408, upload-time = "2026-06-09T22:32:15.191Z" },
|
|
200
|
+
sdist = { url = "https://files.pythonhosted.org/packages/de/41/6cbdcf9142d00fe82836fbb51e503e58088575cf7a0fe1dbff6695bf0840/cryptography-50.0.0.tar.gz", hash = "sha256:eeac2acb5a20ed25e0ad6d1df9891a520b78b404266b6d11778f25d5d691a6c9", size = 880201, upload-time = "2026-07-31T14:25:10.11Z" }
|
|
201
|
+
wheels = [
|
|
202
|
+
{ url = "https://files.pythonhosted.org/packages/c5/5c/59086b4aac5e879d38ddbcf74e4be7ade89cebc3eb199a55da998c3bb46a/cryptography-50.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:031e2d5dd4bb9caa3ca9c82e5a197fd8ae680232cee62603d1a813f3f07e3d03", size = 4001252, upload-time = "2026-07-31T14:23:33.331Z" },
|
|
203
|
+
{ url = "https://files.pythonhosted.org/packages/57/ef/8f2df13c7216bcad3e1c74e07f6e193d93e998e114f524a53877c9af27ad/cryptography-50.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd9192b7b70c573d7f214eb1ae35e00d359f6f5e4b27c7e21e30de1fc6204645", size = 4719554, upload-time = "2026-07-31T14:23:35.611Z" },
|
|
204
|
+
{ url = "https://files.pythonhosted.org/packages/d9/41/029086c34d91052fc3b88bcc8056f709a7c915c7a23b235a54eb800b1c97/cryptography-50.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:06a32a980526a6ab9a4b9bf8f7385800791e2bb960903cb6b530e4817509a3b7", size = 4702130, upload-time = "2026-07-31T14:23:37.635Z" },
|
|
205
|
+
{ url = "https://files.pythonhosted.org/packages/7d/ff/b6ce0954962e7f7b969f850a883744197bb3910bdfd7b6da162eab7d9f68/cryptography-50.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:a1b30560f2acc95aa8b2e06e716a13dbfc97314747b80d9707e307f77b40d6b3", size = 4725244, upload-time = "2026-07-31T14:23:39.471Z" },
|
|
206
|
+
{ url = "https://files.pythonhosted.org/packages/06/1e/63a1027cb7fec360a182208e1b7767d5aa1fe57be3d6aa856e69a321edc0/cryptography-50.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:8d89f3976b10b4ce31118de72329025f70d2c6ead14a8217c5514dd2c6d5a78f", size = 5342265, upload-time = "2026-07-31T14:23:41.286Z" },
|
|
207
|
+
{ url = "https://files.pythonhosted.org/packages/6b/72/a1116d683a6d7ece94590013882515de087edf9ef0e6292aae615a44df73/cryptography-50.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b42a28c1844fd9de8f3f7d540e36b66f3a9c83fceac7170ebc7a6a19edd9dcae", size = 4734609, upload-time = "2026-07-31T14:23:43.139Z" },
|
|
208
|
+
{ url = "https://files.pythonhosted.org/packages/15/37/36a9c479bbe49acea2636c7fd3360d20f7b7e079c300352011c44850b181/cryptography-50.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:900131fafd8aead39ac7dd3a7e833be754c17a95cfd91221636949fe4eb0aa8a", size = 4356517, upload-time = "2026-07-31T14:23:44.939Z" },
|
|
209
|
+
{ url = "https://files.pythonhosted.org/packages/32/98/8a151d64367204cbc63ec65d37502f1d9c53cf4bfc6ec3c532614dbec60d/cryptography-50.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:07949c449a1abcf60d1ee6e88956d89404c7df3c8258f46589e912988e551987", size = 4724529, upload-time = "2026-07-31T14:23:46.93Z" },
|
|
210
|
+
{ url = "https://files.pythonhosted.org/packages/22/f6/ec13b470172126464a86bf54d2294a46d29837fc51ba3e45d4047946fb5e/cryptography-50.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:f89831ef99dd7dd169ab06d63a831adb9e20a87aac6d380266bbda5823349169", size = 5299852, upload-time = "2026-07-31T14:23:48.851Z" },
|
|
211
|
+
{ url = "https://files.pythonhosted.org/packages/da/3a/f05e32c99d440c9bb891ea0e36c9091891e36be5a9a87ab2ee6ea20729f6/cryptography-50.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:82148ec5bddac30b51a5b3c1945075f896fa022cb93f8e4a01e9f6ee95292c5f", size = 4734462, upload-time = "2026-07-31T14:23:50.861Z" },
|
|
212
|
+
{ url = "https://files.pythonhosted.org/packages/ca/dc/bd72b26be8953f80625f63151efd38eee71c76ca6cf591c08ff34615a79e/cryptography-50.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1489e263a8048bb8b6a8bac662eb2d402ea5d2b7b4699b72f385f1e2772db105", size = 4852708, upload-time = "2026-07-31T14:23:52.715Z" },
|
|
213
|
+
{ url = "https://files.pythonhosted.org/packages/27/20/c930314a2ab476d15dec966ec87e2e9637bb02b06106b12c0396c57bb603/cryptography-50.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7cec5b856506da6defb290f30c9ee687d5f5e8cb0bd3f6459dde43b0b4fa40ef", size = 5004179, upload-time = "2026-07-31T14:23:54.887Z" },
|
|
214
|
+
{ url = "https://files.pythonhosted.org/packages/32/2e/c9db68a0c4bfa28e310707527c0ee3a2bd254104d2e02e68f368e197aa4c/cryptography-50.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:bd1c592e4d5974f0d08d4888e432157adba757c66da0246918e43677fafa2d30", size = 3840395, upload-time = "2026-07-31T14:23:56.677Z" },
|
|
215
|
+
{ url = "https://files.pythonhosted.org/packages/c3/fb/951032a3bf22a5697c83183fb6294a4843772947a70e616c57b3ff5f522e/cryptography-50.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:49e7d93abdbd2990caced757e5fade25302f719c3c8fb6e6fff2dde98999fc41", size = 3989258, upload-time = "2026-07-31T14:23:58.881Z" },
|
|
216
|
+
{ url = "https://files.pythonhosted.org/packages/d4/67/91eb047e69c5e845f2f14b8a2e4a1aab0f283cb885531e9e22c8adb176bc/cryptography-50.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:19736989797678c6af1e55cd49055cdbcb55d8f6b5583ac5335f933aba9101dc", size = 4700648, upload-time = "2026-07-31T14:24:00.702Z" },
|
|
217
|
+
{ url = "https://files.pythonhosted.org/packages/30/82/85f0f7425c856b9f96459411eb12e74ef72df9caf6f8f15bf23a33ff131f/cryptography-50.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:80b63928fa35083b33966ce1efb70e5b9607181e49dcd1c22c8c005e319f667f", size = 4682442, upload-time = "2026-07-31T14:24:02.538Z" },
|
|
218
|
+
{ url = "https://files.pythonhosted.org/packages/1a/28/b555a365adff1cca2fbe7b9e487d68a40de6bc67ff2cb587473eb43de0e7/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:d58c3db7cd6eed54e6c06744db55456b65ebd7492ddeae9c1e93cfca7aa857d3", size = 4707596, upload-time = "2026-07-31T14:24:04.394Z" },
|
|
219
|
+
{ url = "https://files.pythonhosted.org/packages/72/d8/f52538140cc719df62a01cf87d1c7142318d235817109d6f4054d7c352d6/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:df2a58a472f332225671c35b0a830208b86d004f82baa8530fa3782c85646533", size = 5314552, upload-time = "2026-07-31T14:24:06.31Z" },
|
|
220
|
+
{ url = "https://files.pythonhosted.org/packages/38/14/6120e5bd7c5aa022ad15424ba4d5c5269d0d9448ed4d55e492ea91e3c1c4/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:11b74db56cdbe3cdee6e3f6982ecb70334fa10dce99ed58bf7894aaaa3b2a037", size = 4717113, upload-time = "2026-07-31T14:24:08.349Z" },
|
|
221
|
+
{ url = "https://files.pythonhosted.org/packages/fa/71/190bf38c3ee2e0f8efc9860ae100c9df4169742eef274b91e7aa1cb133b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:f59e38625469987d7ef6d495323c55e7db6c212eaf6112267e0d3b565a2e9c9f", size = 4338580, upload-time = "2026-07-31T14:24:10.227Z" },
|
|
222
|
+
{ url = "https://files.pythonhosted.org/packages/3a/63/504ccfbbe61fd8aa983f7f146399cdf034c72c2fc55f5b2dfdcdcdb20c99/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ecfed7367f965a0328cfbdd70da860f15441f002f613185668c6e6ebf5a0ac11", size = 4707038, upload-time = "2026-07-31T14:24:12.169Z" },
|
|
223
|
+
{ url = "https://files.pythonhosted.org/packages/01/77/2cf79bbfc4d12ca106437a6e170d6aaa01a373e93093118aaaef0e801bd4/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:9aa87839c383bdbab6ef865787a1fb877af8dd03464c4400322726feaaadfc6d", size = 5273110, upload-time = "2026-07-31T14:24:14.38Z" },
|
|
224
|
+
{ url = "https://files.pythonhosted.org/packages/e5/45/8aae2972c520145377ea3559a605a899bebe227bf070b33cdb445929a9b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:6ba6a53445bd3cfa809ef3ef5f1589aa6ba08784a1d962bf47d0940e871dab1c", size = 4716439, upload-time = "2026-07-31T14:24:16.415Z" },
|
|
225
|
+
{ url = "https://files.pythonhosted.org/packages/7b/20/4fe50b619a48c2525cc46e2dbc1ac490708d704be5d467bdaac6dc955682/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3f5735ffe4996d28b809371756219f5354864902a3b9e7c0b9ee87041209fc9c", size = 4837383, upload-time = "2026-07-31T14:24:18.553Z" },
|
|
226
|
+
{ url = "https://files.pythonhosted.org/packages/92/91/3a31366e183343d3703f8995c095f5734676bd6938118047e50fcf279eb4/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:1b4a266766514614f8aa60416e71f2fc6e575d36e7bdc90f644fadb2f4b75b95", size = 4985772, upload-time = "2026-07-31T14:24:20.385Z" },
|
|
227
|
+
{ url = "https://files.pythonhosted.org/packages/74/9a/02ffe35b2853d121689871eb5dce862092562b3a1ed5cc98f1aaed441506/cryptography-50.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:12b9c6996425c76ea6c457ace4f3073e715b8c545add07cd1a8f3a4f90691269", size = 3816291, upload-time = "2026-07-31T14:24:22.125Z" },
|
|
228
|
+
{ url = "https://files.pythonhosted.org/packages/03/37/73d005be173aff344af30e9fd2a576575cb2391a7101d9cd3842e1fa8cce/cryptography-50.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ccdc4a71a4dabae05de219404f9f4abc38e3b58422177ff93d0da05967dafa07", size = 4036009, upload-time = "2026-07-31T14:24:24.122Z" },
|
|
229
|
+
{ url = "https://files.pythonhosted.org/packages/ff/c6/7a6202a534e32103a285b7834a120869557fe198d51d7cfe59754c8bda9c/cryptography-50.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:910e1d2668e7de9648f2bcee30e180db2a6b15c30f887d7c4c93ddf96e3992e3", size = 4745252, upload-time = "2026-07-31T14:24:26.118Z" },
|
|
230
|
+
{ url = "https://files.pythonhosted.org/packages/85/4f/0fa8c2f4428198f15d9ff8d63400e27afbf94ce833f6108da1eb3753f945/cryptography-50.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a91296cb61e8df6f86d0c19cc4068228da256bf59bf86049fbd821084565327f", size = 4728939, upload-time = "2026-07-31T14:24:27.994Z" },
|
|
231
|
+
{ url = "https://files.pythonhosted.org/packages/d1/63/54dd723490ba2dc09b299682c10b38db38f159728bcaae8c591b8af2f22d/cryptography-50.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e722f16708d854fe924790e051061f6704a472c3bac347b6fd88033ea8dd0dc5", size = 4748483, upload-time = "2026-07-31T14:24:30.254Z" },
|
|
232
|
+
{ url = "https://files.pythonhosted.org/packages/1d/dd/7c77d26285cc7f6991efce64a0f5b4f9383bfa5dd8c5033003eaf7db4cdb/cryptography-50.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:d764dcf130c428ef66786f866dd750f53182bc608813489915e9fc106bb0c82f", size = 5367599, upload-time = "2026-07-31T14:24:32.457Z" },
|
|
233
|
+
{ url = "https://files.pythonhosted.org/packages/46/c9/f60aed34c013f317f92817b6c171c2d22a78270fa41109bd4b08af26b194/cryptography-50.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:105110f43a471dbd0060b9c9516cb8a6a79233631a04cc2ba16f28323ac6e025", size = 4762647, upload-time = "2026-07-31T14:24:34.599Z" },
|
|
234
|
+
{ url = "https://files.pythonhosted.org/packages/be/f3/f9a0173b139372c3a48ed98154b45cc6b9de17c789d5ab552e621c293609/cryptography-50.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:828743d939e9629bc267b8e2d08d8bb67cd4319c771a33d4b18b22dd8fb7440a", size = 4385197, upload-time = "2026-07-31T14:24:36.647Z" },
|
|
235
|
+
{ url = "https://files.pythonhosted.org/packages/d8/36/83bb81f6e569bc38e1e4a7bc80f29b46bb9601920bc455fc8e888f5d5742/cryptography-50.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2a8183b489dc1f7f80f135780fadc1108f14b31b8a40411c7a5b17425f65f28b", size = 4748095, upload-time = "2026-07-31T14:24:39.493Z" },
|
|
236
|
+
{ url = "https://files.pythonhosted.org/packages/6b/16/d3008eff98c764979865834c3d386d4fd041b5f52e7f34fc29ac1a5eb515/cryptography-50.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6e7d61120573a7f2cd94cc095f9e81f6967c61ccdf194285aa143ecec8e0b708", size = 5325948, upload-time = "2026-07-31T14:24:41.556Z" },
|
|
237
|
+
{ url = "https://files.pythonhosted.org/packages/9c/f8/d97f9603efda3888187bfdb893f26c41be4735c10631d05d284ee6b047c4/cryptography-50.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:37fdb0d0111f1e2ff07139dfb79f1b49531f8e213c46f1163dd7642979b58c47", size = 4762400, upload-time = "2026-07-31T14:24:43.636Z" },
|
|
238
|
+
{ url = "https://files.pythonhosted.org/packages/64/a2/4615c8f7d81a00b1d6e6afe19f694e1543582349fb5f4076f6cb5dc36485/cryptography-50.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87f62a3d3b9888ed0fdde100ec06aa61ca9cd44bad9057d1dff9a516b5f5bb9", size = 4878208, upload-time = "2026-07-31T14:24:45.522Z" },
|
|
239
|
+
{ url = "https://files.pythonhosted.org/packages/d2/1a/efcfb02f91407149a0dacffffab791f7e19bf6385f63b3666dc8b5e5c9c8/cryptography-50.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:65c2c3add92b45fd0709db8594536aea39c2a67af0e27ffcf049c498501140b7", size = 5037050, upload-time = "2026-07-31T14:24:47.697Z" },
|
|
240
|
+
{ url = "https://files.pythonhosted.org/packages/57/30/4a22984d4f1bdfb8c054f07a92bc176b97a3134cc1d6c4b3bffb1f3688b4/cryptography-50.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:d24fead1d4d076e1bfb006dcec392074a3cd8d7b4fc8a595aa64073b2b7a96ba", size = 3874135, upload-time = "2026-07-31T14:24:50.085Z" },
|
|
244
241
|
]
|
|
245
242
|
|
|
246
243
|
[[package]]
|
|
@@ -672,10 +669,10 @@ resolution-markers = [
|
|
|
672
669
|
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
673
670
|
]
|
|
674
671
|
dependencies = [
|
|
675
|
-
{ name = "annotated-types"
|
|
676
|
-
{ name = "pydantic-core", version = "2.33.2", source = { registry = "https://pypi.org/simple" }
|
|
677
|
-
{ name = "typing-extensions"
|
|
678
|
-
{ name = "typing-inspection", version = "0.4.1", source = { registry = "https://pypi.org/simple" }
|
|
672
|
+
{ name = "annotated-types" },
|
|
673
|
+
{ name = "pydantic-core", version = "2.33.2", source = { registry = "https://pypi.org/simple" } },
|
|
674
|
+
{ name = "typing-extensions" },
|
|
675
|
+
{ name = "typing-inspection", version = "0.4.1", source = { registry = "https://pypi.org/simple" } },
|
|
679
676
|
]
|
|
680
677
|
sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" }
|
|
681
678
|
wheels = [
|
|
@@ -684,7 +681,7 @@ wheels = [
|
|
|
684
681
|
|
|
685
682
|
[package.optional-dependencies]
|
|
686
683
|
email = [
|
|
687
|
-
{ name = "email-validator"
|
|
684
|
+
{ name = "email-validator" },
|
|
688
685
|
]
|
|
689
686
|
|
|
690
687
|
[[package]]
|
|
@@ -696,10 +693,10 @@ resolution-markers = [
|
|
|
696
693
|
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
697
694
|
]
|
|
698
695
|
dependencies = [
|
|
699
|
-
{ name = "annotated-types"
|
|
700
|
-
{ name = "pydantic-core", version = "2.46.4", source = { registry = "https://pypi.org/simple" }
|
|
701
|
-
{ name = "typing-extensions"
|
|
702
|
-
{ name = "typing-inspection", version = "0.4.2", source = { registry = "https://pypi.org/simple" }
|
|
696
|
+
{ name = "annotated-types" },
|
|
697
|
+
{ name = "pydantic-core", version = "2.46.4", source = { registry = "https://pypi.org/simple" } },
|
|
698
|
+
{ name = "typing-extensions" },
|
|
699
|
+
{ name = "typing-inspection", version = "0.4.2", source = { registry = "https://pypi.org/simple" } },
|
|
703
700
|
]
|
|
704
701
|
sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" }
|
|
705
702
|
wheels = [
|
|
@@ -708,7 +705,7 @@ wheels = [
|
|
|
708
705
|
|
|
709
706
|
[package.optional-dependencies]
|
|
710
707
|
email = [
|
|
711
|
-
{ name = "email-validator"
|
|
708
|
+
{ name = "email-validator" },
|
|
712
709
|
]
|
|
713
710
|
|
|
714
711
|
[[package]]
|
|
@@ -720,7 +717,7 @@ resolution-markers = [
|
|
|
720
717
|
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
721
718
|
]
|
|
722
719
|
dependencies = [
|
|
723
|
-
{ name = "typing-extensions"
|
|
720
|
+
{ name = "typing-extensions" },
|
|
724
721
|
]
|
|
725
722
|
sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" }
|
|
726
723
|
wheels = [
|
|
@@ -766,7 +763,7 @@ resolution-markers = [
|
|
|
766
763
|
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
767
764
|
]
|
|
768
765
|
dependencies = [
|
|
769
|
-
{ name = "typing-extensions"
|
|
766
|
+
{ name = "typing-extensions" },
|
|
770
767
|
]
|
|
771
768
|
sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" }
|
|
772
769
|
wheels = [
|
|
@@ -1099,8 +1096,8 @@ name = "secretstorage"
|
|
|
1099
1096
|
version = "3.5.0"
|
|
1100
1097
|
source = { registry = "https://pypi.org/simple" }
|
|
1101
1098
|
dependencies = [
|
|
1102
|
-
{ name = "cryptography"
|
|
1103
|
-
{ name = "jeepney"
|
|
1099
|
+
{ name = "cryptography" },
|
|
1100
|
+
{ name = "jeepney" },
|
|
1104
1101
|
]
|
|
1105
1102
|
sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" }
|
|
1106
1103
|
wheels = [
|
|
@@ -1170,7 +1167,7 @@ resolution-markers = [
|
|
|
1170
1167
|
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
1171
1168
|
]
|
|
1172
1169
|
dependencies = [
|
|
1173
|
-
{ name = "typing-extensions"
|
|
1170
|
+
{ name = "typing-extensions" },
|
|
1174
1171
|
]
|
|
1175
1172
|
sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" }
|
|
1176
1173
|
wheels = [
|
|
@@ -1186,7 +1183,7 @@ resolution-markers = [
|
|
|
1186
1183
|
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
1187
1184
|
]
|
|
1188
1185
|
dependencies = [
|
|
1189
|
-
{ name = "typing-extensions"
|
|
1186
|
+
{ name = "typing-extensions" },
|
|
1190
1187
|
]
|
|
1191
1188
|
sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" }
|
|
1192
1189
|
wheels = [
|