@@ -1863,19 +1863,44 @@ class ComposedBase(Discriminable):
18631863 path_to_schemas = oneof_cls._validate_oapg(arg, validation_metadata=validation_metadata)
18641864 except (ApiValueError, ApiTypeError) as ex:
18651865 if discriminated_cls is not None and oneof_cls is discriminated_cls:
1866+ {{ #if nonCompliantUseDiscriminatorIfCompositionFails }}
1867+ """
1868+ suppress exception because code was generated with
1869+ nonCompliantUseDiscriminatorIfCompositionFails=true
1870+ """
1871+ pass
1872+ {{ else }}
18661873 raise ex
1874+ {{ /if }}
18671875 continue
18681876 oneof_classes.append(oneof_cls)
18691877 if not oneof_classes:
1878+ {{ #if nonCompliantUseDiscriminatorIfCompositionFails }}
1879+ if discriminated_cls:
1880+ """
1881+ return without exception because code was generated with
1882+ nonCompliantUseDiscriminatorIfCompositionFails=true
1883+ """
1884+ return {}
1885+ {{ /if }}
18701886 raise ApiValueError(
18711887 "Invalid inputs given to generate an instance of {}. None "
18721888 "of the oneOf schemas matched the input data.".format(cls)
18731889 )
18741890 elif len(oneof_classes) > 1:
1891+ {{ #if nonCompliantUseDiscriminatorIfCompositionFails }}
1892+ if discriminated_cls:
1893+ """
1894+ return without exception because code was generated with
1895+ nonCompliantUseDiscriminatorIfCompositionFails=true
1896+ """
1897+ return {}
1898+ {{ /if }}
18751899 raise ApiValueError(
18761900 "Invalid inputs given to generate an instance of {}. Multiple "
18771901 "oneOf schemas {} matched the inputs, but a max of one is allowed.".format(cls, oneof_classes)
18781902 )
1903+ # exactly one class matches
18791904 return path_to_schemas
18801905
18811906 @classmethod
@@ -1896,11 +1921,27 @@ class ComposedBase(Discriminable):
18961921 other_path_to_schemas = anyof_cls._validate_oapg(arg, validation_metadata=validation_metadata)
18971922 except (ApiValueError, ApiTypeError) as ex:
18981923 if discriminated_cls is not None and anyof_cls is discriminated_cls:
1924+ {{ #if nonCompliantUseDiscriminatorIfCompositionFails }}
1925+ """
1926+ suppress exception because code was generated with
1927+ nonCompliantUseDiscriminatorIfCompositionFails=true
1928+ """
1929+ pass
1930+ {{ else }}
18991931 raise ex
1932+ {{ /if }}
19001933 continue
19011934 anyof_classes.append(anyof_cls)
19021935 update(path_to_schemas, other_path_to_schemas)
19031936 if not anyof_classes:
1937+ {{ #if nonCompliantUseDiscriminatorIfCompositionFails }}
1938+ if discriminated_cls:
1939+ """
1940+ return without exception because code was generated with
1941+ nonCompliantUseDiscriminatorIfCompositionFails=true
1942+ """
1943+ return {}
1944+ {{ /if }}
19041945 raise ApiValueError(
19051946 "Invalid inputs given to generate an instance of {}. None "
19061947 "of the anyOf schemas matched the input data.".format(cls)
0 commit comments