Skip to content

Commit

Permalink
[Key Vault] Prepare CAE support release (#37945)
Browse files Browse the repository at this point in the history
  • Loading branch information
mccoyp authored Oct 17, 2024
1 parent 8c5808e commit 30518a7
Show file tree
Hide file tree
Showing 70 changed files with 1,287 additions and 2,095 deletions.
4 changes: 1 addition & 3 deletions .vscode/cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -963,9 +963,7 @@
"filename": "sdk/keyvault/**",
"words": [
"eddsa",
"Thawte",
"myalias",
"mydomain"
"Thawte"
]
},
{
Expand Down
6 changes: 1 addition & 5 deletions sdk/keyvault/azure-keyvault-administration/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
# Release History

## 4.5.0b1 (Unreleased)
## 4.5.0 (2024-10-17)

### Features Added
- Added support for service API version `7.6-preview.1`
- Added support for Continuous Access Evaluation (CAE). `enable_cae=True` is passed to all `get_token` requests.

### Breaking Changes

### Bugs Fixed
- Typing errors from using Key Vault clients as context managers have been fixed
([#34744](https:/Azure/azure-sdk-for-python/issues/34744))

### Other Changes
- Updated minimum `azure-core` version to 1.31.0
- Key Vault API version `7.6-preview.1` is now the default

## 4.4.0 (2024-02-22)

Expand Down
2 changes: 1 addition & 1 deletion sdk/keyvault/azure-keyvault-administration/assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "python",
"TagPrefix": "python/keyvault/azure-keyvault-administration",
"Tag": "python/keyvault/azure-keyvault-administration_df93633a52"
"Tag": "python/keyvault/azure-keyvault-administration_b16e831fc9"
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ class KeyVaultClient(KeyVaultClientOperationsMixin): # pylint: disable=client-a
Vault service.
:ivar role_definitions: RoleDefinitionsOperations operations
:vartype role_definitions: azure.keyvault.v7_6_preview_1.operations.RoleDefinitionsOperations
:vartype role_definitions: azure.keyvault.v7_5.operations.RoleDefinitionsOperations
:ivar role_assignments: RoleAssignmentsOperations operations
:vartype role_assignments: azure.keyvault.v7_6_preview_1.operations.RoleAssignmentsOperations
:keyword api_version: Api Version. Default value is "7.6-preview.1". Note that overriding this
default value may result in unsupported behavior.
:vartype role_assignments: azure.keyvault.v7_5.operations.RoleAssignmentsOperations
:keyword api_version: Api Version. Default value is "7.5". Note that overriding this default
value may result in unsupported behavior.
:paramtype api_version: str
:keyword int polling_interval: Default waiting time between two polls for LRO operations if no
Retry-After header is present.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ class KeyVaultClientConfiguration: # pylint: disable=too-many-instance-attribut
Note that all parameters used to create this instance are saved as instance
attributes.
:keyword api_version: Api Version. Default value is "7.6-preview.1". Note that overriding this
default value may result in unsupported behavior.
:keyword api_version: Api Version. Default value is "7.5". Note that overriding this default
value may result in unsupported behavior.
:paramtype api_version: str
"""

def __init__(self, **kwargs: Any) -> None:
api_version: str = kwargs.pop("api_version", "7.6-preview.1")
api_version: str = kwargs.pop("api_version", "7.5")

self.api_version = api_version
kwargs.setdefault("sdk_moniker", "keyvault/{}".format(VERSION))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,13 @@ def deserialize_from_http_generics(cls, body_bytes: Optional[Union[AnyStr, IO]],
return None


try:
basestring # type: ignore
unicode_str = unicode # type: ignore
except NameError:
basestring = str
unicode_str = str

_LOGGER = logging.getLogger(__name__)

try:
Expand Down Expand Up @@ -538,7 +545,7 @@ class Serializer(object):
"multiple": lambda x, y: x % y != 0,
}

def __init__(self, classes: Optional[Mapping[str, type]] = None):
def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None):
self.serialize_type = {
"iso-8601": Serializer.serialize_iso,
"rfc-1123": Serializer.serialize_rfc,
Expand All @@ -554,7 +561,7 @@ def __init__(self, classes: Optional[Mapping[str, type]] = None):
"[]": self.serialize_iter,
"{}": self.serialize_dict,
}
self.dependencies: Dict[str, type] = dict(classes) if classes else {}
self.dependencies: Dict[str, Type[ModelType]] = dict(classes) if classes else {}
self.key_transformer = full_restapi_key_transformer
self.client_side_validation = True

Expand Down Expand Up @@ -642,7 +649,7 @@ def _serialize(self, target_obj, data_type=None, **kwargs):
else: # That's a basic type
# Integrate namespace if necessary
local_node = _create_xml_node(xml_name, xml_prefix, xml_ns)
local_node.text = str(new_attr)
local_node.text = unicode_str(new_attr)
serialized.append(local_node) # type: ignore
else: # JSON
for k in reversed(keys): # type: ignore
Expand Down Expand Up @@ -987,7 +994,7 @@ def serialize_object(self, attr, **kwargs):
return self.serialize_basic(attr, self.basic_types[obj_type], **kwargs)
if obj_type is _long_type:
return self.serialize_long(attr)
if obj_type is str:
if obj_type is unicode_str:
return self.serialize_unicode(attr)
if obj_type is datetime.datetime:
return self.serialize_iso(attr)
Expand Down Expand Up @@ -1363,7 +1370,7 @@ class Deserializer(object):

valid_date = re.compile(r"\d{4}[-]\d{2}[-]\d{2}T\d{2}:\d{2}:\d{2}" r"\.?\d*Z?[-+]?[\d{2}]?:?[\d{2}]?")

def __init__(self, classes: Optional[Mapping[str, type]] = None):
def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None):
self.deserialize_type = {
"iso-8601": Deserializer.deserialize_iso,
"rfc-1123": Deserializer.deserialize_rfc,
Expand All @@ -1383,7 +1390,7 @@ def __init__(self, classes: Optional[Mapping[str, type]] = None):
"duration": (isodate.Duration, datetime.timedelta),
"iso-8601": (datetime.datetime),
}
self.dependencies: Dict[str, type] = dict(classes) if classes else {}
self.dependencies: Dict[str, Type[ModelType]] = dict(classes) if classes else {}
self.key_extractors = [rest_key_extractor, xml_key_extractor]
# Additional properties only works if the "rest_key_extractor" is used to
# extract the keys. Making it to work whatever the key extractor is too much
Expand Down Expand Up @@ -1436,7 +1443,7 @@ def _deserialize(self, target_obj, data):

response, class_name = self._classify_target(target_obj, data)

if isinstance(response, str):
if isinstance(response, basestring):
return self.deserialize_data(data, response)
elif isinstance(response, type) and issubclass(response, Enum):
return self.deserialize_enum(data, response)
Expand Down Expand Up @@ -1507,14 +1514,14 @@ def _classify_target(self, target, data):
if target is None:
return None, None

if isinstance(target, str):
if isinstance(target, basestring):
try:
target = self.dependencies[target]
except KeyError:
return target, target

try:
target = target._classify(data, self.dependencies) # type: ignore
target = target._classify(data, self.dependencies)
except AttributeError:
pass # Target is not a Model, no classify
return target, target.__class__.__name__ # type: ignore
Expand Down Expand Up @@ -1570,7 +1577,7 @@ def _unpack_content(raw_data, content_type=None):
if hasattr(raw_data, "_content_consumed"):
return RawDeserializer.deserialize_from_http_generics(raw_data.text, raw_data.headers)

if isinstance(raw_data, (str, bytes)) or hasattr(raw_data, "read"):
if isinstance(raw_data, (basestring, bytes)) or hasattr(raw_data, "read"):
return RawDeserializer.deserialize_from_text(raw_data, content_type) # type: ignore
return raw_data

Expand Down Expand Up @@ -1692,7 +1699,7 @@ def deserialize_object(self, attr, **kwargs):
if isinstance(attr, ET.Element):
# Do no recurse on XML, just return the tree as-is
return attr
if isinstance(attr, str):
if isinstance(attr, basestring):
return self.deserialize_basic(attr, "str")
obj_type = type(attr)
if obj_type in self.basic_types:
Expand Down Expand Up @@ -1749,7 +1756,7 @@ def deserialize_basic(self, attr, data_type):
if data_type == "bool":
if attr in [True, False, 1, 0]:
return bool(attr)
elif isinstance(attr, str):
elif isinstance(attr, basestring):
if attr.lower() in ["true", "1"]:
return True
elif attr.lower() in ["false", "0"]:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,11 @@ class KeyVaultClient(KeyVaultClientOperationsMixin): # pylint: disable=client-a
Vault service.
:ivar role_definitions: RoleDefinitionsOperations operations
:vartype role_definitions:
azure.keyvault.v7_6_preview_1.aio.operations.RoleDefinitionsOperations
:vartype role_definitions: azure.keyvault.v7_5.aio.operations.RoleDefinitionsOperations
:ivar role_assignments: RoleAssignmentsOperations operations
:vartype role_assignments:
azure.keyvault.v7_6_preview_1.aio.operations.RoleAssignmentsOperations
:keyword api_version: Api Version. Default value is "7.6-preview.1". Note that overriding this
default value may result in unsupported behavior.
:vartype role_assignments: azure.keyvault.v7_5.aio.operations.RoleAssignmentsOperations
:keyword api_version: Api Version. Default value is "7.5". Note that overriding this default
value may result in unsupported behavior.
:paramtype api_version: str
:keyword int polling_interval: Default waiting time between two polls for LRO operations if no
Retry-After header is present.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ class KeyVaultClientConfiguration: # pylint: disable=too-many-instance-attribut
Note that all parameters used to create this instance are saved as instance
attributes.
:keyword api_version: Api Version. Default value is "7.6-preview.1". Note that overriding this
default value may result in unsupported behavior.
:keyword api_version: Api Version. Default value is "7.5". Note that overriding this default
value may result in unsupported behavior.
:paramtype api_version: str
"""

def __init__(self, **kwargs: Any) -> None:
api_version: str = kwargs.pop("api_version", "7.6-preview.1")
api_version: str = kwargs.pop("api_version", "7.5")

self.api_version = api_version
kwargs.setdefault("sdk_moniker", "keyvault/{}".format(VERSION))
Expand Down
Loading

0 comments on commit 30518a7

Please sign in to comment.