Server Test Python

Server Test Python

rev. aa5c29a987f7f91566c4691a6049ccdb8d69ba9a

Files changed:

tmp-codegen-diff/codegen-server-test-python/constraints_without_public_constrained_types/rust-server-codegen-python/src/output.rs

@@ -971,971 +1072,1072 @@
  991    991   
    }
  992    992   
}
  993    993   
impl QueryParamsTargetingLengthMapOperationOutput {
  994    994   
    /// Creates a new builder-style object to manufacture [`QueryParamsTargetingLengthMapOperationOutput`](crate::output::QueryParamsTargetingLengthMapOperationOutput).
  995    995   
    pub fn builder() -> crate::output::query_params_targeting_length_map_operation_output::Builder {
  996    996   
        crate::output::query_params_targeting_length_map_operation_output::Builder::default()
  997    997   
    }
  998    998   
}
  999    999   
 1000   1000   
#[::pyo3::pyclass]
 1001         -
/// :param nested typing.Optional\[constraints_without_public_constrained_types.model.RecursiveShapesInputOutputNested1\]:
 1002   1001   
/// :param recursive_list typing.List\[constraints_without_public_constrained_types.model.RecursiveShapesInputOutputNested1\]:
        1002  +
/// :param nested typing.Optional\[constraints_without_public_constrained_types.model.RecursiveShapesInputOutputNested1\]:
 1003   1003   
/// :rtype None:
 1004   1004   
#[allow(missing_docs)] // documentation missing in model
 1005   1005   
#[derive(
 1006   1006   
    ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
 1007   1007   
)]
 1008   1008   
pub struct ConstrainedRecursiveShapesOperationOutput {
 1009   1009   
    #[pyo3(get, set)]
 1010   1010   
    /// :type typing.Optional\[constraints_without_public_constrained_types.model.RecursiveShapesInputOutputNested1\]:
 1011   1011   
    #[allow(missing_docs)] // documentation missing in model
 1012   1012   
    pub nested: ::std::option::Option<crate::model::RecursiveShapesInputOutputNested1>,
 1013   1013   
    #[pyo3(get, set)]
 1014   1014   
    /// :type typing.List\[constraints_without_public_constrained_types.model.RecursiveShapesInputOutputNested1\]:
 1015   1015   
    #[allow(missing_docs)] // documentation missing in model
 1016   1016   
    pub recursive_list: ::std::vec::Vec<crate::model::RecursiveShapesInputOutputNested1>,
 1017   1017   
}
 1018   1018   
impl ConstrainedRecursiveShapesOperationOutput {
 1019   1019   
    #[allow(missing_docs)] // documentation missing in model
 1020   1020   
    pub fn nested(
 1021   1021   
        &self,
 1022   1022   
    ) -> ::std::option::Option<&crate::model::RecursiveShapesInputOutputNested1> {
 1023   1023   
        self.nested.as_ref()
 1024   1024   
    }
 1025   1025   
    #[allow(missing_docs)] // documentation missing in model
 1026   1026   
    pub fn recursive_list(&self) -> &[crate::model::RecursiveShapesInputOutputNested1] {
 1027   1027   
        use std::ops::Deref;
 1028   1028   
        self.recursive_list.deref()
 1029   1029   
    }
 1030   1030   
}
 1031   1031   
#[allow(clippy::new_without_default)]
 1032   1032   
#[allow(clippy::too_many_arguments)]
 1033   1033   
#[::pyo3::pymethods]
 1034   1034   
impl ConstrainedRecursiveShapesOperationOutput {
 1035   1035   
    #[new]
 1036   1036   
    pub fn new(
 1037         -
        nested: ::std::option::Option<crate::model::RecursiveShapesInputOutputNested1>,
 1038   1037   
        recursive_list: ::std::vec::Vec<crate::model::RecursiveShapesInputOutputNested1>,
        1038  +
        nested: ::std::option::Option<crate::model::RecursiveShapesInputOutputNested1>,
 1039   1039   
    ) -> Self {
 1040   1040   
        Self {
 1041         -
            nested,
 1042   1041   
            recursive_list,
        1042  +
            nested,
 1043   1043   
        }
 1044   1044   
    }
 1045   1045   
    fn __repr__(&self) -> String {
 1046   1046   
        format!("{self:?}")
 1047   1047   
    }
 1048   1048   
    fn __str__(&self) -> String {
 1049   1049   
        format!("{self:?}")
 1050   1050   
    }
 1051   1051   
}
 1052   1052   
impl<'source> ::pyo3::FromPyObject<'source>
@@ -1111,1111 +1192,1192 @@
 1131   1131   
}
 1132   1132   
 1133   1133   
#[::pyo3::pyclass]
 1134   1134   
/// :param length_string_label str:
 1135   1135   
/// :param range_integer_label int:
 1136   1136   
/// :param range_short_label int:
 1137   1137   
/// :param range_long_label int:
 1138   1138   
/// :param range_byte_label int:
 1139   1139   
/// :param enum_string_label constraints_without_public_constrained_types.model.EnumString:
 1140   1140   
/// :param length_string_header_map typing.Dict\[str, str\]:
 1141         -
/// :param length_string_header typing.Optional\[str\]:
 1142   1141   
/// :param range_integer_header int:
 1143   1142   
/// :param range_short_header int:
 1144   1143   
/// :param range_long_header int:
 1145   1144   
/// :param range_byte_header int:
        1145  +
/// :param range_byte_query int:
        1146  +
/// :param range_short_query int:
        1147  +
/// :param range_integer_query int:
        1148  +
/// :param range_long_query int:
        1149  +
/// :param length_string_header typing.Optional\[str\]:
 1146   1150   
/// :param length_string_set_header typing.Optional\[typing.Set\[str\]\]:
 1147   1151   
/// :param list_length_string_header typing.Optional\[typing.List\[str\]\]:
 1148   1152   
/// :param length_list_pattern_string_header typing.Optional\[typing.List\[str\]\]:
 1149   1153   
/// :param length_set_pattern_string_header typing.Optional\[typing.Set\[str\]\]:
 1150   1154   
/// :param range_byte_set_header typing.Optional\[typing.List\[int\]\]:
 1151   1155   
/// :param range_short_set_header typing.Optional\[typing.List\[int\]\]:
 1152   1156   
/// :param range_integer_set_header typing.Optional\[typing.List\[int\]\]:
 1153   1157   
/// :param range_long_set_header typing.Optional\[typing.List\[int\]\]:
 1154   1158   
/// :param range_byte_list_header typing.Optional\[typing.List\[int\]\]:
 1155   1159   
/// :param range_short_list_header typing.Optional\[typing.List\[int\]\]:
 1156   1160   
/// :param range_integer_list_header typing.Optional\[typing.List\[int\]\]:
 1157   1161   
/// :param range_long_list_header typing.Optional\[typing.List\[int\]\]:
 1158   1162   
/// :param length_string_query typing.Optional\[str\]:
 1159         -
/// :param range_byte_query int:
 1160         -
/// :param range_short_query int:
 1161         -
/// :param range_integer_query int:
 1162         -
/// :param range_long_query int:
 1163   1163   
/// :param enum_string_query typing.Optional\[constraints_without_public_constrained_types.model.EnumString\]:
 1164   1164   
/// :param length_string_list_query typing.Optional\[typing.List\[str\]\]:
 1165   1165   
/// :param length_list_pattern_string_query typing.Optional\[typing.List\[str\]\]:
 1166   1166   
/// :param length_string_set_query typing.Optional\[typing.Set\[str\]\]:
 1167   1167   
/// :param range_byte_list_query typing.Optional\[typing.List\[int\]\]:
 1168   1168   
/// :param range_short_list_query typing.Optional\[typing.List\[int\]\]:
 1169   1169   
/// :param range_integer_list_query typing.Optional\[typing.List\[int\]\]:
 1170   1170   
/// :param range_long_list_query typing.Optional\[typing.List\[int\]\]:
 1171   1171   
/// :param range_byte_set_query typing.Optional\[typing.List\[int\]\]:
 1172   1172   
/// :param range_short_set_query typing.Optional\[typing.List\[int\]\]:
@@ -1522,1522 +1653,1653 @@
 1542   1542   
        length_string_label: ::std::string::String,
 1543   1543   
        range_integer_label: i32,
 1544   1544   
        range_short_label: i16,
 1545   1545   
        range_long_label: i64,
 1546   1546   
        range_byte_label: i8,
 1547   1547   
        enum_string_label: crate::model::EnumString,
 1548   1548   
        length_string_header_map: ::std::collections::HashMap<
 1549   1549   
            ::std::string::String,
 1550   1550   
            ::std::string::String,
 1551   1551   
        >,
 1552         -
        length_string_header: ::std::option::Option<::std::string::String>,
 1553   1552   
        range_integer_header: i32,
 1554   1553   
        range_short_header: i16,
 1555   1554   
        range_long_header: i64,
 1556   1555   
        range_byte_header: i8,
        1556  +
        range_byte_query: i8,
        1557  +
        range_short_query: i16,
        1558  +
        range_integer_query: i32,
        1559  +
        range_long_query: i64,
        1560  +
        length_string_header: ::std::option::Option<::std::string::String>,
 1557   1561   
        length_string_set_header: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
 1558   1562   
        list_length_string_header: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
 1559   1563   
        length_list_pattern_string_header: ::std::option::Option<
 1560   1564   
            ::std::vec::Vec<::std::string::String>,
 1561   1565   
        >,
 1562   1566   
        length_set_pattern_string_header: ::std::option::Option<
 1563   1567   
            ::std::vec::Vec<::std::string::String>,
 1564   1568   
        >,
 1565   1569   
        range_byte_set_header: ::std::option::Option<::std::vec::Vec<i8>>,
 1566   1570   
        range_short_set_header: ::std::option::Option<::std::vec::Vec<i16>>,
 1567   1571   
        range_integer_set_header: ::std::option::Option<::std::vec::Vec<i32>>,
 1568   1572   
        range_long_set_header: ::std::option::Option<::std::vec::Vec<i64>>,
 1569   1573   
        range_byte_list_header: ::std::option::Option<::std::vec::Vec<i8>>,
 1570   1574   
        range_short_list_header: ::std::option::Option<::std::vec::Vec<i16>>,
 1571   1575   
        range_integer_list_header: ::std::option::Option<::std::vec::Vec<i32>>,
 1572   1576   
        range_long_list_header: ::std::option::Option<::std::vec::Vec<i64>>,
 1573   1577   
        length_string_query: ::std::option::Option<::std::string::String>,
 1574         -
        range_byte_query: i8,
 1575         -
        range_short_query: i16,
 1576         -
        range_integer_query: i32,
 1577         -
        range_long_query: i64,
 1578   1578   
        enum_string_query: ::std::option::Option<crate::model::EnumString>,
 1579   1579   
        length_string_list_query: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
 1580   1580   
        length_list_pattern_string_query: ::std::option::Option<
 1581   1581   
            ::std::vec::Vec<::std::string::String>,
 1582   1582   
        >,
 1583   1583   
        length_string_set_query: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
 1584   1584   
        range_byte_list_query: ::std::option::Option<::std::vec::Vec<i8>>,
 1585   1585   
        range_short_list_query: ::std::option::Option<::std::vec::Vec<i16>>,
 1586   1586   
        range_integer_list_query: ::std::option::Option<::std::vec::Vec<i32>>,
 1587   1587   
        range_long_list_query: ::std::option::Option<::std::vec::Vec<i64>>,
 1588   1588   
        range_byte_set_query: ::std::option::Option<::std::vec::Vec<i8>>,
 1589   1589   
        range_short_set_query: ::std::option::Option<::std::vec::Vec<i16>>,
 1590   1590   
        range_integer_set_query: ::std::option::Option<::std::vec::Vec<i32>>,
 1591   1591   
        range_long_set_query: ::std::option::Option<::std::vec::Vec<i64>>,
 1592   1592   
        enum_string_list_query: ::std::option::Option<::std::vec::Vec<crate::model::EnumString>>,
 1593   1593   
    ) -> Self {
 1594   1594   
        Self {
 1595   1595   
            length_string_label,
 1596   1596   
            range_integer_label,
 1597   1597   
            range_short_label,
 1598   1598   
            range_long_label,
 1599   1599   
            range_byte_label,
 1600   1600   
            enum_string_label,
 1601   1601   
            length_string_header_map,
 1602         -
            length_string_header,
 1603   1602   
            range_integer_header,
 1604   1603   
            range_short_header,
 1605   1604   
            range_long_header,
 1606   1605   
            range_byte_header,
        1606  +
            range_byte_query,
        1607  +
            range_short_query,
        1608  +
            range_integer_query,
        1609  +
            range_long_query,
        1610  +
            length_string_header,
 1607   1611   
            length_string_set_header,
 1608   1612   
            list_length_string_header,
 1609   1613   
            length_list_pattern_string_header,
 1610   1614   
            length_set_pattern_string_header,
 1611   1615   
            range_byte_set_header,
 1612   1616   
            range_short_set_header,
 1613   1617   
            range_integer_set_header,
 1614   1618   
            range_long_set_header,
 1615   1619   
            range_byte_list_header,
 1616   1620   
            range_short_list_header,
 1617   1621   
            range_integer_list_header,
 1618   1622   
            range_long_list_header,
 1619   1623   
            length_string_query,
 1620         -
            range_byte_query,
 1621         -
            range_short_query,
 1622         -
            range_integer_query,
 1623         -
            range_long_query,
 1624   1624   
            enum_string_query,
 1625   1625   
            length_string_list_query,
 1626   1626   
            length_list_pattern_string_query,
 1627   1627   
            length_string_set_query,
 1628   1628   
            range_byte_list_query,
 1629   1629   
            range_short_list_query,
 1630   1630   
            range_integer_list_query,
 1631   1631   
            range_long_list_query,
 1632   1632   
            range_byte_set_query,
 1633   1633   
            range_short_set_query,

tmp-codegen-diff/codegen-server-test-python/constraints_without_public_constrained_types/rust-server-codegen-python/src/python_module_export.rs

@@ -1,1 +33,33 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
#[::pyo3::pymodule]
    3         -
#[::pyo3(name = "constraints_without_public_constrained_types")]
           3  +
#[pyo3(name = "constraints_without_public_constrained_types")]
    4      4   
pub fn python_library(py: ::pyo3::Python<'_>, m: &::pyo3::types::PyModule) -> ::pyo3::PyResult<()> {
    5      5   
    let input = ::pyo3::types::PyModule::new(py, "input")?;
    6      6   
    let output = ::pyo3::types::PyModule::new(py, "output")?;
    7      7   
    let error = ::pyo3::types::PyModule::new(py, "error")?;
    8      8   
    error.add_class::<crate::error::InternalServerError>()?;
    9      9   
    error.add_class::<crate::error::EventStreamErrorMessage>()?;
   10     10   
    error.add_class::<crate::error::ValidationException>()?;
   11     11   
    let model = ::pyo3::types::PyModule::new(py, "model")?;
   12     12   
    model.add_class::<crate::model::ValidationExceptionField>()?;
   13     13   
    output.add_class::<crate::output::EventStreamsOperationOutput>()?;

tmp-codegen-diff/codegen-server-test-python/ebs/rust-server-codegen-python/Cargo.toml

@@ -12,12 +66,66 @@
   32     32   
version = "0.3"
   33     33   
[dependencies.nom]
   34     34   
version = "7"
   35     35   
[dependencies.parking_lot]
   36     36   
version = "0.12"
   37     37   
[dependencies.percent-encoding]
   38     38   
version = "2.0.0"
   39     39   
[dependencies.pin-project-lite]
   40     40   
version = "0.2"
   41     41   
[dependencies.pyo3]
   42         -
version = "0.18"
          42  +
version = "0.20"
   43     43   
[dependencies.pyo3-asyncio]
   44         -
version = "0.18"
          44  +
version = "0.20"
   45     45   
features = ["attributes", "tokio-runtime"]
   46     46   
[dependencies.regex]
   47     47   
version = "1.5.5"
   48     48   
[dependencies.tower]
   49     49   
version = "0.4"
   50     50   
[dependencies.tracing]
   51     51   
version = "0.1"
   52     52   
[dev-dependencies.hyper]
   53     53   
version = "0.14.12"
   54     54   
[dev-dependencies.tokio]

tmp-codegen-diff/codegen-server-test-python/ebs/rust-server-codegen-python/python/ebs/error/__init__.pyi

@@ -1,1 +46,46 @@
    6      6   
    <p>You do not have sufficient access to perform this action.</p>
    7      7   
    """
    8      8   
    9      9   
    message: typing.Optional[str]
   10     10   
   11     11   
    reason: ebs.model.AccessDeniedExceptionReason
   12     12   
    """
   13     13   
    <p>The reason for the exception.</p>
   14     14   
    """
   15     15   
   16         -
    def __init__(self, message: typing.Optional[str] = ..., reason: ebs.model.AccessDeniedExceptionReason) -> None:
          16  +
    def __init__(self, reason: ebs.model.AccessDeniedExceptionReason, message: typing.Optional[str] = ...) -> None:
   17     17   
        ...
   18     18   
   19     19   
   20     20   
class ConcurrentLimitExceededException(Exception):
   21     21   
    """
   22     22   
    <p>You have reached the limit for concurrent API requests. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapi-performance">Optimizing performance of the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
   23     23   
    """
   24     24   
   25     25   
    message: typing.Optional[str]
   26     26   

tmp-codegen-diff/codegen-server-test-python/ebs/rust-server-codegen-python/python/ebs/input/__init__.pyi

@@ -2,2 +62,62 @@
   22     22   
    checksum_algorithm: typing.Optional[ebs.model.ChecksumAlgorithm]
   23     23   
    """
   24     24   
    <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
   25     25   
    """
   26     26   
   27     27   
    snapshot_id: str
   28     28   
    """
   29     29   
    <p>The ID of the snapshot.</p>
   30     30   
    """
   31     31   
   32         -
    def __init__(self, changed_blocks_count: int, checksum_aggregation_method: typing.Optional[ebs.model.ChecksumAggregationMethod] = ..., checksum_algorithm: typing.Optional[ebs.model.ChecksumAlgorithm] = ..., snapshot_id: str, checksum: typing.Optional[str] = ...) -> None:
          32  +
    def __init__(self, changed_blocks_count: int, snapshot_id: str, checksum_aggregation_method: typing.Optional[ebs.model.ChecksumAggregationMethod] = ..., checksum_algorithm: typing.Optional[ebs.model.ChecksumAlgorithm] = ..., checksum: typing.Optional[str] = ...) -> None:
   33     33   
        ...
   34     34   
   35     35   
   36     36   
class GetSnapshotBlockInput:
   37     37   
    block_index: int
   38     38   
    """
   39     39   
    <p>The block index of the block from which to get data.</p>
   40     40   
    <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
   41     41   
    """
   42     42   
@@ -84,84 +219,219 @@
  104    104   
    snapshot_id: str
  105    105   
    """
  106    106   
    <p>The ID of the snapshot from which to get block indexes and block tokens.</p>
  107    107   
    """
  108    108   
  109    109   
    starting_block_index: typing.Optional[int]
  110    110   
    """
  111    111   
    <p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p>
  112    112   
    """
  113    113   
  114         -
    def __init__(self, max_results: typing.Optional[int] = ..., starting_block_index: typing.Optional[int] = ..., next_token: typing.Optional[str] = ..., snapshot_id: str) -> None:
         114  +
    def __init__(self, snapshot_id: str, max_results: typing.Optional[int] = ..., starting_block_index: typing.Optional[int] = ..., next_token: typing.Optional[str] = ...) -> None:
  115    115   
        ...
  116    116   
  117    117   
  118    118   
class PutSnapshotBlockInput:
  119    119   
    block_data: ebs.types.ByteStream
  120    120   
    """
  121    121   
    <p>The data to write to the block.</p>
  122    122   
    <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
  123    123   
    """
  124    124   
  125    125   
    block_index: int
  126    126   
    """
  127    127   
    <p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p>
  128    128   
    """
  129    129   
  130    130   
    checksum: str
  131    131   
    """
  132    132   
    <p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p>
  133    133   
    """
  134    134   
  135    135   
    checksum_algorithm: ebs.model.ChecksumAlgorithm
  136    136   
    """
  137    137   
    <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
  138    138   
    """
  139    139   
  140    140   
    data_length: int
  141    141   
    """
  142    142   
    <p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p>
  143    143   
    <p>Valid values: <code>524288</code></p>
  144    144   
    """
  145    145   
  146    146   
    progress: typing.Optional[int]
  147    147   
    """
  148    148   
    <p>The progress of the write process, as a percentage.</p>
  149    149   
    """
  150    150   
  151    151   
    snapshot_id: str
  152    152   
    """
  153    153   
    <p>The ID of the snapshot.</p>
  154    154   
    """
  155    155   
  156         -
    def __init__(self, snapshot_id: str, block_index: int, checksum: str, progress: typing.Optional[int] = ..., block_data: ebs.types.ByteStream, data_length: int, checksum_algorithm: ebs.model.ChecksumAlgorithm) -> None:
         156  +
    def __init__(self, snapshot_id: str, block_index: int, checksum: str, block_data: ebs.types.ByteStream, data_length: int, checksum_algorithm: ebs.model.ChecksumAlgorithm, progress: typing.Optional[int] = ...) -> None:
  157    157   
        ...
  158    158   
  159    159   
  160    160   
class StartSnapshotInput:
  161    161   
    client_token: typing.Optional[str]
  162    162   
    """
  163    163   
    <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p>
  164    164   
    <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>
  165    165   
    <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
  166    166   
    """
  167    167   
  168    168   
    description: typing.Optional[str]
  169    169   
    """
  170    170   
    <p>A description for the snapshot.</p>
  171    171   
    """
  172    172   
  173    173   
    encrypted: typing.Optional[bool]
  174    174   
    """
  175    175   
    <p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p>
  176    176   
    <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p>
  177    177   
    <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p>
  178    178   
    <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p>
  179    179   
    <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
  180    180   
    """
  181    181   
  182    182   
    kms_key_arn: typing.Optional[str]
  183    183   
    """
  184    184   
    <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p>
  185    185   
    <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p>
  186    186   
    <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p>
  187    187   
    """
  188    188   
  189    189   
    parent_snapshot_id: typing.Optional[str]
  190    190   
    """
  191    191   
    <p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p>
  192    192   
    <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p>
  193    193   
    """
  194    194   
  195    195   
    tags: typing.Optional[typing.List[ebs.model.Tag]]
  196    196   
    """
  197    197   
    <p>The tags to apply to the snapshot.</p>
  198    198   
    """
  199    199   
  200    200   
    timeout: typing.Optional[int]
  201    201   
    """
  202    202   
    <p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p>
  203    203   
    <ul>
  204    204   
    <li>
  205    205   
    <p>No blocks are written to the snapshot.</p></li>
  206    206   
    <li>
  207    207   
    <p>The snapshot is not completed after writing the last block of data.</p></li>
  208    208   
    </ul>
  209    209   
    <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p>
  210    210   
    """
  211    211   
  212    212   
    volume_size: int
  213    213   
    """
  214    214   
    <p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p>
  215    215   
    """
  216    216   
  217         -
    def __init__(self, timeout: typing.Optional[int] = ..., client_token: typing.Optional[str] = ..., volume_size: int, tags: typing.Optional[typing.List[ebs.model.Tag]] = ..., encrypted: typing.Optional[bool] = ..., kms_key_arn: typing.Optional[str] = ..., parent_snapshot_id: typing.Optional[str] = ..., description: typing.Optional[str] = ...) -> None:
         217  +
    def __init__(self, volume_size: int, timeout: typing.Optional[int] = ..., client_token: typing.Optional[str] = ..., tags: typing.Optional[typing.List[ebs.model.Tag]] = ..., encrypted: typing.Optional[bool] = ..., kms_key_arn: typing.Optional[str] = ..., parent_snapshot_id: typing.Optional[str] = ..., description: typing.Optional[str] = ...) -> None:
  218    218   
        ...
  219    219   

tmp-codegen-diff/codegen-server-test-python/ebs/rust-server-codegen-python/python/ebs/output/__init__.pyi

@@ -6,6 +66,66 @@
   26     26   
    checksum_algorithm: typing.Optional[ebs.model.ChecksumAlgorithm]
   27     27   
    """
   28     28   
    <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
   29     29   
    """
   30     30   
   31     31   
    data_length: typing.Optional[int]
   32     32   
    """
   33     33   
    <p>The size of the data in the block.</p>
   34     34   
    """
   35     35   
   36         -
    def __init__(self, data_length: typing.Optional[int] = ..., checksum_algorithm: typing.Optional[ebs.model.ChecksumAlgorithm] = ..., checksum: typing.Optional[str] = ..., block_data: ebs.types.ByteStream) -> None:
          36  +
    def __init__(self, block_data: ebs.types.ByteStream, data_length: typing.Optional[int] = ..., checksum_algorithm: typing.Optional[ebs.model.ChecksumAlgorithm] = ..., checksum: typing.Optional[str] = ...) -> None:
   37     37   
        ...
   38     38   
   39     39   
   40     40   
class ListChangedBlocksOutput:
   41     41   
    block_size: typing.Optional[int]
   42     42   
    """
   43     43   
    <p>The size of the block.</p>
   44     44   
    """
   45     45   
   46     46   
    changed_blocks: typing.Optional[typing.List[ebs.model.ChangedBlock]]

tmp-codegen-diff/codegen-server-test-python/ebs/rust-server-codegen-python/src/error.rs

@@ -570,570 +662,662 @@
  590    590   
}
  591    591   
impl ::std::error::Error for ConflictException {}
  592    592   
impl ConflictException {
  593    593   
    /// Creates a new builder-style object to manufacture [`ConflictException`](crate::error::ConflictException).
  594    594   
    pub fn builder() -> crate::error::conflict_exception::Builder {
  595    595   
        crate::error::conflict_exception::Builder::default()
  596    596   
    }
  597    597   
}
  598    598   
  599    599   
#[::pyo3::pyclass(extends = ::pyo3::exceptions::PyException)]
  600         -
/// :param message typing.Optional\[str\]:
  601    600   
/// :param reason ebs.model.AccessDeniedExceptionReason:
         601  +
/// :param message typing.Optional\[str\]:
  602    602   
/// :rtype None:
  603    603   
/// <p>You do not have sufficient access to perform this action.</p>
  604    604   
#[derive(
  605    605   
    ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
  606    606   
)]
  607    607   
pub struct AccessDeniedException {
  608    608   
    #[pyo3(get, set)]
  609    609   
    /// :type typing.Optional\[str\]:
  610    610   
    #[allow(missing_docs)] // documentation missing in model
  611    611   
    pub message: ::std::option::Option<::std::string::String>,
  612    612   
    #[pyo3(get, set)]
  613    613   
    /// :type ebs.model.AccessDeniedExceptionReason:
  614    614   
    /// <p>The reason for the exception.</p>
  615    615   
    pub reason: crate::model::AccessDeniedExceptionReason,
  616    616   
}
  617    617   
impl AccessDeniedException {
  618    618   
    /// <p>The reason for the exception.</p>
  619    619   
    pub fn reason(&self) -> &crate::model::AccessDeniedExceptionReason {
  620    620   
        &self.reason
  621    621   
    }
  622    622   
}
  623    623   
#[allow(clippy::new_without_default)]
  624    624   
#[allow(clippy::too_many_arguments)]
  625    625   
#[::pyo3::pymethods]
  626    626   
impl AccessDeniedException {
  627    627   
    #[new]
  628    628   
    pub fn new(
  629         -
        message: ::std::option::Option<::std::string::String>,
  630    629   
        reason: crate::model::AccessDeniedExceptionReason,
         630  +
        message: ::std::option::Option<::std::string::String>,
  631    631   
    ) -> Self {
  632         -
        Self { message, reason }
         632  +
        Self { reason, message }
  633    633   
    }
  634    634   
    fn __repr__(&self) -> String {
  635    635   
        format!("{self:?}")
  636    636   
    }
  637    637   
    fn __str__(&self) -> String {
  638    638   
        format!("{self:?}")
  639    639   
    }
  640    640   
}
  641    641   
impl AccessDeniedException {
  642    642   
    /// Returns the error message.

tmp-codegen-diff/codegen-server-test-python/ebs/rust-server-codegen-python/src/input.rs

@@ -1,1 +35,35 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
#[::pyo3::pyclass]
           3  +
/// :param volume_size int:
    3      4   
/// :param timeout typing.Optional\[int\]:
    4      5   
/// :param client_token typing.Optional\[str\]:
    5         -
/// :param volume_size int:
    6      6   
/// :param tags typing.Optional\[typing.List\[ebs.model.Tag\]\]:
    7      7   
/// :param encrypted typing.Optional\[bool\]:
    8      8   
/// :param kms_key_arn typing.Optional\[str\]:
    9      9   
/// :param parent_snapshot_id typing.Optional\[str\]:
   10     10   
/// :param description typing.Optional\[str\]:
   11     11   
/// :rtype None:
   12     12   
#[allow(missing_docs)] // documentation missing in model
   13     13   
#[derive(::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::hash::Hash)]
   14     14   
pub struct StartSnapshotInput {
   15     15   
    #[pyo3(get, set)]
@@ -104,104 +219,219 @@
  124    124   
        formatter.field("description", &self.description);
  125    125   
        formatter.finish()
  126    126   
    }
  127    127   
}
  128    128   
#[allow(clippy::new_without_default)]
  129    129   
#[allow(clippy::too_many_arguments)]
  130    130   
#[::pyo3::pymethods]
  131    131   
impl StartSnapshotInput {
  132    132   
    #[new]
  133    133   
    pub fn new(
         134  +
        volume_size: i64,
  134    135   
        timeout: ::std::option::Option<i32>,
  135    136   
        client_token: ::std::option::Option<::std::string::String>,
  136         -
        volume_size: i64,
  137    137   
        tags: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
  138    138   
        encrypted: ::std::option::Option<bool>,
  139    139   
        kms_key_arn: ::std::option::Option<::std::string::String>,
  140    140   
        parent_snapshot_id: ::std::option::Option<::std::string::String>,
  141    141   
        description: ::std::option::Option<::std::string::String>,
  142    142   
    ) -> Self {
  143    143   
        Self {
         144  +
            volume_size,
  144    145   
            timeout,
  145    146   
            client_token,
  146         -
            volume_size,
  147    147   
            tags,
  148    148   
            encrypted,
  149    149   
            kms_key_arn,
  150    150   
            parent_snapshot_id,
  151    151   
            description,
  152    152   
        }
  153    153   
    }
  154    154   
    fn __repr__(&self) -> String {
  155    155   
        format!("{self:?}")
  156    156   
    }
  157    157   
    fn __str__(&self) -> String {
  158    158   
        format!("{self:?}")
  159    159   
    }
  160    160   
}
  161    161   
impl<'source> ::pyo3::FromPyObject<'source> for std::boxed::Box<StartSnapshotInput> {
  162    162   
    fn extract(ob: &'source ::pyo3::PyAny) -> ::pyo3::PyResult<Self> {
  163    163   
        ob.extract::<StartSnapshotInput>().map(Box::new)
  164    164   
    }
  165    165   
}
  166    166   
  167    167   
impl ::pyo3::IntoPy<::pyo3::PyObject> for std::boxed::Box<StartSnapshotInput> {
  168    168   
    fn into_py(self, py: ::pyo3::Python<'_>) -> ::pyo3::PyObject {
  169    169   
        (*self).into_py(py)
  170    170   
    }
  171    171   
}
  172    172   
impl crate::constrained::Constrained for crate::input::StartSnapshotInput {
  173    173   
    type Unconstrained = crate::input::start_snapshot_input_internal::Builder;
  174    174   
}
  175    175   
impl StartSnapshotInput {
  176    176   
    /// Creates a new builder-style object to manufacture [`StartSnapshotInput`](crate::input::StartSnapshotInput).
  177    177   
    pub fn builder() -> crate::input::start_snapshot_input::Builder {
  178    178   
        crate::input::start_snapshot_input::Builder::default()
  179    179   
    }
  180    180   
}
  181    181   
  182    182   
#[::pyo3::pyclass]
  183    183   
/// :param snapshot_id str:
  184    184   
/// :param block_index int:
  185    185   
/// :param checksum str:
  186         -
/// :param progress typing.Optional\[int\]:
  187    186   
/// :param block_data ebs.types.ByteStream:
  188    187   
/// :param data_length int:
  189    188   
/// :param checksum_algorithm ebs.model.ChecksumAlgorithm:
         189  +
/// :param progress typing.Optional\[int\]:
  190    190   
/// :rtype None:
  191    191   
#[allow(missing_docs)] // documentation missing in model
  192    192   
#[derive(::std::clone::Clone)]
  193    193   
pub struct PutSnapshotBlockInput {
  194    194   
    #[pyo3(get, set)]
  195    195   
    /// :type str:
  196    196   
    /// <p>The ID of the snapshot.</p>
  197    197   
    pub snapshot_id: ::std::string::String,
  198    198   
    #[pyo3(get, set)]
  199    199   
    /// :type int:
@@ -251,251 +416,416 @@
  271    271   
}
  272    272   
#[allow(clippy::new_without_default)]
  273    273   
#[allow(clippy::too_many_arguments)]
  274    274   
#[::pyo3::pymethods]
  275    275   
impl PutSnapshotBlockInput {
  276    276   
    #[new]
  277    277   
    pub fn new(
  278    278   
        snapshot_id: ::std::string::String,
  279    279   
        block_index: i32,
  280    280   
        checksum: ::std::string::String,
  281         -
        progress: ::std::option::Option<i32>,
  282    281   
        block_data: ::aws_smithy_http_server_python::types::ByteStream,
  283    282   
        data_length: i32,
  284    283   
        checksum_algorithm: crate::model::ChecksumAlgorithm,
         284  +
        progress: ::std::option::Option<i32>,
  285    285   
    ) -> Self {
  286    286   
        Self {
  287    287   
            snapshot_id,
  288    288   
            block_index,
  289    289   
            checksum,
  290         -
            progress,
  291    290   
            block_data,
  292    291   
            data_length,
  293    292   
            checksum_algorithm,
         293  +
            progress,
  294    294   
        }
  295    295   
    }
  296    296   
    fn __repr__(&self) -> String {
  297    297   
        format!("{self:?}")
  298    298   
    }
  299    299   
    fn __str__(&self) -> String {
  300    300   
        format!("{self:?}")
  301    301   
    }
  302    302   
}
  303    303   
impl<'source> ::pyo3::FromPyObject<'source> for std::boxed::Box<PutSnapshotBlockInput> {
  304    304   
    fn extract(ob: &'source ::pyo3::PyAny) -> ::pyo3::PyResult<Self> {
  305    305   
        ob.extract::<PutSnapshotBlockInput>().map(Box::new)
  306    306   
    }
  307    307   
}
  308    308   
  309    309   
impl ::pyo3::IntoPy<::pyo3::PyObject> for std::boxed::Box<PutSnapshotBlockInput> {
  310    310   
    fn into_py(self, py: ::pyo3::Python<'_>) -> ::pyo3::PyObject {
  311    311   
        (*self).into_py(py)
  312    312   
    }
  313    313   
}
  314    314   
impl crate::constrained::Constrained for crate::input::PutSnapshotBlockInput {
  315    315   
    type Unconstrained = crate::input::put_snapshot_block_input_internal::Builder;
  316    316   
}
  317    317   
impl PutSnapshotBlockInput {
  318    318   
    /// Creates a new builder-style object to manufacture [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput).
  319    319   
    pub fn builder() -> crate::input::put_snapshot_block_input::Builder {
  320    320   
        crate::input::put_snapshot_block_input::Builder::default()
  321    321   
    }
  322    322   
}
  323    323   
  324    324   
#[::pyo3::pyclass]
         325  +
/// :param snapshot_id str:
  325    326   
/// :param max_results typing.Optional\[int\]:
  326    327   
/// :param starting_block_index typing.Optional\[int\]:
  327    328   
/// :param next_token typing.Optional\[str\]:
  328         -
/// :param snapshot_id str:
  329    329   
/// :rtype None:
  330    330   
#[allow(missing_docs)] // documentation missing in model
  331    331   
#[derive(
  332    332   
    ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
  333    333   
)]
  334    334   
pub struct ListSnapshotBlocksInput {
  335    335   
    #[pyo3(get, set)]
  336    336   
    /// :type typing.Optional\[int\]:
  337    337   
    /// <p>The number of results to return.</p>
  338    338   
    pub max_results: ::std::option::Option<i32>,
  339    339   
    #[pyo3(get, set)]
  340    340   
    /// :type typing.Optional\[int\]:
  341    341   
    /// <p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p>
  342    342   
    pub starting_block_index: ::std::option::Option<i32>,
  343    343   
    #[pyo3(get, set)]
  344    344   
    /// :type typing.Optional\[str\]:
  345    345   
    /// <p>The token to request the next page of results.</p>
  346    346   
    pub next_token: ::std::option::Option<::std::string::String>,
  347    347   
    #[pyo3(get, set)]
  348    348   
    /// :type str:
  349    349   
    /// <p>The ID of the snapshot from which to get block indexes and block tokens.</p>
  350    350   
    pub snapshot_id: ::std::string::String,
  351    351   
}
  352    352   
impl ListSnapshotBlocksInput {
  353    353   
    /// <p>The number of results to return.</p>
  354    354   
    pub fn max_results(&self) -> ::std::option::Option<i32> {
  355    355   
        self.max_results
  356    356   
    }
  357    357   
    /// <p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p>
  358    358   
    pub fn starting_block_index(&self) -> ::std::option::Option<i32> {
  359    359   
        self.starting_block_index
  360    360   
    }
  361    361   
    /// <p>The token to request the next page of results.</p>
  362    362   
    pub fn next_token(&self) -> ::std::option::Option<&str> {
  363    363   
        self.next_token.as_deref()
  364    364   
    }
  365    365   
    /// <p>The ID of the snapshot from which to get block indexes and block tokens.</p>
  366    366   
    pub fn snapshot_id(&self) -> &str {
  367    367   
        use std::ops::Deref;
  368    368   
        self.snapshot_id.deref()
  369    369   
    }
  370    370   
}
  371    371   
#[allow(clippy::new_without_default)]
  372    372   
#[allow(clippy::too_many_arguments)]
  373    373   
#[::pyo3::pymethods]
  374    374   
impl ListSnapshotBlocksInput {
  375    375   
    #[new]
  376    376   
    pub fn new(
         377  +
        snapshot_id: ::std::string::String,
  377    378   
        max_results: ::std::option::Option<i32>,
  378    379   
        starting_block_index: ::std::option::Option<i32>,
  379    380   
        next_token: ::std::option::Option<::std::string::String>,
  380         -
        snapshot_id: ::std::string::String,
  381    381   
    ) -> Self {
  382    382   
        Self {
         383  +
            snapshot_id,
  383    384   
            max_results,
  384    385   
            starting_block_index,
  385    386   
            next_token,
  386         -
            snapshot_id,
  387    387   
        }
  388    388   
    }
  389    389   
    fn __repr__(&self) -> String {
  390    390   
        format!("{self:?}")
  391    391   
    }
  392    392   
    fn __str__(&self) -> String {
  393    393   
        format!("{self:?}")
  394    394   
    }
  395    395   
}
  396    396   
impl<'source> ::pyo3::FromPyObject<'source> for std::boxed::Box<ListSnapshotBlocksInput> {
@@ -590,590 +652,652 @@
  610    610   
}
  611    611   
impl GetSnapshotBlockInput {
  612    612   
    /// Creates a new builder-style object to manufacture [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput).
  613    613   
    pub fn builder() -> crate::input::get_snapshot_block_input::Builder {
  614    614   
        crate::input::get_snapshot_block_input::Builder::default()
  615    615   
    }
  616    616   
}
  617    617   
  618    618   
#[::pyo3::pyclass]
  619    619   
/// :param changed_blocks_count int:
         620  +
/// :param snapshot_id str:
  620    621   
/// :param checksum_aggregation_method typing.Optional\[ebs.model.ChecksumAggregationMethod\]:
  621    622   
/// :param checksum_algorithm typing.Optional\[ebs.model.ChecksumAlgorithm\]:
  622         -
/// :param snapshot_id str:
  623    623   
/// :param checksum typing.Optional\[str\]:
  624    624   
/// :rtype None:
  625    625   
#[allow(missing_docs)] // documentation missing in model
  626    626   
#[derive(
  627    627   
    ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
  628    628   
)]
  629    629   
pub struct CompleteSnapshotInput {
  630    630   
    #[pyo3(get, set)]
  631    631   
    /// :type int:
  632    632   
    /// <p>The number of blocks that were written to the snapshot.</p>
@@ -655,655 +724,724 @@
  675    675   
        self.checksum.as_deref()
  676    676   
    }
  677    677   
}
  678    678   
#[allow(clippy::new_without_default)]
  679    679   
#[allow(clippy::too_many_arguments)]
  680    680   
#[::pyo3::pymethods]
  681    681   
impl CompleteSnapshotInput {
  682    682   
    #[new]
  683    683   
    pub fn new(
  684    684   
        changed_blocks_count: i32,
         685  +
        snapshot_id: ::std::string::String,
  685    686   
        checksum_aggregation_method: ::std::option::Option<crate::model::ChecksumAggregationMethod>,
  686    687   
        checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
  687         -
        snapshot_id: ::std::string::String,
  688    688   
        checksum: ::std::option::Option<::std::string::String>,
  689    689   
    ) -> Self {
  690    690   
        Self {
  691    691   
            changed_blocks_count,
         692  +
            snapshot_id,
  692    693   
            checksum_aggregation_method,
  693    694   
            checksum_algorithm,
  694         -
            snapshot_id,
  695    695   
            checksum,
  696    696   
        }
  697    697   
    }
  698    698   
    fn __repr__(&self) -> String {
  699    699   
        format!("{self:?}")
  700    700   
    }
  701    701   
    fn __str__(&self) -> String {
  702    702   
        format!("{self:?}")
  703    703   
    }
  704    704   
}

tmp-codegen-diff/codegen-server-test-python/ebs/rust-server-codegen-python/src/output.rs

@@ -424,424 +552,552 @@
  444    444   
    }
  445    445   
}
  446    446   
impl ListChangedBlocksOutput {
  447    447   
    /// Creates a new builder-style object to manufacture [`ListChangedBlocksOutput`](crate::output::ListChangedBlocksOutput).
  448    448   
    pub fn builder() -> crate::output::list_changed_blocks_output::Builder {
  449    449   
        crate::output::list_changed_blocks_output::Builder::default()
  450    450   
    }
  451    451   
}
  452    452   
  453    453   
#[::pyo3::pyclass]
         454  +
/// :param block_data ebs.types.ByteStream:
  454    455   
/// :param data_length typing.Optional\[int\]:
  455    456   
/// :param checksum_algorithm typing.Optional\[ebs.model.ChecksumAlgorithm\]:
  456    457   
/// :param checksum typing.Optional\[str\]:
  457         -
/// :param block_data ebs.types.ByteStream:
  458    458   
/// :rtype None:
  459    459   
#[allow(missing_docs)] // documentation missing in model
  460    460   
#[derive(::std::clone::Clone)]
  461    461   
pub struct GetSnapshotBlockOutput {
  462    462   
    #[pyo3(get, set)]
  463    463   
    /// :type typing.Optional\[int\]:
  464    464   
    /// <p>The size of the data in the block.</p>
  465    465   
    pub data_length: ::std::option::Option<i32>,
  466    466   
    #[pyo3(get, set)]
  467    467   
    /// :type typing.Optional\[ebs.model.ChecksumAlgorithm\]:
  468    468   
    /// <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
  469    469   
    pub checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
  470    470   
    #[pyo3(get, set)]
  471    471   
    /// :type typing.Optional\[str\]:
  472    472   
    /// <p>The checksum generated for the block, which is Base64 encoded.</p>
  473    473   
    pub checksum: ::std::option::Option<::std::string::String>,
  474    474   
    #[pyo3(get, set)]
  475    475   
    /// :type ebs.types.ByteStream:
  476    476   
    /// <p>The data content of the block.</p>
  477    477   
    pub block_data: ::aws_smithy_http_server_python::types::ByteStream,
  478    478   
}
  479    479   
impl GetSnapshotBlockOutput {
  480    480   
    /// <p>The size of the data in the block.</p>
  481    481   
    pub fn data_length(&self) -> ::std::option::Option<i32> {
  482    482   
        self.data_length
  483    483   
    }
  484    484   
    /// <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
  485    485   
    pub fn checksum_algorithm(&self) -> ::std::option::Option<&crate::model::ChecksumAlgorithm> {
  486    486   
        self.checksum_algorithm.as_ref()
  487    487   
    }
  488    488   
    /// <p>The checksum generated for the block, which is Base64 encoded.</p>
  489    489   
    pub fn checksum(&self) -> ::std::option::Option<&str> {
  490    490   
        self.checksum.as_deref()
  491    491   
    }
  492    492   
    /// <p>The data content of the block.</p>
  493    493   
    pub fn block_data(&self) -> &::aws_smithy_http_server_python::types::ByteStream {
  494    494   
        &self.block_data
  495    495   
    }
  496    496   
}
  497    497   
impl ::std::fmt::Debug for GetSnapshotBlockOutput {
  498    498   
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
  499    499   
        let mut formatter = f.debug_struct("GetSnapshotBlockOutput");
  500    500   
        formatter.field("data_length", &self.data_length);
  501    501   
        formatter.field("checksum_algorithm", &self.checksum_algorithm);
  502    502   
        formatter.field("checksum", &self.checksum);
  503    503   
        formatter.field("block_data", &"*** Sensitive Data Redacted ***");
  504    504   
        formatter.finish()
  505    505   
    }
  506    506   
}
  507    507   
#[allow(clippy::new_without_default)]
  508    508   
#[allow(clippy::too_many_arguments)]
  509    509   
#[::pyo3::pymethods]
  510    510   
impl GetSnapshotBlockOutput {
  511    511   
    #[new]
  512    512   
    pub fn new(
         513  +
        block_data: ::aws_smithy_http_server_python::types::ByteStream,
  513    514   
        data_length: ::std::option::Option<i32>,
  514    515   
        checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
  515    516   
        checksum: ::std::option::Option<::std::string::String>,
  516         -
        block_data: ::aws_smithy_http_server_python::types::ByteStream,
  517    517   
    ) -> Self {
  518    518   
        Self {
         519  +
            block_data,
  519    520   
            data_length,
  520    521   
            checksum_algorithm,
  521    522   
            checksum,
  522         -
            block_data,
  523    523   
        }
  524    524   
    }
  525    525   
    fn __repr__(&self) -> String {
  526    526   
        format!("{self:?}")
  527    527   
    }
  528    528   
    fn __str__(&self) -> String {
  529    529   
        format!("{self:?}")
  530    530   
    }
  531    531   
}
  532    532   
impl<'source> ::pyo3::FromPyObject<'source> for std::boxed::Box<GetSnapshotBlockOutput> {

tmp-codegen-diff/codegen-server-test-python/ebs/rust-server-codegen-python/src/python_module_export.rs

@@ -1,1 +33,33 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
#[::pyo3::pymodule]
    3         -
#[::pyo3(name = "ebs")]
           3  +
#[pyo3(name = "ebs")]
    4      4   
pub fn python_library(py: ::pyo3::Python<'_>, m: &::pyo3::types::PyModule) -> ::pyo3::PyResult<()> {
    5      5   
    let input = ::pyo3::types::PyModule::new(py, "input")?;
    6      6   
    let output = ::pyo3::types::PyModule::new(py, "output")?;
    7      7   
    let error = ::pyo3::types::PyModule::new(py, "error")?;
    8      8   
    error.add_class::<crate::error::InternalServerError>()?;
    9      9   
    error.add_class::<crate::error::ValidationException>()?;
   10     10   
    let model = ::pyo3::types::PyModule::new(py, "model")?;
   11     11   
    model.add_class::<crate::model::ValidationExceptionField>()?;
   12     12   
    error.add_class::<crate::error::ConcurrentLimitExceededException>()?;
   13     13   
    error.add_class::<crate::error::ServiceQuotaExceededException>()?;

tmp-codegen-diff/codegen-server-test-python/json_rpc10/rust-server-codegen-python/Cargo.toml

@@ -6,6 +58,58 @@
   26     26   
version = "0.2.9"
   27     27   
[dependencies.hyper]
   28     28   
version = "0.14.26"
   29     29   
[dependencies.mime]
   30     30   
version = "0.3"
   31     31   
[dependencies.parking_lot]
   32     32   
version = "0.12"
   33     33   
[dependencies.pin-project-lite]
   34     34   
version = "0.2"
   35     35   
[dependencies.pyo3]
   36         -
version = "0.18"
          36  +
version = "0.20"
   37     37   
[dependencies.pyo3-asyncio]
   38         -
version = "0.18"
          38  +
version = "0.20"
   39     39   
features = ["attributes", "tokio-runtime"]
   40     40   
[dependencies.tower]
   41     41   
version = "0.4"
   42     42   
[dependencies.tracing]
   43     43   
version = "0.1"
   44     44   
[dev-dependencies.hyper]
   45     45   
version = "0.14.12"
   46     46   
[dev-dependencies.tokio]
   47     47   
version = "1.23.1"
   48     48   
[features]

tmp-codegen-diff/codegen-server-test-python/json_rpc10/rust-server-codegen-python/python/json_rpc10/input/__init__.pyi

@@ -39,39 +99,99 @@
   59     59   
   60     60   
class OperationWithDefaultsInput:
   61     61   
    client_optional_defaults: typing.Optional[json_rpc10.model.ClientOptionalDefaults]
   62     62   
   63     63   
    defaults: typing.Optional[json_rpc10.model.Defaults]
   64     64   
   65     65   
    other_top_level_default: int
   66     66   
   67     67   
    top_level_default: str
   68     68   
   69         -
    def __init__(self, defaults: typing.Optional[json_rpc10.model.Defaults] = ..., client_optional_defaults: typing.Optional[json_rpc10.model.ClientOptionalDefaults] = ..., top_level_default: str, other_top_level_default: int) -> None:
          69  +
    def __init__(self, top_level_default: str, other_top_level_default: int, defaults: typing.Optional[json_rpc10.model.Defaults] = ..., client_optional_defaults: typing.Optional[json_rpc10.model.ClientOptionalDefaults] = ...) -> None:
   70     70   
        ...
   71     71   
   72     72   
   73     73   
class OperationWithNestedStructureInput:
   74     74   
    top_level: json_rpc10.model.TopLevel
   75     75   
   76     76   
    def __init__(self, top_level: json_rpc10.model.TopLevel) -> None:
   77     77   
        ...
   78     78   
   79     79   

tmp-codegen-diff/codegen-server-test-python/json_rpc10/rust-server-codegen-python/python/json_rpc10/model/__init__.pyi

@@ -46,46 +117,117 @@
   66     66   
    zero_double: float
   67     67   
   68     68   
    zero_float: float
   69     69   
   70     70   
    zero_integer: int
   71     71   
   72     72   
    zero_long: int
   73     73   
   74     74   
    zero_short: int
   75     75   
   76         -
    def __init__(self, default_string: str, default_boolean: bool, default_list: typing.List[str], default_document_map: json_rpc10.types.Document, default_document_string: json_rpc10.types.Document, default_document_boolean: json_rpc10.types.Document, default_document_list: json_rpc10.types.Document, default_null_document: typing.Optional[json_rpc10.types.Document] = ..., default_timestamp: json_rpc10.types.DateTime, default_blob: json_rpc10.types.Blob, default_byte: int, default_short: int, default_integer: int, default_long: int, default_float: float, default_double: float, default_map: typing.Dict[str, str], default_enum: json_rpc10.model.TestEnum, default_int_enum: int, empty_string: str, false_boolean: bool, empty_blob: json_rpc10.types.Blob, zero_byte: int, zero_short: int, zero_integer: int, zero_long: int, zero_float: float, zero_double: float) -> None:
          76  +
    def __init__(self, default_string: str, default_boolean: bool, default_list: typing.List[str], default_document_map: json_rpc10.types.Document, default_document_string: json_rpc10.types.Document, default_document_boolean: json_rpc10.types.Document, default_document_list: json_rpc10.types.Document, default_timestamp: json_rpc10.types.DateTime, default_blob: json_rpc10.types.Blob, default_byte: int, default_short: int, default_integer: int, default_long: int, default_float: float, default_double: float, default_map: typing.Dict[str, str], default_enum: json_rpc10.model.TestEnum, default_int_enum: int, empty_string: str, false_boolean: bool, empty_blob: json_rpc10.types.Blob, zero_byte: int, zero_short: int, zero_integer: int, zero_long: int, zero_float: float, zero_double: float, default_null_document: typing.Optional[json_rpc10.types.Document] = ...) -> None:
   77     77   
        ...
   78     78   
   79     79   
   80     80   
class Dialog:
   81     81   
    farewell: typing.Optional[json_rpc10.model.Farewell]
   82     82   
   83     83   
    greeting: str
   84     84   
   85     85   
    language: typing.Optional[str]
   86     86   
   87         -
    def __init__(self, language: typing.Optional[str] = ..., greeting: str, farewell: typing.Optional[json_rpc10.model.Farewell] = ...) -> None:
          87  +
    def __init__(self, greeting: str, language: typing.Optional[str] = ..., farewell: typing.Optional[json_rpc10.model.Farewell] = ...) -> None:
   88     88   
        ...
   89     89   
   90     90   
   91     91   
class Farewell:
   92     92   
    phrase: str
   93     93   
   94     94   
    def __init__(self, phrase: str) -> None:
   95     95   
        ...
   96     96   
   97     97   

tmp-codegen-diff/codegen-server-test-python/json_rpc10/rust-server-codegen-python/python/json_rpc10/output/__init__.pyi

@@ -84,84 +144,144 @@
  104    104   
    zero_double: float
  105    105   
  106    106   
    zero_float: float
  107    107   
  108    108   
    zero_integer: int
  109    109   
  110    110   
    zero_long: int
  111    111   
  112    112   
    zero_short: int
  113    113   
  114         -
    def __init__(self, default_string: str, default_boolean: bool, default_list: typing.List[str], default_document_map: json_rpc10.types.Document, default_document_string: json_rpc10.types.Document, default_document_boolean: json_rpc10.types.Document, default_document_list: json_rpc10.types.Document, default_null_document: typing.Optional[json_rpc10.types.Document] = ..., default_timestamp: json_rpc10.types.DateTime, default_blob: json_rpc10.types.Blob, default_byte: int, default_short: int, default_integer: int, default_long: int, default_float: float, default_double: float, default_map: typing.Dict[str, str], default_enum: json_rpc10.model.TestEnum, default_int_enum: int, empty_string: str, false_boolean: bool, empty_blob: json_rpc10.types.Blob, zero_byte: int, zero_short: int, zero_integer: int, zero_long: int, zero_float: float, zero_double: float) -> None:
         114  +
    def __init__(self, default_string: str, default_boolean: bool, default_list: typing.List[str], default_document_map: json_rpc10.types.Document, default_document_string: json_rpc10.types.Document, default_document_boolean: json_rpc10.types.Document, default_document_list: json_rpc10.types.Document, default_timestamp: json_rpc10.types.DateTime, default_blob: json_rpc10.types.Blob, default_byte: int, default_short: int, default_integer: int, default_long: int, default_float: float, default_double: float, default_map: typing.Dict[str, str], default_enum: json_rpc10.model.TestEnum, default_int_enum: int, empty_string: str, false_boolean: bool, empty_blob: json_rpc10.types.Blob, zero_byte: int, zero_short: int, zero_integer: int, zero_long: int, zero_float: float, zero_double: float, default_null_document: typing.Optional[json_rpc10.types.Document] = ...) -> None:
  115    115   
        ...
  116    116   
  117    117   
  118    118   
class OperationWithNestedStructureOutput:
  119    119   
    dialog: json_rpc10.model.Dialog
  120    120   
  121    121   
    dialog_list: typing.List[json_rpc10.model.Dialog]
  122    122   
  123    123   
    dialog_map: typing.Dict[str, json_rpc10.model.Dialog]
  124    124   

tmp-codegen-diff/codegen-server-test-python/json_rpc10/rust-server-codegen-python/src/input.rs

@@ -71,71 +192,192 @@
   91     91   
    type Unconstrained = crate::input::operation_with_required_members_input_internal::Builder;
   92     92   
}
   93     93   
impl OperationWithRequiredMembersInput {
   94     94   
    /// Creates a new builder-style object to manufacture [`OperationWithRequiredMembersInput`](crate::input::OperationWithRequiredMembersInput).
   95     95   
    pub fn builder() -> crate::input::operation_with_required_members_input::Builder {
   96     96   
        crate::input::operation_with_required_members_input::Builder::default()
   97     97   
    }
   98     98   
}
   99     99   
  100    100   
#[::pyo3::pyclass]
  101         -
/// :param defaults typing.Optional\[json_rpc10.model.Defaults\]:
  102         -
/// :param client_optional_defaults typing.Optional\[json_rpc10.model.ClientOptionalDefaults\]:
  103    101   
/// :param top_level_default str:
  104    102   
/// :param other_top_level_default int:
         103  +
/// :param defaults typing.Optional\[json_rpc10.model.Defaults\]:
         104  +
/// :param client_optional_defaults typing.Optional\[json_rpc10.model.ClientOptionalDefaults\]:
  105    105   
/// :rtype None:
  106    106   
#[allow(missing_docs)] // documentation missing in model
  107    107   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
  108    108   
pub struct OperationWithDefaultsInput {
  109    109   
    #[pyo3(get, set)]
  110    110   
    /// :type typing.Optional\[json_rpc10.model.Defaults\]:
  111    111   
    #[allow(missing_docs)] // documentation missing in model
  112    112   
    pub defaults: ::std::option::Option<crate::model::Defaults>,
  113    113   
    #[pyo3(get, set)]
  114    114   
    /// :type typing.Optional\[json_rpc10.model.ClientOptionalDefaults\]:
  115    115   
    #[allow(missing_docs)] // documentation missing in model
  116    116   
    pub client_optional_defaults: ::std::option::Option<crate::model::ClientOptionalDefaults>,
  117    117   
    #[pyo3(get, set)]
  118    118   
    /// :type str:
  119    119   
    #[allow(missing_docs)] // documentation missing in model
  120    120   
    pub top_level_default: ::std::string::String,
  121    121   
    #[pyo3(get, set)]
  122    122   
    /// :type int:
  123    123   
    #[allow(missing_docs)] // documentation missing in model
  124    124   
    pub other_top_level_default: i32,
  125    125   
}
  126    126   
impl OperationWithDefaultsInput {
  127    127   
    #[allow(missing_docs)] // documentation missing in model
  128    128   
    pub fn defaults(&self) -> ::std::option::Option<&crate::model::Defaults> {
  129    129   
        self.defaults.as_ref()
  130    130   
    }
  131    131   
    #[allow(missing_docs)] // documentation missing in model
  132    132   
    pub fn client_optional_defaults(
  133    133   
        &self,
  134    134   
    ) -> ::std::option::Option<&crate::model::ClientOptionalDefaults> {
  135    135   
        self.client_optional_defaults.as_ref()
  136    136   
    }
  137    137   
    #[allow(missing_docs)] // documentation missing in model
  138    138   
    pub fn top_level_default(&self) -> &str {
  139    139   
        use std::ops::Deref;
  140    140   
        self.top_level_default.deref()
  141    141   
    }
  142    142   
    #[allow(missing_docs)] // documentation missing in model
  143    143   
    pub fn other_top_level_default(&self) -> i32 {
  144    144   
        self.other_top_level_default
  145    145   
    }
  146    146   
}
  147    147   
#[allow(clippy::new_without_default)]
  148    148   
#[allow(clippy::too_many_arguments)]
  149    149   
#[::pyo3::pymethods]
  150    150   
impl OperationWithDefaultsInput {
  151    151   
    #[new]
  152    152   
    pub fn new(
  153         -
        defaults: ::std::option::Option<crate::model::Defaults>,
  154         -
        client_optional_defaults: ::std::option::Option<crate::model::ClientOptionalDefaults>,
  155    153   
        top_level_default: ::std::string::String,
  156    154   
        other_top_level_default: i32,
         155  +
        defaults: ::std::option::Option<crate::model::Defaults>,
         156  +
        client_optional_defaults: ::std::option::Option<crate::model::ClientOptionalDefaults>,
  157    157   
    ) -> Self {
  158    158   
        Self {
  159         -
            defaults,
  160         -
            client_optional_defaults,
  161    159   
            top_level_default,
  162    160   
            other_top_level_default,
         161  +
            defaults,
         162  +
            client_optional_defaults,
  163    163   
        }
  164    164   
    }
  165    165   
    fn __repr__(&self) -> String {
  166    166   
        format!("{self:?}")
  167    167   
    }
  168    168   
    fn __str__(&self) -> String {
  169    169   
        format!("{self:?}")
  170    170   
    }
  171    171   
}
  172    172   
impl<'source> ::pyo3::FromPyObject<'source> for std::boxed::Box<OperationWithDefaultsInput> {

tmp-codegen-diff/codegen-server-test-python/json_rpc10/rust-server-codegen-python/src/model.rs

@@ -36,36 +145,145 @@
   56     56   
    }
   57     57   
}
   58     58   
impl ValidationExceptionField {
   59     59   
    /// Creates a new builder-style object to manufacture [`ValidationExceptionField`](crate::model::ValidationExceptionField).
   60     60   
    pub fn builder() -> crate::model::validation_exception_field::Builder {
   61     61   
        crate::model::validation_exception_field::Builder::default()
   62     62   
    }
   63     63   
}
   64     64   
   65     65   
#[::pyo3::pyclass]
   66         -
/// :param language typing.Optional\[str\]:
   67     66   
/// :param greeting str:
          67  +
/// :param language typing.Optional\[str\]:
   68     68   
/// :param farewell typing.Optional\[json_rpc10.model.Farewell\]:
   69     69   
/// :rtype None:
   70     70   
#[allow(missing_docs)] // documentation missing in model
   71     71   
#[derive(
   72     72   
    ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
   73     73   
)]
   74     74   
pub struct Dialog {
   75     75   
    #[pyo3(get, set)]
   76     76   
    /// :type typing.Optional\[str\]:
   77     77   
    #[allow(missing_docs)] // documentation missing in model
   78     78   
    pub language: ::std::option::Option<::std::string::String>,
   79     79   
    #[pyo3(get, set)]
   80     80   
    /// :type str:
   81     81   
    #[allow(missing_docs)] // documentation missing in model
   82     82   
    pub greeting: ::std::string::String,
   83     83   
    #[pyo3(get, set)]
   84     84   
    /// :type typing.Optional\[json_rpc10.model.Farewell\]:
   85     85   
    #[allow(missing_docs)] // documentation missing in model
   86     86   
    pub farewell: ::std::option::Option<crate::model::Farewell>,
   87     87   
}
   88     88   
impl Dialog {
   89     89   
    #[allow(missing_docs)] // documentation missing in model
   90     90   
    pub fn language(&self) -> ::std::option::Option<&str> {
   91     91   
        self.language.as_deref()
   92     92   
    }
   93     93   
    #[allow(missing_docs)] // documentation missing in model
   94     94   
    pub fn greeting(&self) -> &str {
   95     95   
        use std::ops::Deref;
   96     96   
        self.greeting.deref()
   97     97   
    }
   98     98   
    #[allow(missing_docs)] // documentation missing in model
   99     99   
    pub fn farewell(&self) -> ::std::option::Option<&crate::model::Farewell> {
  100    100   
        self.farewell.as_ref()
  101    101   
    }
  102    102   
}
  103    103   
#[allow(clippy::new_without_default)]
  104    104   
#[allow(clippy::too_many_arguments)]
  105    105   
#[::pyo3::pymethods]
  106    106   
impl Dialog {
  107    107   
    #[new]
  108    108   
    pub fn new(
  109         -
        language: ::std::option::Option<::std::string::String>,
  110    109   
        greeting: ::std::string::String,
         110  +
        language: ::std::option::Option<::std::string::String>,
  111    111   
        farewell: ::std::option::Option<crate::model::Farewell>,
  112    112   
    ) -> Self {
  113    113   
        Self {
  114         -
            language,
  115    114   
            greeting,
         115  +
            language,
  116    116   
            farewell,
  117    117   
        }
  118    118   
    }
  119    119   
    fn __repr__(&self) -> String {
  120    120   
        format!("{self:?}")
  121    121   
    }
  122    122   
    fn __str__(&self) -> String {
  123    123   
        format!("{self:?}")
  124    124   
    }
  125    125   
}
@@ -448,448 +528,528 @@
  468    468   
}
  469    469   
  470    470   
#[::pyo3::pyclass]
  471    471   
/// :param default_string str:
  472    472   
/// :param default_boolean bool:
  473    473   
/// :param default_list typing.List\[str\]:
  474    474   
/// :param default_document_map json_rpc10.types.Document:
  475    475   
/// :param default_document_string json_rpc10.types.Document:
  476    476   
/// :param default_document_boolean json_rpc10.types.Document:
  477    477   
/// :param default_document_list json_rpc10.types.Document:
  478         -
/// :param default_null_document typing.Optional\[json_rpc10.types.Document\]:
  479    478   
/// :param default_timestamp json_rpc10.types.DateTime:
  480    479   
/// :param default_blob json_rpc10.types.Blob:
  481    480   
/// :param default_byte int:
  482    481   
/// :param default_short int:
  483    482   
/// :param default_integer int:
  484    483   
/// :param default_long int:
  485    484   
/// :param default_float float:
  486    485   
/// :param default_double float:
  487    486   
/// :param default_map typing.Dict\[str, str\]:
  488    487   
/// :param default_enum json_rpc10.model.TestEnum:
  489    488   
/// :param default_int_enum int:
  490    489   
/// :param empty_string str:
  491    490   
/// :param false_boolean bool:
  492    491   
/// :param empty_blob json_rpc10.types.Blob:
  493    492   
/// :param zero_byte int:
  494    493   
/// :param zero_short int:
  495    494   
/// :param zero_integer int:
  496    495   
/// :param zero_long int:
  497    496   
/// :param zero_float float:
  498    497   
/// :param zero_double float:
         498  +
/// :param default_null_document typing.Optional\[json_rpc10.types.Document\]:
  499    499   
/// :rtype None:
  500    500   
#[allow(missing_docs)] // documentation missing in model
  501    501   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
  502    502   
pub struct Defaults {
  503    503   
    #[pyo3(get, set)]
  504    504   
    /// :type str:
  505    505   
    #[allow(missing_docs)] // documentation missing in model
  506    506   
    pub default_string: ::std::string::String,
  507    507   
    #[pyo3(get, set)]
  508    508   
    /// :type bool:
@@ -721,721 +833,833 @@
  741    741   
impl Defaults {
  742    742   
    #[new]
  743    743   
    pub fn new(
  744    744   
        default_string: ::std::string::String,
  745    745   
        default_boolean: bool,
  746    746   
        default_list: ::std::vec::Vec<::std::string::String>,
  747    747   
        default_document_map: ::aws_smithy_http_server_python::types::Document,
  748    748   
        default_document_string: ::aws_smithy_http_server_python::types::Document,
  749    749   
        default_document_boolean: ::aws_smithy_http_server_python::types::Document,
  750    750   
        default_document_list: ::aws_smithy_http_server_python::types::Document,
  751         -
        default_null_document: ::std::option::Option<
  752         -
            ::aws_smithy_http_server_python::types::Document,
  753         -
        >,
  754    751   
        default_timestamp: ::aws_smithy_http_server_python::types::DateTime,
  755    752   
        default_blob: ::aws_smithy_http_server_python::types::Blob,
  756    753   
        default_byte: i8,
  757    754   
        default_short: i16,
  758    755   
        default_integer: i32,
  759    756   
        default_long: i64,
  760    757   
        default_float: f32,
  761    758   
        default_double: f64,
  762    759   
        default_map: ::std::collections::HashMap<::std::string::String, ::std::string::String>,
  763    760   
        default_enum: crate::model::TestEnum,
  764    761   
        default_int_enum: i32,
  765    762   
        empty_string: ::std::string::String,
  766    763   
        false_boolean: bool,
  767    764   
        empty_blob: ::aws_smithy_http_server_python::types::Blob,
  768    765   
        zero_byte: i8,
  769    766   
        zero_short: i16,
  770    767   
        zero_integer: i32,
  771    768   
        zero_long: i64,
  772    769   
        zero_float: f32,
  773    770   
        zero_double: f64,
         771  +
        default_null_document: ::std::option::Option<
         772  +
            ::aws_smithy_http_server_python::types::Document,
         773  +
        >,
  774    774   
    ) -> Self {
  775    775   
        Self {
  776    776   
            default_string,
  777    777   
            default_boolean,
  778    778   
            default_list,
  779    779   
            default_document_map,
  780    780   
            default_document_string,
  781    781   
            default_document_boolean,
  782    782   
            default_document_list,
  783         -
            default_null_document,
  784    783   
            default_timestamp,
  785    784   
            default_blob,
  786    785   
            default_byte,
  787    786   
            default_short,
  788    787   
            default_integer,
  789    788   
            default_long,
  790    789   
            default_float,
  791    790   
            default_double,
  792    791   
            default_map,
  793    792   
            default_enum,
  794    793   
            default_int_enum,
  795    794   
            empty_string,
  796    795   
            false_boolean,
  797    796   
            empty_blob,
  798    797   
            zero_byte,
  799    798   
            zero_short,
  800    799   
            zero_integer,
  801    800   
            zero_long,
  802    801   
            zero_float,
  803    802   
            zero_double,
         803  +
            default_null_document,
  804    804   
        }
  805    805   
    }
  806    806   
    fn __repr__(&self) -> String {
  807    807   
        format!("{self:?}")
  808    808   
    }
  809    809   
    fn __str__(&self) -> String {
  810    810   
        format!("{self:?}")
  811    811   
    }
  812    812   
}
  813    813   
impl<'source> ::pyo3::FromPyObject<'source> for std::boxed::Box<Defaults> {