Skip to content

Commit

Permalink
CodeGen from PR 21523 in Azure/azure-rest-api-specs
Browse files Browse the repository at this point in the history
Merge 506b3e0ac73cc9fe0b435a06b3553ba703f21027 into a60468a0c5e2beb054680ae488fb9f92699f0a0d
  • Loading branch information
SDKAuto committed Mar 1, 2023
1 parent 4e6b795 commit a424858
Show file tree
Hide file tree
Showing 54 changed files with 399 additions and 320 deletions.
6 changes: 3 additions & 3 deletions sdk/rdbms/azure-mgmt-rdbms/_meta.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"commit": "8739a0a2ac54b0d8f8c98da22ee6b446c53b09a7",
"commit": "06e2c506f744da8c380729a7fb34e905d577813f",
"repository_url": "https://github.com/Azure/azure-rest-api-specs",
"autorest": "3.9.2",
"use": [
"@autorest/python@6.2.7",
"@autorest/python@6.4.0",
"@autorest/modelerfour@4.24.3"
],
"autorest_command": "autorest specification/postgresql/resource-manager/readme.md --generate-sample=True --include-x-ms-examples-original-file=True --python --python-sdks-folder=/home/vsts/work/1/azure-sdk-for-python/sdk --use=@autorest/python@6.2.7 --use=@autorest/modelerfour@4.24.3 --version=3.9.2 --version-tolerant=False",
"autorest_command": "autorest specification/postgresql/resource-manager/readme.md --generate-sample=True --include-x-ms-examples-original-file=True --python --python-sdks-folder=/mnt/vss/_work/1/s/azure-sdk-for-python/sdk --use=@autorest/python@6.4.0 --use=@autorest/modelerfour@4.24.3 --version=3.9.2 --version-tolerant=False",
"readme": "specification/postgresql/resource-manager/readme.md"
}
Original file line number Diff line number Diff line change
Expand Up @@ -185,5 +185,5 @@ def __enter__(self) -> "PostgreSQLManagementClient":
self._client.__enter__()
return self

def __exit__(self, *exc_details) -> None:
def __exit__(self, *exc_details: Any) -> None:
self._client.__exit__(*exc_details)
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,22 @@
import re
import sys
import codecs
from typing import Optional, Union, AnyStr, IO, Mapping
from typing import (
Dict,
Any,
cast,
Optional,
Union,
AnyStr,
IO,
Mapping,
Callable,
TypeVar,
MutableMapping,
Type,
List,
Mapping,
)

try:
from urllib import quote # type: ignore
Expand All @@ -48,12 +63,14 @@

import isodate # type: ignore

from typing import Dict, Any, cast

from azure.core.exceptions import DeserializationError, SerializationError, raise_with_traceback
from azure.core.serialization import NULL as AzureCoreNull

_BOM = codecs.BOM_UTF8.decode(encoding="utf-8")

ModelType = TypeVar("ModelType", bound="Model")
JSON = MutableMapping[str, Any]


class RawDeserializer:

Expand Down Expand Up @@ -277,8 +294,8 @@ class Model(object):
_attribute_map: Dict[str, Dict[str, Any]] = {}
_validation: Dict[str, Dict[str, Any]] = {}

def __init__(self, **kwargs):
self.additional_properties = {}
def __init__(self, **kwargs: Any) -> None:
self.additional_properties: Dict[str, Any] = {}
for k in kwargs:
if k not in self._attribute_map:
_LOGGER.warning("%s is not a known attribute of class %s and will be ignored", k, self.__class__)
Expand All @@ -287,25 +304,25 @@ def __init__(self, **kwargs):
else:
setattr(self, k, kwargs[k])

def __eq__(self, other):
def __eq__(self, other: Any) -> bool:
"""Compare objects by comparing all attributes."""
if isinstance(other, self.__class__):
return self.__dict__ == other.__dict__
return False

def __ne__(self, other):
def __ne__(self, other: Any) -> bool:
"""Compare objects by comparing all attributes."""
return not self.__eq__(other)

def __str__(self):
def __str__(self) -> str:
return str(self.__dict__)

@classmethod
def enable_additional_properties_sending(cls):
def enable_additional_properties_sending(cls) -> None:
cls._attribute_map["additional_properties"] = {"key": "", "type": "{object}"}

@classmethod
def is_xml_model(cls):
def is_xml_model(cls) -> bool:
try:
cls._xml_map # type: ignore
except AttributeError:
Expand All @@ -322,7 +339,7 @@ def _create_xml_node(cls):

return _create_xml_node(xml_map.get("name", cls.__name__), xml_map.get("prefix", None), xml_map.get("ns", None))

def serialize(self, keep_readonly=False, **kwargs):
def serialize(self, keep_readonly: bool = False, **kwargs: Any) -> JSON:
"""Return the JSON that would be sent to azure from this model.
This is an alias to `as_dict(full_restapi_key_transformer, keep_readonly=False)`.
Expand All @@ -336,8 +353,13 @@ def serialize(self, keep_readonly=False, **kwargs):
serializer = Serializer(self._infer_class_models())
return serializer._serialize(self, keep_readonly=keep_readonly, **kwargs)

def as_dict(self, keep_readonly=True, key_transformer=attribute_transformer, **kwargs):
"""Return a dict that can be JSONify using json.dump.
def as_dict(
self,
keep_readonly: bool = True,
key_transformer: Callable[[str, Dict[str, Any], Any], Any] = attribute_transformer,
**kwargs: Any
) -> JSON:
"""Return a dict that can be serialized using json.dump.
Advanced usage might optionally use a callback as parameter:
Expand Down Expand Up @@ -384,7 +406,7 @@ def _infer_class_models(cls):
return client_models

@classmethod
def deserialize(cls, data, content_type=None):
def deserialize(cls: Type[ModelType], data: Any, content_type: Optional[str] = None) -> ModelType:
"""Parse a str using the RestAPI syntax and return a model.
:param str data: A str using RestAPI structure. JSON by default.
Expand All @@ -396,7 +418,12 @@ def deserialize(cls, data, content_type=None):
return deserializer(cls.__name__, data, content_type=content_type)

@classmethod
def from_dict(cls, data, key_extractors=None, content_type=None):
def from_dict(
cls: Type[ModelType],
data: Any,
key_extractors: Optional[Callable[[str, Dict[str, Any], Any], Any]] = None,
content_type: Optional[str] = None,
) -> ModelType:
"""Parse a dict using given key extractor return a model.
By default consider key
Expand All @@ -409,8 +436,8 @@ def from_dict(cls, data, key_extractors=None, content_type=None):
:raises: DeserializationError if something went wrong
"""
deserializer = Deserializer(cls._infer_class_models())
deserializer.key_extractors = (
[
deserializer.key_extractors = ( # type: ignore
[ # type: ignore
attribute_key_case_insensitive_extractor,
rest_key_case_insensitive_extractor,
last_rest_key_case_insensitive_extractor,
Expand Down Expand Up @@ -518,7 +545,7 @@ class Serializer(object):
"multiple": lambda x, y: x % y != 0,
}

def __init__(self, classes=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 @@ -534,7 +561,7 @@ def __init__(self, classes=None):
"[]": self.serialize_iter,
"{}": self.serialize_dict,
}
self.dependencies = 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 @@ -626,8 +653,7 @@ def _serialize(self, target_obj, data_type=None, **kwargs):
serialized.append(local_node) # type: ignore
else: # JSON
for k in reversed(keys): # type: ignore
unflattened = {k: new_attr}
new_attr = unflattened
new_attr = {k: new_attr}

_new_attr = new_attr
_serialized = serialized
Expand Down Expand Up @@ -656,8 +682,8 @@ def body(self, data, data_type, **kwargs):
"""

# Just in case this is a dict
internal_data_type = data_type.strip("[]{}")
internal_data_type = self.dependencies.get(internal_data_type, None)
internal_data_type_str = data_type.strip("[]{}")
internal_data_type = self.dependencies.get(internal_data_type_str, None)
try:
is_xml_model_serialization = kwargs["is_xml"]
except KeyError:
Expand Down Expand Up @@ -777,6 +803,8 @@ def serialize_data(self, data, data_type, **kwargs):
raise ValueError("No value for given attribute")

try:
if data is AzureCoreNull:
return None
if data_type in self.basic_types.values():
return self.serialize_basic(data, data_type, **kwargs)

Expand Down Expand Up @@ -1161,7 +1189,8 @@ def rest_key_extractor(attr, attr_desc, data):
working_data = data

while "." in key:
dict_keys = _FLATTEN.split(key)
# Need the cast, as for some reasons "split" is typed as list[str | Any]
dict_keys = cast(List[str], _FLATTEN.split(key))
if len(dict_keys) == 1:
key = _decode_attribute_map_key(dict_keys[0])
break
Expand Down Expand Up @@ -1332,7 +1361,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=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 @@ -1352,7 +1381,7 @@ def __init__(self, classes=None):
"duration": (isodate.Duration, datetime.timedelta),
"iso-8601": (datetime.datetime),
}
self.dependencies = 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 @@ -1471,7 +1500,7 @@ def _classify_target(self, target, data):
Once classification has been determined, initialize object.
:param str target: The target object type to deserialize to.
:param str/dict data: The response data to deseralize.
:param str/dict data: The response data to deserialize.
"""
if target is None:
return None, None
Expand All @@ -1486,7 +1515,7 @@ def _classify_target(self, target, data):
target = target._classify(data, self.dependencies)
except AttributeError:
pass # Target is not a Model, no classify
return target, target.__class__.__name__
return target, target.__class__.__name__ # type: ignore

def failsafe_deserialize(self, target_obj, data, content_type=None):
"""Ignores any errors encountered in deserialization,
Expand All @@ -1496,7 +1525,7 @@ def failsafe_deserialize(self, target_obj, data, content_type=None):
a deserialization error.
:param str target_obj: The target object type to deserialize to.
:param str/dict data: The response data to deseralize.
:param str/dict data: The response data to deserialize.
:param str content_type: Swagger "produces" if available.
"""
try:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from typing import List, cast

from azure.core.pipeline.transport import HttpRequest


Expand All @@ -22,6 +24,7 @@ def _format_url_section(template, **kwargs):
try:
return template.format(**kwargs)
except KeyError as key:
formatted_components = template.split("/")
# Need the cast, as for some reasons "split" is typed as list[str | Any]
formatted_components = cast(List[str], template.split("/"))
components = [c for c in formatted_components if "{}".format(key.args[0]) not in c]
template = "/".join(components)
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

VERSION = "10.2.0b6"
VERSION = "1.0.0b1"
Original file line number Diff line number Diff line change
Expand Up @@ -186,5 +186,5 @@ async def __aenter__(self) -> "PostgreSQLManagementClient":
await self._client.__aenter__()
return self

async def __aexit__(self, *exc_details) -> None:
async def __aexit__(self, *exc_details: Any) -> None:
await self._client.__aexit__(*exc_details)
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ async def execute(
"""Check the availability of name for resource.
:param name_availability_request: The required parameters for checking if resource name is
available. Is either a model type or a IO type. Required.
available. Is either a NameAvailabilityRequest type or a IO type. Required.
:type name_availability_request: ~azure.mgmt.rdbms.postgresql.models.NameAvailabilityRequest or
IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ async def begin_create_or_update(
:param configuration_name: The name of the server configuration. Required.
:type configuration_name: str
:param parameters: The required parameters for updating a server configuration. Is either a
model type or a IO type. Required.
Configuration type or a IO type. Required.
:type parameters: ~azure.mgmt.rdbms.postgresql.models.Configuration or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ async def begin_create_or_update(
:param database_name: The name of the database. Required.
:type database_name: str
:param parameters: The required parameters for creating or updating a database. Is either a
model type or a IO type. Required.
Database type or a IO type. Required.
:type parameters: ~azure.mgmt.rdbms.postgresql.models.Database or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ async def begin_create_or_update(
:param firewall_rule_name: The name of the server firewall rule. Required.
:type firewall_rule_name: str
:param parameters: The required parameters for creating or updating a firewall rule. Is either
a model type or a IO type. Required.
a FirewallRule type or a IO type. Required.
:type parameters: ~azure.mgmt.rdbms.postgresql.models.FirewallRule or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ async def begin_create_or_update(
:type server_name: str
:param private_endpoint_connection_name: Required.
:type private_endpoint_connection_name: str
:param parameters: Is either a model type or a IO type. Required.
:param parameters: Is either a PrivateEndpointConnection type or a IO type. Required.
:type parameters: ~azure.mgmt.rdbms.postgresql.models.PrivateEndpointConnection or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
Expand Down Expand Up @@ -658,7 +658,7 @@ async def begin_update_tags(
:param private_endpoint_connection_name: Required.
:type private_endpoint_connection_name: str
:param parameters: Parameters supplied to the Update private endpoint connection Tags
operation. Is either a model type or a IO type. Required.
operation. Is either a TagsObject type or a IO type. Required.
:type parameters: ~azure.mgmt.rdbms.postgresql.models.TagsObject or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ async def begin_create_or_update(
:param server_name: The name of the server. Required.
:type server_name: str
:param properties: The required parameters for creating or updating an AAD server
administrator. Is either a model type or a IO type. Required.
administrator. Is either a ServerAdministratorResource type or a IO type. Required.
:type properties: ~azure.mgmt.rdbms.postgresql.models.ServerAdministratorResource or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -376,8 +376,8 @@ async def begin_create_or_update(
:param resource_group_name: The name of the resource group. The name is case insensitive.
Required.
:type resource_group_name: str
:param parameters: The requested PostgreSQL Server key resource state. Is either a model type
or a IO type. Required.
:param parameters: The requested PostgreSQL Server key resource state. Is either a ServerKey
type or a IO type. Required.
:type parameters: ~azure.mgmt.rdbms.postgresql.models.ServerKey or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,8 @@ async def begin_list_update_configurations(
:type resource_group_name: str
:param server_name: The name of the server. Required.
:type server_name: str
:param value: The parameters for updating a list of server configuration. Is either a model
type or a IO type. Required.
:param value: The parameters for updating a list of server configuration. Is either a
ConfigurationListResult type or a IO type. Required.
:type value: ~azure.mgmt.rdbms.postgresql.models.ConfigurationListResult or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,8 @@ async def begin_create_or_update(
:param security_alert_policy_name: The name of the threat detection policy. "Default" Required.
:type security_alert_policy_name: str or
~azure.mgmt.rdbms.postgresql.models.SecurityAlertPolicyName
:param parameters: The server security alert policy. Is either a model type or a IO type.
Required.
:param parameters: The server security alert policy. Is either a ServerSecurityAlertPolicy type
or a IO type. Required.
:type parameters: ~azure.mgmt.rdbms.postgresql.models.ServerSecurityAlertPolicy or IO
:keyword content_type: Body Parameter content-type. Known values are: 'application/json'.
Default value is None.
Expand Down
Loading

0 comments on commit a424858

Please sign in to comment.