diff --git a/eng/emitter-package-lock.json b/eng/emitter-package-lock.json index e91499954ff5..9d9c807fba8a 100644 --- a/eng/emitter-package-lock.json +++ b/eng/emitter-package-lock.json @@ -1,21 +1,19 @@ { - "name": "dist/src/index.js", + "name": "emitter-consumer", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "dist/src/index.js", "dependencies": { - "@azure-tools/typespec-python": "0.56.1" + "@azure-tools/typespec-python": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest@local/npm/registry/@azure-tools/typespec-python/-/typespec-python-0.56.1-alpha.20260101.1.tgz" }, "devDependencies": { - "@azure-tools/typespec-autorest": "~0.63.1", + "@azure-tools/typespec-autorest": "~0.63.0", "@azure-tools/typespec-azure-core": "~0.63.0", "@azure-tools/typespec-azure-resource-manager": "~0.63.0", "@azure-tools/typespec-azure-rulesets": "~0.63.0", "@azure-tools/typespec-client-generator-core": "~0.63.1", - "@azure-tools/typespec-liftr-base": "0.11.0", - "@typespec/compiler": "^1.7.1", + "@typespec/compiler": "^1.7.0", "@typespec/events": "~0.77.0", "@typespec/http": "^1.7.0", "@typespec/openapi": "^1.7.0", @@ -30,6 +28,7 @@ "version": "0.63.1", "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.63.1.tgz", "integrity": "sha512-Nem51jk2eURxa5PPEEUjdguxAEwNIyxTi3ac/GOo/B3SgwIa3WAOpwWqQPyGLPD2hHRKa2pm9FsPu6aLPmgeCQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -55,6 +54,7 @@ "version": "0.63.0", "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.63.0.tgz", "integrity": "sha512-FbEmpZSQENzBt/Y8qSF1b98T8CqT3bV7IRV8AGGm/73NQZiWQCm2LvQzR0/lbqGntS2EnSBrt394Kt69wM4ifA==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -69,6 +69,7 @@ "version": "0.63.0", "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.63.0.tgz", "integrity": "sha512-QXHryXgV9Rh7lBW9hrehjdGVM/W8eBN6wnfRRZtAAyfTc1AkRGDKOMFBtRtfbEkQpur16mgQTd7EyH2tpqfuSw==", + "dev": true, "license": "MIT", "dependencies": { "change-case": "~5.4.4", @@ -90,6 +91,7 @@ "version": "0.63.0", "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.63.0.tgz", "integrity": "sha512-oZSderD/MVnPH+W8hh3rsta1uF9xVLp9b2jjyhiHL9lqYGnHUYk8sDti5PUk/LXIz8QAsBMSbXJMDgxTeND8Kg==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -102,9 +104,10 @@ } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.63.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.63.1.tgz", - "integrity": "sha512-/LMrPVKrzPRBicjVSz+zqC/EBysqbIKgjfoAxMDXa4nmJchzxls+hgvprAZsCAJy5uEeshOn7WdNT/aQkBQRXw==", + "version": "0.63.3", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.63.3.tgz", + "integrity": "sha512-+ZSajpbwjZgMztgYgszFWzLrhOzjWNW7VEQjWvc7mMBtsF0fDTvB0gGfQlJ81CBM9yudPBW0JpwYrO26NXXk8g==", + "dev": true, "license": "MIT", "dependencies": { "change-case": "~5.4.4", @@ -127,20 +130,14 @@ "@typespec/xml": "^0.77.0" } }, - "node_modules/@azure-tools/typespec-liftr-base": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-liftr-base/-/typespec-liftr-base-0.11.0.tgz", - "integrity": "sha512-XwHRt6GnmTT51iHHUxyFPts6LnhOE+IkANCkh3lhnDdZjHgr5asA3+NXI8UXHbKmAOLReb+eov8tBoN93aS0Ww==", - "dev": true - }, "node_modules/@azure-tools/typespec-python": { - "version": "0.56.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-python/-/typespec-python-0.56.1.tgz", - "integrity": "sha512-KN4MxL7CFBcfCgpWGKhAyJxE/BG3YGv4Ik0xcT7ya/g0M+/Rj8pHHUX7amJoie63fhNyDOIUM0c22sviCrouQg==", + "version": "0.56.1-alpha.20260101.1", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest@local/npm/registry/@azure-tools/typespec-python/-/typespec-python-0.56.1-alpha.20260101.1.tgz", + "integrity": "sha512-lMYsb7TQBquFzfHNGwGCUTYsrXu4i7SGsu64b1qk7nb5xnV0+oiGIQmVMtlrNO6qC3+zeonb4ENBZh3M6GALkg==", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@typespec/http-client-python": "~0.23.1", + "@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTcwMjE1Ny9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.23.1.tgz", "fs-extra": "~11.2.0", "js-yaml": "~4.1.0", "semver": "~7.6.2", @@ -154,7 +151,7 @@ "@azure-tools/typespec-azure-core": ">=0.63.0 <1.0.0", "@azure-tools/typespec-azure-resource-manager": ">=0.63.0 <1.0.0", "@azure-tools/typespec-azure-rulesets": ">=0.63.0 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.63.0 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.63.1 <1.0.0", "@typespec/compiler": "^1.7.0", "@typespec/events": ">=0.77.0 <1.0.0", "@typespec/http": "^1.7.0", @@ -170,6 +167,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", @@ -184,6 +182,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -609,6 +608,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.2.tgz", "integrity": "sha512-SYLX05PwJVnW+WVegZt1T4Ip1qba1ik+pNJPDiqvk6zS5Y/i8PhRzLpGEtVd7sW0G8cMtkD8t4AZYhQwm8vnww==", + "dev": true, "license": "MIT", "engines": { "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" @@ -618,6 +618,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.0.3.tgz", "integrity": "sha512-xtQP2eXMFlOcAhZ4ReKP2KZvDIBb1AnCfZ81wWXG3DXLVH0f0g4obE0XDPH+ukAEMRcZT0kdX2AS1jrWGXbpxw==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.2", @@ -641,6 +642,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.3.tgz", "integrity": "sha512-lyEvibDFL+NA5R4xl8FUmNhmu81B+LDL9L/MpKkZlQDJZXzG8InxiqYxiAlQYa9cqLLhYqKLQwZqXmSTqCLjyw==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/core": "^11.1.0", @@ -662,6 +664,7 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.0.tgz", "integrity": "sha512-+jD/34T1pK8M5QmZD/ENhOfXdl9Zr+BrQAUc5h2anWgi7gggRq15ZbiBeLoObj0TLbdgW7TAIQRU2boMc9uOKQ==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.2", @@ -688,6 +691,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.3.tgz", "integrity": "sha512-wYyQo96TsAqIciP/r5D3cFeV8h4WqKQ/YOvTg5yOfP2sqEbVVpbxPpfV3LM5D0EP4zUI3EZVHyIUIllnoIa8OQ==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/core": "^11.1.0", @@ -710,6 +714,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.3.tgz", "integrity": "sha512-2oINvuL27ujjxd95f6K2K909uZOU2x1WiAl7Wb1X/xOtL8CgQ1kSxzykIr7u4xTkXkXOAkCuF45T588/YKee7w==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/core": "^11.1.0", @@ -731,6 +736,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-2.0.2.tgz", "integrity": "sha512-X/fMXK7vXomRWEex1j8mnj7s1mpnTeP4CO/h2gysJhHLT2WjBnLv4ZQEGpm/kcYI8QfLZ2fgW+9kTKD+jeopLg==", + "dev": true, "license": "MIT", "dependencies": { "chardet": "^2.1.1", @@ -752,6 +758,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.2.tgz", "integrity": "sha512-qXm6EVvQx/FmnSrCWCIGtMHwqeLgxABP8XgcaAoywsL0NFga9gD5kfG0gXiv80GjK9Hsoz4pgGwF/+CjygyV9A==", + "dev": true, "license": "MIT", "engines": { "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" @@ -761,6 +768,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.3.tgz", "integrity": "sha512-4R0TdWl53dtp79Vs6Df2OHAtA2FVNqya1hND1f5wjHWxZJxwDMSNB1X5ADZJSsQKYAJ5JHCTO+GpJZ42mK0Otw==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/core": "^11.1.0", @@ -782,6 +790,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.3.tgz", "integrity": "sha512-TjQLe93GGo5snRlu83JxE38ZPqj5ZVggL+QqqAF2oBA5JOJoxx25GG3EGH/XN/Os5WOmKfO8iLVdCXQxXRZIMQ==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/core": "^11.1.0", @@ -803,6 +812,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.3.tgz", "integrity": "sha512-rCozGbUMAHedTeYWEN8sgZH4lRCdgG/WinFkit6ZPsp8JaNg2T0g3QslPBS5XbpORyKP/I+xyBO81kFEvhBmjA==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.2", @@ -825,6 +835,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.1.0.tgz", "integrity": "sha512-LsZMdKcmRNF5LyTRuZE5nWeOjganzmN3zwbtNfcs6GPh3I2TsTtF1UYZlbxVfhxd+EuUqLGs/Lm3Xt4v6Az1wA==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/checkbox": "^5.0.3", @@ -854,6 +865,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.1.0.tgz", "integrity": "sha512-yUCuVh0jW026Gr2tZlG3kHignxcrLKDR3KBp+eUgNz+BAdSeZk0e18yt2gyBr+giYhj/WSIHCmPDOgp1mT2niQ==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/core": "^11.1.0", @@ -875,6 +887,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.0.3.tgz", "integrity": "sha512-lzqVw0YwuKYetk5VwJ81Ba+dyVlhseHPx9YnRKQgwXdFS0kEavCz2gngnNhnMIxg8+j1N/rUl1t5s1npwa7bqg==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/core": "^11.1.0", @@ -897,6 +910,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.0.3.tgz", "integrity": "sha512-M+ynbwS0ecQFDYMFrQrybA0qL8DV0snpc4kKevCCNaTpfghsRowRY7SlQBeIYNzHqXtiiz4RG9vTOeb/udew7w==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.2", @@ -920,6 +934,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.2.tgz", "integrity": "sha512-cae7mzluplsjSdgFA6ACLygb5jC8alO0UUnFPyu0E7tNRPrL+q/f8VcSXp+cjZQ7l5CMpDpi2G1+IQvkOiL1Lw==", + "dev": true, "license": "MIT", "engines": { "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" @@ -937,6 +952,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.0.4" @@ -949,6 +965,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -962,6 +979,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -971,6 +989,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -984,6 +1003,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -996,6 +1016,7 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.7.1.tgz", "integrity": "sha512-sb3MEsKjFlAx8ZG484exs5Ec+JwmYf2anJqLjMusrV3rRMUhv3fbEulk9MD+l4eOkBS46VMNGqRu0wTn8suVVA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "~7.27.1", @@ -1028,6 +1049,7 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -1040,6 +1062,7 @@ "version": "0.77.0", "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.77.0.tgz", "integrity": "sha512-NbOzi7axEt/xGgXaLjcGGV2HjQKNFjbvsQpCeDA6loUghZDK5+5ik/jwMumeUDunoBsAKF78ZxVF5qhQh56dGA==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -1052,6 +1075,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.7.0.tgz", "integrity": "sha512-4cGkcMiob3bedWbFkRcq614TDH7WPEI3YMgrg44mBarj903arpEniAESIhNUbLQzQFFc5rOJagexQDl4agVDyA==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -1068,8 +1092,7 @@ }, "node_modules/@typespec/http-client-python": { "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@typespec/http-client-python/-/http-client-python-0.23.1.tgz", - "integrity": "sha512-vrRgIkWlAUwY9Y9AH8ZoOhfFe9sGvaFKfntqI/wOrXqkDMP+8VoO3STyLKA/uh7YntgK+gdTvD3owf09dtfg6g==", + "resolved": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTcwMjE1Ny9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.23.1.tgz", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -1087,7 +1110,7 @@ "@azure-tools/typespec-azure-core": ">=0.63.0 <1.0.0", "@azure-tools/typespec-azure-resource-manager": ">=0.63.0 <1.0.0", "@azure-tools/typespec-azure-rulesets": ">=0.63.0 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.63.0 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.63.1 <1.0.0", "@typespec/compiler": "^1.7.0", "@typespec/events": ">=0.77.0 <1.0.0", "@typespec/http": "^1.7.0", @@ -1103,6 +1126,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.7.0.tgz", "integrity": "sha512-tEAIgGnjLvOjbGAoCfkBudvpe/tXaOXkzy5nVFXs4921/jAaMTwzcJIt0bTXZpp5cExdlL7w9ZrnehARHiposQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -1116,6 +1140,7 @@ "version": "0.77.0", "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.77.0.tgz", "integrity": "sha512-DEUMD9zYqUVUhKCGktV7Z+sFkzj+bcSpJRhEXxOrJxupWM4I3N4deMop+ulxezxlLxIRUz7ELc+6WucYXgOnAA==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -1129,6 +1154,7 @@ "version": "0.77.0", "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.77.0.tgz", "integrity": "sha512-rVML/sPNj+MomKXftko/eUNM5OhHlIevoit3Dbtaf1aWS5pcJ5jKX05Prz53VIyeUP7ra5ocmPE/iIEPb8ZbCA==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -1144,6 +1170,7 @@ "version": "0.77.0", "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.77.0.tgz", "integrity": "sha512-qqfJW4n19Jgi5FxQhsEgoIc5zD9o47AAoZxLKUX91z6aB/YWrLSTrrrIAvhNCESXuB89zlJPwlZ/j4YmpxZ/jw==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -1156,6 +1183,7 @@ "version": "0.77.0", "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.77.0.tgz", "integrity": "sha512-eAInPZYPkxpBUS8IKQfNZ5eZsLfkWqEX0d6YM/AfooGYbxcKdHQBfYOWBvRC4NkKEMub4ROaD5GcPLYTyWQIWw==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -1168,6 +1196,7 @@ "version": "0.77.0", "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.77.0.tgz", "integrity": "sha512-DNVAOMaRUPGpLEsqf3sn7UAWuAE1rs8Jf1FIAU7DF/sVmzeXs4OBanxSSsVmbcdfPRHPbjPuRnW6e+QS2Sjk3Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" @@ -1180,6 +1209,7 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -1196,6 +1226,7 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1208,6 +1239,7 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1226,6 +1258,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -1238,18 +1271,21 @@ "version": "5.4.4", "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, "license": "MIT" }, "node_modules/chardet": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, "license": "MIT" }, "node_modules/chownr": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -1259,6 +1295,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, "license": "ISC", "engines": { "node": ">= 12" @@ -1268,6 +1305,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^7.2.0", @@ -1282,12 +1320,14 @@ "version": "10.6.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, "license": "MIT" }, "node_modules/env-paths": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -1341,6 +1381,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -1350,12 +1391,14 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -1372,6 +1415,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, "funding": [ { "type": "github", @@ -1385,9 +1429,10 @@ "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -1397,6 +1442,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -1437,6 +1483,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -1446,6 +1493,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -1470,6 +1518,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -1482,6 +1531,7 @@ "version": "16.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-16.0.0.tgz", "integrity": "sha512-ejy4TJFga99yW6Q0uhM3pFawKWZmtZzZD/v/GwI5+9bCV5Ew+D2pSND6W7fUes5UykqSsJkUfxFVdRh7Q1+P3Q==", + "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", @@ -1508,6 +1558,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -1524,6 +1575,7 @@ "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -1533,6 +1585,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -1542,6 +1595,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -1554,6 +1608,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -1563,6 +1618,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1575,6 +1631,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -1587,6 +1644,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -1605,6 +1663,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, "license": "MIT" }, "node_modules/jsonfile": { @@ -1635,6 +1694,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -1644,6 +1704,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -1657,6 +1718,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" @@ -1666,6 +1728,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, "license": "MIT", "dependencies": { "minipass": "^7.1.2" @@ -1678,6 +1741,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, "license": "MIT", "bin": { "mustache": "bin/mustache" @@ -1687,6 +1751,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", + "dev": true, "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" @@ -1696,12 +1761,14 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -1714,6 +1781,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -1723,6 +1791,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -1750,6 +1819,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -1770,6 +1840,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -1788,6 +1859,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -1798,6 +1870,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -1821,6 +1894,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, "license": "MIT" }, "node_modules/semver": { @@ -1839,6 +1913,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "license": "ISC", "engines": { "node": ">=14" @@ -1851,6 +1926,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -1863,6 +1939,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", @@ -1880,6 +1957,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -1895,6 +1973,7 @@ "version": "7.5.2", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -1911,6 +1990,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.3.0.tgz", "integrity": "sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g==", + "dev": true, "license": "MIT", "dependencies": { "temporal-spec": "0.3.0" @@ -1920,12 +2000,14 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.3.0.tgz", "integrity": "sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ==", + "dev": true, "license": "ISC" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -1957,6 +2039,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", + "dev": true, "license": "MIT", "engines": { "node": ">=20" @@ -1978,6 +2061,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.0.0" @@ -1987,6 +2071,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dev": true, "license": "MIT", "dependencies": { "vscode-languageserver-protocol": "3.17.5" @@ -1999,6 +2084,7 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.2.0", @@ -2009,18 +2095,21 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "dev": true, "license": "MIT" }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, "license": "MIT" }, "node_modules/wrap-ansi": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", @@ -2059,6 +2148,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -2068,6 +2158,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -2077,6 +2168,7 @@ "version": "2.8.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -2092,6 +2184,7 @@ "version": "18.0.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^9.0.1", @@ -2109,6 +2202,7 @@ "version": "22.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, "license": "ISC", "engines": { "node": "^20.19.0 || ^22.12.0 || >=23" diff --git a/eng/emitter-package.json b/eng/emitter-package.json index cf1ddc964dc8..af684728ed3d 100644 --- a/eng/emitter-package.json +++ b/eng/emitter-package.json @@ -1,23 +1,25 @@ { - "name": "dist/src/index.js", + "main": "dist/src/index.js", "dependencies": { - "@azure-tools/typespec-python": "0.56.1" + "@azure-tools/typespec-python": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest@local/npm/registry/@azure-tools/typespec-python/-/typespec-python-0.56.1-alpha.20260101.1.tgz" }, "devDependencies": { - "@typespec/compiler": "^1.7.1", - "@typespec/http": "^1.7.0", - "@typespec/rest": "~0.77.0", - "@typespec/versioning": "~0.77.0", - "@typespec/openapi": "^1.7.0", - "@typespec/events": "~0.77.0", - "@typespec/sse": "~0.77.0", - "@typespec/streams": "~0.77.0", - "@typespec/xml": "~0.77.0", + "@azure-tools/typespec-autorest": "~0.63.0", "@azure-tools/typespec-azure-core": "~0.63.0", "@azure-tools/typespec-azure-resource-manager": "~0.63.0", - "@azure-tools/typespec-autorest": "~0.63.1", "@azure-tools/typespec-azure-rulesets": "~0.63.0", "@azure-tools/typespec-client-generator-core": "~0.63.1", - "@azure-tools/typespec-liftr-base": "0.11.0" + "@typespec/compiler": "^1.7.0", + "@typespec/events": "~0.77.0", + "@typespec/http": "^1.7.0", + "@typespec/openapi": "^1.7.0", + "@typespec/rest": "~0.77.0", + "@typespec/sse": "~0.77.0", + "@typespec/streams": "~0.77.0", + "@typespec/versioning": "~0.77.0", + "@typespec/xml": "~0.77.0" + }, + "overrides": { + "@autorest/python": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest@local/npm/registry/@autorest/python/-/python-6.45.1-alpha.20260101.1.tgz" } -} \ No newline at end of file +} diff --git a/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/model_base.py b/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/model_base.py index 512d10f7c64a..ab83e61092d7 100644 --- a/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/model_base.py +++ b/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/model_base.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression,too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -170,6 +171,21 @@ def default(self, o): # pylint: disable=too-many-return-statements r"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT" ) +_ARRAY_ENCODE_MAPPING = { + "pipeDelimited": "|", + "spaceDelimited": " ", + "commaDelimited": ",", + "newlineDelimited": "\n", +} + + +def _deserialize_array_encoded(delimit: str, attr): + if isinstance(attr, str): + if attr == "": + return [] + return attr.split(delimit) + return attr + def _deserialize_datetime(attr: typing.Union[str, datetime]) -> datetime: """Deserialize ISO-8601 formatted string into Datetime object. @@ -314,6 +330,8 @@ def _deserialize_int_as_str(attr): def get_deserializer(annotation: typing.Any, rf: typing.Optional["_RestField"] = None): if annotation is int and rf and rf._format == "str": return _deserialize_int_as_str + if annotation is str and rf and rf._format in _ARRAY_ENCODE_MAPPING: + return functools.partial(_deserialize_array_encoded, _ARRAY_ENCODE_MAPPING[rf._format]) if rf and rf._format: return _DESERIALIZE_MAPPING_WITHFORMAT.get(rf._format) return _DESERIALIZE_MAPPING.get(annotation) # pyright: ignore @@ -352,9 +370,39 @@ def __contains__(self, key: typing.Any) -> bool: return key in self._data def __getitem__(self, key: str) -> typing.Any: + # If this key has been deserialized (for mutable types), we need to handle serialization + if hasattr(self, "_attr_to_rest_field"): + cache_attr = f"_deserialized_{key}" + if hasattr(self, cache_attr): + rf = _get_rest_field(getattr(self, "_attr_to_rest_field"), key) + if rf: + value = self._data.get(key) + if isinstance(value, (dict, list, set)): + # For mutable types, serialize and return + # But also update _data with serialized form and clear flag + # so mutations via this returned value affect _data + serialized = _serialize(value, rf._format) + # If serialized form is same type (no transformation needed), + # return _data directly so mutations work + if isinstance(serialized, type(value)) and serialized == value: + return self._data.get(key) + # Otherwise return serialized copy and clear flag + try: + object.__delattr__(self, cache_attr) + except AttributeError: + pass + # Store serialized form back + self._data[key] = serialized + return serialized return self._data.__getitem__(key) def __setitem__(self, key: str, value: typing.Any) -> None: + # Clear any cached deserialized value when setting through dictionary access + cache_attr = f"_deserialized_{key}" + try: + object.__delattr__(self, cache_attr) + except AttributeError: + pass self._data.__setitem__(key, value) def __delitem__(self, key: str) -> None: @@ -482,6 +530,8 @@ def _is_model(obj: typing.Any) -> bool: def _serialize(o, format: typing.Optional[str] = None): # pylint: disable=too-many-return-statements if isinstance(o, list): + if format in _ARRAY_ENCODE_MAPPING and all(isinstance(x, str) for x in o): + return _ARRAY_ENCODE_MAPPING[format].join(o) return [_serialize(x, format) for x in o] if isinstance(o, dict): return {k: _serialize(v, format) for k, v in o.items()} @@ -637,6 +687,10 @@ def __new__(cls, *args: typing.Any, **kwargs: typing.Any) -> Self: if not rf._rest_name_input: rf._rest_name_input = attr cls._attr_to_rest_field: dict[str, _RestField] = dict(attr_to_rest_field.items()) + cls._backcompat_attr_to_rest_field: dict[str, _RestField] = { + Model._get_backcompat_attribute_name(cls._attr_to_rest_field, attr): rf + for attr, rf in cls._attr_to_rest_field.items() + } cls._calculated.add(f"{cls.__module__}.{cls.__qualname__}") return super().__new__(cls) @@ -646,6 +700,16 @@ def __init_subclass__(cls, discriminator: typing.Optional[str] = None) -> None: if hasattr(base, "__mapping__"): base.__mapping__[discriminator or cls.__name__] = cls # type: ignore + @classmethod + def _get_backcompat_attribute_name(cls, attr_to_rest_field: dict[str, "_RestField"], attr_name: str) -> str: + rest_field_obj = attr_to_rest_field.get(attr_name) # pylint: disable=protected-access + if rest_field_obj is None: + return attr_name + original_tsp_name = getattr(rest_field_obj, "_original_tsp_name", None) # pylint: disable=protected-access + if original_tsp_name: + return original_tsp_name + return attr_name + @classmethod def _get_discriminator(cls, exist_discriminators) -> typing.Optional["_RestField"]: for v in cls.__dict__.values(): @@ -766,6 +830,17 @@ def _deserialize_sequence( return obj if isinstance(obj, ET.Element): obj = list(obj) + try: + if ( + isinstance(obj, str) + and isinstance(deserializer, functools.partial) + and isinstance(deserializer.args[0], functools.partial) + and deserializer.args[0].func == _deserialize_array_encoded # pylint: disable=comparison-with-callable + ): + # encoded string may be deserialized to sequence + return deserializer(obj) + except: # pylint: disable=bare-except + pass return type(obj)(_deserialize(deserializer, entry, module) for entry in obj) @@ -971,6 +1046,7 @@ def _failsafe_deserialize_xml( return None +# pylint: disable=too-many-instance-attributes class _RestField: def __init__( self, @@ -983,6 +1059,7 @@ def __init__( format: typing.Optional[str] = None, is_multipart_file_input: bool = False, xml: typing.Optional[dict[str, typing.Any]] = None, + original_tsp_name: typing.Optional[str] = None, ): self._type = type self._rest_name_input = name @@ -994,10 +1071,15 @@ def __init__( self._format = format self._is_multipart_file_input = is_multipart_file_input self._xml = xml if xml is not None else {} + self._original_tsp_name = original_tsp_name @property def _class_type(self) -> typing.Any: - return getattr(self._type, "args", [None])[0] + result = getattr(self._type, "args", [None])[0] + # type may be wrapped by nested functools.partial so we need to check for that + if isinstance(result, functools.partial): + return getattr(result, "args", [None])[0] + return result @property def _rest_name(self) -> str: @@ -1008,14 +1090,37 @@ def _rest_name(self) -> str: def __get__(self, obj: Model, type=None): # pylint: disable=redefined-builtin # by this point, type and rest_name will have a value bc we default # them in __new__ of the Model class - item = obj.get(self._rest_name) + # Use _data.get() directly to avoid triggering __getitem__ which clears the cache + item = obj._data.get(self._rest_name) if item is None: return item if self._is_model: return item - return _deserialize(self._type, _serialize(item, self._format), rf=self) + + # For mutable types, we want mutations to directly affect _data + # Check if we've already deserialized this value + cache_attr = f"_deserialized_{self._rest_name}" + if hasattr(obj, cache_attr): + # Return the value from _data directly (it's been deserialized in place) + return obj._data.get(self._rest_name) + + deserialized = _deserialize(self._type, _serialize(item, self._format), rf=self) + + # For mutable types, store the deserialized value back in _data + # so mutations directly affect _data + if isinstance(deserialized, (dict, list, set)): + obj._data[self._rest_name] = deserialized + object.__setattr__(obj, cache_attr, True) # Mark as deserialized + return deserialized + + return deserialized def __set__(self, obj: Model, value) -> None: + # Clear the cached deserialized object when setting a new value + cache_attr = f"_deserialized_{self._rest_name}" + if hasattr(obj, cache_attr): + object.__delattr__(obj, cache_attr) + if value is None: # we want to wipe out entries if users set attr to None try: @@ -1045,6 +1150,7 @@ def rest_field( format: typing.Optional[str] = None, is_multipart_file_input: bool = False, xml: typing.Optional[dict[str, typing.Any]] = None, + original_tsp_name: typing.Optional[str] = None, ) -> typing.Any: return _RestField( name=name, @@ -1054,6 +1160,7 @@ def rest_field( format=format, is_multipart_file_input=is_multipart_file_input, xml=xml, + original_tsp_name=original_tsp_name, ) diff --git a/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/serialization.py b/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/serialization.py index 45a3e44e45cb..81ec1de5922b 100644 --- a/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/serialization.py +++ b/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/serialization.py @@ -821,13 +821,20 @@ def serialize_basic(cls, data, data_type, **kwargs): :param str data_type: Type of object in the iterable. :rtype: str, int, float, bool :return: serialized object + :raises TypeError: raise if data_type is not one of str, int, float, bool. """ custom_serializer = cls._get_custom_serializers(data_type, **kwargs) if custom_serializer: return custom_serializer(data) if data_type == "str": return cls.serialize_unicode(data) - return eval(data_type)(data) # nosec # pylint: disable=eval-used + if data_type == "int": + return int(data) + if data_type == "float": + return float(data) + if data_type == "bool": + return bool(data) + raise TypeError("Unknown basic data type: {}".format(data_type)) @classmethod def serialize_unicode(cls, data): @@ -1757,7 +1764,7 @@ def deserialize_basic(self, attr, data_type): # pylint: disable=too-many-return :param str data_type: deserialization data type. :return: Deserialized basic type. :rtype: str, int, float or bool - :raises TypeError: if string format is not valid. + :raises TypeError: if string format is not valid or data_type is not one of str, int, float, bool. """ # If we're here, data is supposed to be a basic type. # If it's still an XML node, take the text @@ -1783,7 +1790,11 @@ def deserialize_basic(self, attr, data_type): # pylint: disable=too-many-return if data_type == "str": return self.deserialize_unicode(attr) - return eval(data_type)(attr) # nosec # pylint: disable=eval-used + if data_type == "int": + return int(attr) + if data_type == "float": + return float(attr) + raise TypeError("Unknown basic data type: {}".format(data_type)) @staticmethod def deserialize_unicode(data): diff --git a/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/utils.py b/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/utils.py index 4c029bd3dfa5..54fdb84a9191 100644 --- a/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/utils.py +++ b/sdk/ai/azure-ai-agents/azure/ai/agents/_utils/utils.py @@ -49,9 +49,8 @@ def serialize_multipart_data_entry(data_entry: Any) -> Any: def prepare_multipart_form_data( body: Mapping[str, Any], multipart_fields: list[str], data_fields: list[str] -) -> tuple[list[FileType], dict[str, Any]]: +) -> list[FileType]: files: list[FileType] = [] - data: dict[str, Any] = {} for multipart_field in multipart_fields: multipart_entry = body.get(multipart_field) if isinstance(multipart_entry, list): @@ -59,9 +58,11 @@ def prepare_multipart_form_data( elif multipart_entry: files.append((multipart_field, multipart_entry)) + # if files is empty, sdk core library can't handle multipart/form-data correctly, so + # we put data fields into files with filename as None to avoid that scenario. for data_field in data_fields: data_entry = body.get(data_field) if data_entry: - data[data_field] = serialize_multipart_data_entry(data_entry) + files.append((data_field, str(serialize_multipart_data_entry(data_entry)))) - return files, data + return files diff --git a/sdk/ai/azure-ai-agents/azure/ai/agents/aio/operations/_operations.py b/sdk/ai/azure-ai-agents/azure/ai/agents/aio/operations/_operations.py index 8151b09585e2..4335043ae9c0 100644 --- a/sdk/ai/azure-ai-agents/azure/ai/agents/aio/operations/_operations.py +++ b/sdk/ai/azure-ai-agents/azure/ai/agents/aio/operations/_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression,too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -252,7 +253,10 @@ async def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -339,7 +343,10 @@ async def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -394,7 +401,10 @@ async def get(self, thread_id: str, **kwargs: Any) -> _models.AgentThread: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -558,7 +568,10 @@ async def update( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -619,7 +632,10 @@ async def _delete_thread(self, thread_id: str, **kwargs: Any) -> _models._models except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -827,7 +843,10 @@ async def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -979,7 +998,10 @@ async def get(self, thread_id: str, message_id: str, **kwargs: Any) -> _models.T except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -1140,7 +1162,10 @@ async def update( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -1209,7 +1234,10 @@ async def _delete(self, thread_id: str, message_id: str, **kwargs: Any) -> _mode except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -1604,7 +1632,10 @@ async def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -1695,7 +1726,10 @@ async def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -1753,7 +1787,10 @@ async def get(self, thread_id: str, run_id: str, **kwargs: Any) -> _models.Threa except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -1914,7 +1951,10 @@ async def update( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2087,7 +2127,10 @@ async def submit_tool_outputs( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2151,7 +2194,10 @@ async def cancel(self, thread_id: str, run_id: str, **kwargs: Any) -> _models.Th except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2250,7 +2296,10 @@ async def get( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2352,7 +2401,10 @@ async def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -2428,7 +2480,10 @@ async def list( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2474,12 +2529,11 @@ async def _upload_file( _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["file"] _data_fields: list[str] = ["purpose", "filename"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_files_upload_file_request( api_version=self._config.api_version, files=_files, - data=_data, headers=_headers, params=_params, ) @@ -2502,7 +2556,10 @@ async def _upload_file( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2563,7 +2620,10 @@ async def _delete_file(self, file_id: str, **kwargs: Any) -> _models._models.Fil except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2626,7 +2686,10 @@ async def get(self, file_id: str, **kwargs: Any) -> _models.FileInfo: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2687,7 +2750,10 @@ async def _get_file_content(self, file_id: str, **kwargs: Any) -> AsyncIterator[ except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) deserialized = response.iter_bytes() @@ -2789,7 +2855,10 @@ async def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -2963,7 +3032,10 @@ async def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3024,7 +3096,10 @@ async def get(self, vector_store_id: str, **kwargs: Any) -> _models.VectorStore: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3186,7 +3261,10 @@ async def modify( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3250,7 +3328,10 @@ async def _delete_vector_store( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3366,7 +3447,10 @@ async def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -3518,7 +3602,10 @@ async def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3582,7 +3669,10 @@ async def get(self, vector_store_id: str, file_id: str, **kwargs: Any) -> _model except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3650,7 +3740,10 @@ async def _delete_vector_store_file( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3828,7 +3921,10 @@ async def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3892,7 +3988,10 @@ async def get(self, vector_store_id: str, batch_id: str, **kwargs: Any) -> _mode except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3957,7 +4056,10 @@ async def cancel(self, vector_store_id: str, batch_id: str, **kwargs: Any) -> _m except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4057,7 +4159,10 @@ async def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -4288,7 +4393,10 @@ async def create_agent( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4375,7 +4483,10 @@ async def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -4430,7 +4541,10 @@ async def get_agent(self, agent_id: str, **kwargs: Any) -> _models.Agent: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4677,7 +4791,10 @@ async def update_agent( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4738,7 +4855,10 @@ async def _delete_agent(self, agent_id: str, **kwargs: Any) -> _models._models.A except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -5058,7 +5178,10 @@ async def create_thread_and_run( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: diff --git a/sdk/ai/azure-ai-agents/azure/ai/agents/models/_models.py b/sdk/ai/azure-ai-agents/azure/ai/agents/models/_models.py index 09dd194b5a8f..3339b8fce096 100644 --- a/sdk/ai/azure-ai-agents/azure/ai/agents/models/_models.py +++ b/sdk/ai/azure-ai-agents/azure/ai/agents/models/_models.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression,too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -925,9 +926,8 @@ class BingCustomSearchConfiguration(_Model): maximum value is 50. The actual number delivered may be less than requested. * It is possible for multiple pages to include some overlap in results. - * This parameter affects only web page results. It's possible that AI model might not use all - search results returned by Bing. - + * This parameter affects only web page results. It's possible that AI model might not use + all search results returned by Bing. :vartype count: int :ivar freshness: Filter search results by the following case-insensitive age values: @@ -937,7 +937,6 @@ class BingCustomSearchConfiguration(_Model): discovered by Bing during a specific timeframe, specify a date range in the form: `YYYY-MM-DD..YYYY-MM-DD`. For example, `freshness=2019-02-01..2019-05-30. To limit the results to a single date, set this parameter to a specific date. For example, freshness=2019-02-04`. - :vartype freshness: str """ @@ -977,22 +976,20 @@ class BingCustomSearchConfiguration(_Model): strings displayed in a different language.""" count: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) """The number of search results to return in the response. The default is 5 and the maximum value - is 50. The actual number delivered may be less than requested. - - * It is possible for multiple pages to include some overlap in results. - * This parameter affects only web page results. It's possible that AI model might not use all - search results returned by Bing. - """ + is 50. The actual number delivered may be less than requested. + + * It is possible for multiple pages to include some overlap in results. + * This parameter affects only web page results. It's possible that AI model might not use + all search results returned by Bing.""" freshness: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) """Filter search results by the following case-insensitive age values: - - * Day: Return webpages that Bing discovered within the last 24 hours. - * Week: Return webpages that Bing discovered within the last 7 days. - * Month: Return webpages that Bing discovered within the last 30 days. To get articles - discovered by Bing during a specific timeframe, specify a date range in the form: - `YYYY-MM-DD..YYYY-MM-DD`. For example, `freshness=2019-02-01..2019-05-30. To limit the results - to a single date, set this parameter to a specific date. For example, freshness=2019-02-04`. - """ + + * Day: Return webpages that Bing discovered within the last 24 hours. + * Week: Return webpages that Bing discovered within the last 7 days. + * Month: Return webpages that Bing discovered within the last 30 days. To get articles + discovered by Bing during a specific timeframe, specify a date range in the form: + `YYYY-MM-DD..YYYY-MM-DD`. For example, `freshness=2019-02-01..2019-05-30. To limit the results + to a single date, set this parameter to a specific date. For example, freshness=2019-02-04`.""" @overload def __init__( @@ -1126,9 +1123,8 @@ class BingGroundingSearchConfiguration(_Model): maximum value is 50. The actual number delivered may be less than requested. * It is possible for multiple pages to include some overlap in results. - * This parameter affects only web page results. It's possible that AI model might not use all - search results returned by Bing. - + * This parameter affects only web page results. It's possible that AI model might not use + all search results returned by Bing. :vartype count: int :ivar freshness: Filter search results by the following case-insensitive age values: @@ -1138,7 +1134,6 @@ class BingGroundingSearchConfiguration(_Model): discovered by Bing during a specific timeframe, specify a date range in the form: `YYYY-MM-DD..YYYY-MM-DD`. For example, `freshness=2019-02-01..2019-05-30. To limit the results to a single date, set this parameter to a specific date. For example, freshness=2019-02-04`. - :vartype freshness: str """ @@ -1176,22 +1171,20 @@ class BingGroundingSearchConfiguration(_Model): strings displayed in a different language.""" count: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) """The number of search results to return in the response. The default is 5 and the maximum value - is 50. The actual number delivered may be less than requested. - - * It is possible for multiple pages to include some overlap in results. - * This parameter affects only web page results. It's possible that AI model might not use all - search results returned by Bing. - """ + is 50. The actual number delivered may be less than requested. + + * It is possible for multiple pages to include some overlap in results. + * This parameter affects only web page results. It's possible that AI model might not use + all search results returned by Bing.""" freshness: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) """Filter search results by the following case-insensitive age values: - - * Day: Return webpages that Bing discovered within the last 24 hours. - * Week: Return webpages that Bing discovered within the last 7 days. - * Month: Return webpages that Bing discovered within the last 30 days. To get articles - discovered by Bing during a specific timeframe, specify a date range in the form: - `YYYY-MM-DD..YYYY-MM-DD`. For example, `freshness=2019-02-01..2019-05-30. To limit the results - to a single date, set this parameter to a specific date. For example, freshness=2019-02-04`. - """ + + * Day: Return webpages that Bing discovered within the last 24 hours. + * Week: Return webpages that Bing discovered within the last 7 days. + * Month: Return webpages that Bing discovered within the last 30 days. To get articles + discovered by Bing during a specific timeframe, specify a date range in the form: + `YYYY-MM-DD..YYYY-MM-DD`. For example, `freshness=2019-02-01..2019-05-30. To limit the results + to a single date, set this parameter to a specific date. For example, freshness=2019-02-04`.""" @overload def __init__( @@ -2655,7 +2648,9 @@ class KeyPressAction(ComputerUseAction, discriminator="keypress"): type: Literal["keypress"] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore """Specifies the event type. For a keypress action, this property is always set to keypress. Required. Default value is \"keypress\".""" - keys_property: list[str] = rest_field(name="keys", visibility=["read", "create", "update", "delete", "query"]) + keys_property: list[str] = rest_field( + name="keys", visibility=["read", "create", "update", "delete", "query"], original_tsp_name="keys" + ) """The combination of keys the model is requesting to be pressed. This is an array of strings, each representing a key. Required.""" diff --git a/sdk/ai/azure-ai-agents/azure/ai/agents/operations/_operations.py b/sdk/ai/azure-ai-agents/azure/ai/agents/operations/_operations.py index eba194bfb068..7db875c5f65f 100644 --- a/sdk/ai/azure-ai-agents/azure/ai/agents/operations/_operations.py +++ b/sdk/ai/azure-ai-agents/azure/ai/agents/operations/_operations.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -1394,7 +1395,10 @@ def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -1481,7 +1485,10 @@ def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -1536,7 +1543,10 @@ def get(self, thread_id: str, **kwargs: Any) -> _models.AgentThread: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -1700,7 +1710,10 @@ def update( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -1761,7 +1774,10 @@ def _delete_thread(self, thread_id: str, **kwargs: Any) -> _models._models.Threa except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -1969,7 +1985,10 @@ def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2121,7 +2140,10 @@ def get(self, thread_id: str, message_id: str, **kwargs: Any) -> _models.ThreadM except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2282,7 +2304,10 @@ def update( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2351,7 +2376,10 @@ def _delete(self, thread_id: str, message_id: str, **kwargs: Any) -> _models._mo except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2746,7 +2774,10 @@ def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -2837,7 +2868,10 @@ def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -2895,7 +2929,10 @@ def get(self, thread_id: str, run_id: str, **kwargs: Any) -> _models.ThreadRun: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3056,7 +3093,10 @@ def update( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3229,7 +3269,10 @@ def submit_tool_outputs( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3293,7 +3336,10 @@ def cancel(self, thread_id: str, run_id: str, **kwargs: Any) -> _models.ThreadRu except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3392,7 +3438,10 @@ def get( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3494,7 +3543,10 @@ def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -3570,7 +3622,10 @@ def list( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3614,12 +3669,11 @@ def _upload_file(self, body: Union[_models._models.UploadFileRequest, JSON], **k _body = body.as_dict() if isinstance(body, _Model) else body _file_fields: list[str] = ["file"] _data_fields: list[str] = ["purpose", "filename"] - _files, _data = prepare_multipart_form_data(_body, _file_fields, _data_fields) + _files = prepare_multipart_form_data(_body, _file_fields, _data_fields) _request = build_files_upload_file_request( api_version=self._config.api_version, files=_files, - data=_data, headers=_headers, params=_params, ) @@ -3642,7 +3696,10 @@ def _upload_file(self, body: Union[_models._models.UploadFileRequest, JSON], **k except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3703,7 +3760,10 @@ def _delete_file(self, file_id: str, **kwargs: Any) -> _models._models.FileDelet except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3766,7 +3826,10 @@ def get(self, file_id: str, **kwargs: Any) -> _models.FileInfo: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -3827,7 +3890,10 @@ def _get_file_content(self, file_id: str, **kwargs: Any) -> Iterator[bytes]: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) deserialized = response.iter_bytes() @@ -3929,7 +3995,10 @@ def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -4101,7 +4170,10 @@ def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4162,7 +4234,10 @@ def get(self, vector_store_id: str, **kwargs: Any) -> _models.VectorStore: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4324,7 +4399,10 @@ def modify( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4386,7 +4464,10 @@ def _delete_vector_store(self, vector_store_id: str, **kwargs: Any) -> _models._ except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4502,7 +4583,10 @@ def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -4654,7 +4738,10 @@ def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4718,7 +4805,10 @@ def get(self, vector_store_id: str, file_id: str, **kwargs: Any) -> _models.Vect except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4786,7 +4876,10 @@ def _delete_vector_store_file( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -4964,7 +5057,10 @@ def create( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -5028,7 +5124,10 @@ def get(self, vector_store_id: str, batch_id: str, **kwargs: Any) -> _models.Vec except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -5093,7 +5192,10 @@ def cancel(self, vector_store_id: str, batch_id: str, **kwargs: Any) -> _models. except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -5193,7 +5295,10 @@ def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -5422,7 +5527,10 @@ def create_agent( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -5509,7 +5617,10 @@ def get_next(_continuation_token=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) return pipeline_response @@ -5564,7 +5675,10 @@ def get_agent(self, agent_id: str, **kwargs: Any) -> _models.Agent: except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -5811,7 +5925,10 @@ def update_agent( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -5872,7 +5989,10 @@ def _delete_agent(self, agent_id: str, **kwargs: Any) -> _models._models.AgentDe except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: @@ -6192,7 +6312,10 @@ def create_thread_and_run( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize(_models.AgentV1Error, response) + error = _failsafe_deserialize( + _models.AgentV1Error, + response, + ) raise HttpResponseError(response=response, model=error) if _stream: diff --git a/sdk/ai/azure-ai-agents/pyproject.toml b/sdk/ai/azure-ai-agents/pyproject.toml index abdc05b7047f..f96f0219059e 100644 --- a/sdk/ai/azure-ai-agents/pyproject.toml +++ b/sdk/ai/azure-ai-agents/pyproject.toml @@ -1,24 +1,64 @@ -[tool.mypy] -python_version = "3.10" -exclude = [ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +[build-system] +requires = ["setuptools>=77.0.3", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "azure-ai-agents" +authors = [ + { name = "Microsoft Corporation", email = "azpysdkhelp@microsoft.com" }, ] -warn_unused_configs = true -ignore_missing_imports = true -follow_imports_for_stubs = false - -[tool.isort] -profile = "black" -line_length = 120 -known_first_party = ["azure"] -filter_files=true -extend_skip_glob = [ - "*/_vendor/*", - "*/_generated/*", - "*/_restclient/*", - "*/doc/*", - "*/.tox/*", +description = "Microsoft Corporation Azure Ai Agents Client Library for Python" +license = "MIT" +classifiers = [ + "Development Status :: 4 - Beta", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ] +requires-python = ">=3.9" +keywords = ["azure", "azure sdk"] -[tool.azure-sdk-build] -whl_no_aio= false +dependencies = [ + "isodate>=0.6.1", + "azure-core>=1.37.0", + "typing-extensions>=4.6.0", +] +dynamic = [ +"version", "readme" +] + +[project.urls] +repository = "https://github.com/Azure/azure-sdk-for-python" +[tool.setuptools.dynamic] +version = {attr = "azure.ai.agents._version.VERSION"} +readme = {file = ["README.md", "CHANGELOG.md"], content-type = "text/markdown"} + +[tool.setuptools.packages.find] +exclude = [ + "tests*", + "generated_tests*", + "samples*", + "generated_samples*", + "doc*", + "azure", + "azure.ai", +] + +[tool.setuptools.package-data] +pytyped = ["py.typed"] + +[tool.azure-sdk-build] +whl_no_aio = false diff --git a/sdk/ai/azure-ai-agents/samples/agents_async/sample_agents_basics_with_console_tracing_async.py b/sdk/ai/azure-ai-agents/samples/agents_async/sample_agents_basics_with_console_tracing_async.py index bacec1c100b0..67c32b24c200 100644 --- a/sdk/ai/azure-ai-agents/samples/agents_async/sample_agents_basics_with_console_tracing_async.py +++ b/sdk/ai/azure-ai-agents/samples/agents_async/sample_agents_basics_with_console_tracing_async.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # ------------------------------------ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. @@ -37,6 +38,7 @@ from azure.identity.aio import DefaultAzureCredential from azure.core.settings import settings + settings.tracing_implementation = "opentelemetry" # Install opentelemetry with command "pip install azure-ai-projects opentelemetry-sdk". @@ -53,6 +55,7 @@ tracer = trace.get_tracer(__name__) from azure.ai.agents.telemetry import AIAgentsInstrumentor + AIAgentsInstrumentor().instrument() @@ -80,7 +83,9 @@ async def main() -> None: thread = await project_client.agents.threads.create() print(f"Created thread, thread ID: {thread.id}") - message = await project_client.agents.messages.create(thread_id=thread.id, role="user", content="Hello, tell me a joke") + message = await project_client.agents.messages.create( + thread_id=thread.id, role="user", content="Hello, tell me a joke" + ) print(f"Created message, message ID: {message.id}") run = await project_client.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id) diff --git a/sdk/ai/azure-ai-agents/setup.py b/sdk/ai/azure-ai-agents/setup.py deleted file mode 100644 index 372a1c431d12..000000000000 --- a/sdk/ai/azure-ai-agents/setup.py +++ /dev/null @@ -1,80 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - - -import os -import re -from setuptools import setup, find_packages - - -PACKAGE_NAME = "azure-ai-agents" -PACKAGE_PPRINT_NAME = "Azure AI Agents" - -# a-b-c => a/b/c -package_folder_path = PACKAGE_NAME.replace("-", "/") - -# Version extraction inspired from 'requests' -with open(os.path.join(package_folder_path, "_version.py"), "r") as fd: - version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1) - -if not version: - raise RuntimeError("Cannot find version information") - - -setup( - name=PACKAGE_NAME, - version=version, - description="Microsoft Corporation {} Client Library for Python".format(PACKAGE_PPRINT_NAME), - long_description=open("README.md", "r").read(), - long_description_content_type="text/markdown", - license="MIT License", - author="Microsoft Corporation", - author_email="azpysdkhelp@microsoft.com", - url="https://github.com/Azure/azure-sdk-for-python/tree/main/sdk", - keywords="azure, azure sdk", - classifiers=[ - "Development Status :: 4 - Beta", - "Programming Language :: Python", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "License :: OSI Approved :: MIT License", - ], - zip_safe=False, - packages=find_packages( - exclude=[ - "samples", - "samples.utils", - "samples.agents_tools", - "samples.agents_async", - "samples.agents_multiagent", - "samples.agents_streaming", - "samples.agents_telemetry", - "samples.agents_tools", - "samples.assets", - "samples.agents_async.utils", - "tests", - # Exclude packages that will be covered by PEP420 or nspkg - "azure", - "azure.ai", - ] - ), - include_package_data=True, - package_data={ - "azure.ai.agents": ["py.typed"], - }, - install_requires=[ - "isodate>=0.6.1", - "azure-core>=1.30.0", - "typing-extensions>=4.6.0", - ], - python_requires=">=3.9", -)