Skip to content

fixed resource reference - #98

Merged
ammokhov merged 1 commit into
aws-cloudformation:masterfrom
ammokhov:codegen-fix-96
Jun 16, 2020
Merged

ammokhov merged 1 commit into
aws-cloudformation:masterfrom
ammokhov:codegen-fix-96

Conversation

@ammokhov

@ammokhov ammokhov commented Jun 1, 2020

Copy link
Copy Markdown
Contributor

Issue #, if available:

Description of changes:

Added resolved type reference. used example from #96
result:

@dataclass
class ResourceModel(BaseModel):
    InstanceId: Optional[str]
    Cloud9InstancePolicy: Optional["_Cloud9InstancePolicy"]

    @classmethod
    def _deserialize(
        cls: Type["_ResourceModel"],
        json_data: Optional[Mapping[str, Any]],
    ) -> Optional["_ResourceModel"]:
        if not json_data:
            return None
        dataclasses = {n: o for n, o in getmembers(sys.modules[__name__]) if isclass(o)}
        recast_object(cls, json_data, dataclasses)
        return cls(
            InstanceId=json_data.get("InstanceId"),
            Cloud9InstancePolicy=Cloud9InstancePolicy._deserialize(json_data.get("Cloud9InstancePolicy")),
        )


# work around possible type aliasing issues when variable has same name as a model
_ResourceModel = ResourceModel


@dataclass
class Cloud9InstancePolicy(BaseModel):
    PolicyName: Optional[str]
    Document: Optional["_PolicyDocument"]

    @classmethod
    def _deserialize(
        cls: Type["_Cloud9InstancePolicy"],
        json_data: Optional[Mapping[str, Any]],
    ) -> Optional["_Cloud9InstancePolicy"]:
        if not json_data:
            return None
        return cls(
            PolicyName=json_data.get("PolicyName"),
            Document=PolicyDocument._deserialize(json_data.get("PolicyDocument")),
        )


# work around possible type aliasing issues when variable has same name as a model
_Cloud9InstancePolicy = Cloud9InstancePolicy


@dataclass
class PolicyDocument(BaseModel):
    Version: Optional[str]
    Statement: Optional[Sequence["_PolicyStatement"]]

    @classmethod
    def _deserialize(
        cls: Type["_PolicyDocument"],
        json_data: Optional[Mapping[str, Any]],
    ) -> Optional["_PolicyDocument"]:
        if not json_data:
            return None
        return cls(
            Version=json_data.get("Version"),
            Statement=deserialize_list(json_data.get("PolicyStatement"), PolicyStatement),
        )


# work around possible type aliasing issues when variable has same name as a model
_PolicyDocument = PolicyDocument


@dataclass
class PolicyStatement(BaseModel):
    Effect: Optional[str]
    Action: Optional[Sequence[str]]
    Resource: Optional[Sequence[str]]

    @classmethod
    def _deserialize(
        cls: Type["_PolicyStatement"],
        json_data: Optional[Mapping[str, Any]],
    ) -> Optional["_PolicyStatement"]:
        if not json_data:
            return None
        return cls(
            Effect=json_data.get("Effect"),
            Action=json_data.get("Action"),
            Resource=json_data.get("Resource"),
        )


# work around possible type aliasing issues when variable has same name as a model
_PolicyStatement = PolicyStatement

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@ammokhov ammokhov self-assigned this Jun 1, 2020
@ammokhov ammokhov added the bug Something isn't working label Jun 1, 2020
@ammokhov ammokhov linked an issue Jun 1, 2020 that may be closed by this pull request
@ammokhov
ammokhov merged commit 92b87c3 into aws-cloudformation:master Jun 16, 2020
@ammokhov
ammokhov deleted the codegen-fix-96 branch June 16, 2020 22:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

cfn generate references incorrect class name

3 participants