[Python] --additional-data false removes ALL properties on generated Python code models
pjmagee opened this issue · comments
What are you generating using Kiota, clients or plugins?
API Client/SDK
In what context or format are you using Kiota?
Nuget tool
Client library/SDK language
None
Describe the bug
foreach ($spec in $specs) {
$spec.languageSettings | ForEach-Object {
$language = $_.language
$namespace = $_.namespace
$output = $_.output
Write-Host "Generating for $($spec.url)"
docker run -v ${PWD}/examples:/app/output mcr.microsoft.com/openapi/kiota:1.14.0 generate `
--output /app/output/$language/$output `
--language $language `
--namespace-name $namespace `
--openapi $($spec.url) `
--exclude-backward-compatible true `
--log-level Debug `
--clean-output `
--additional-data false `
--class-name ApiClient
}
}
The generated Python code with --additional-data false
breaks the generated python
Expected behavior
To not remove the fields... see example of running the generator a 2nd time with Git history showing the changes...
How to reproduce
Generate with the flag set to true and then generate again with it set to false.
Open API description file
Seems to be any openapi specification, as it occurs with all 3 openapi documents I am dealing with.
Kiota Version
1.14.0
Latest Kiota version known to work for scenario above?(Not required)
No response
Known Workarounds
Unknown, will have to ensure the flag is still set to true for Python only.
Configuration
Win11 running docker mcr.microsoft.com/openapi/kiota:1.14.0
Debug output
Click to expand log
```Hint: use the info command to get the list of dependencies you need to add to your project.
Example: kiota info -d "https://developer.icis.com/portals/api/sites/icis-live-portal/liveportal/apis/lnganalyticsapi/download_spec" -l Java
Hint: use the --include-path and --exclude-path options with glob patterns to filter the paths generated.
Example: kiota generate --include-path "**/foo" -d "https://developer.icis.com/portals/api/sites/icis-live-portal/liveportal/apis/lnganalyticsapi/download_spec"
Generating for https://developer.icis.com/portals/api/sites/icis-live-portal/liveportal/apis/lnganalyticsapi/download_spec
info: Kiota.Builder.KiotaBuilder[0]
Cleaning output directory /app/output/Python/lnganalytics
dbug: Kiota.Builder.KiotaBuilder[0]
kiota version 1.14.0
dbug: Kiota.Builder.KiotaBuilder[0]
cache file /tmp/kiota/cache/generation/5A0BABF09B68A6E28F55D7E23347DD3239C41A4BE33096C5882D067794222D1B/download_spec not found, downloading from https://developer.icis.com/portals/api/sites/icis-live-portal/liveportal/apis/lnganalyticsapi/download_spec
info: Kiota.Builder.KiotaBuilder[0]
loaded description from remote source
dbug: Kiota.Builder.KiotaBuilder[0]
step 1 - reading the stream - took 00:00:00.6836112
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1basinTightnessScenarios/get/responses/200/content/application1vnd.api+json/example/data/0/id - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1basinTightnessScenarios/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/created - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1basinTightnessScenarios/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/month - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1basinTightnessScenarios/get/responses/200/content/application1vnd.api+json/example/data/1/id - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1basinTightnessScenarios/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/created - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1basinTightnessScenarios/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/month - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1basinTightnessScenarios1{id}/get/responses/200/content/application1vnd.api+json/example/data/id - Data and type mismatch found.1vnd.api+json/example/data/attributes/created - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1basinTightnessScenarios1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1basinTightnessScenarios1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/month - Data and type mismatch found.1vnd.api+json/example/data/attributes/originDetails/mass - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/originDetails/mass - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/originDetails/volume - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/originDetails/energyContent - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/destinationDetails/mass - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/destinationDetails/volume - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/destinationDetails/energyContent - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/originDetails/mass - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/originDetails/volume - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/originDetails/energyContent - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/destinationDetails/mass - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/destinationDetails/volume - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/destinationDetails/energyContent - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/originDetails/volume - Data and type mismatch found.1vnd.api+json/example/data/attributes/originDetails/energyContent - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/destinationDetails/mass - Data and type mismatch found.1vnd.api+json/example/data/attributes/destinationDetails/volume - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1cargoes1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/destinationDetails/energyContent - Data and type mismatch found.1vnd.api+json/example/data/attributes/startDateEarliest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/startDateEarliest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/startDateLatest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/endDateEarliest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/endDateLatest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/startDateEarliest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/startDateLatest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/endDateEarliest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/endDateLatest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/startDateLatest - Data and type mismatch found.1vnd.api+json/example/data/attributes/endDateEarliest - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1charters1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/endDateLatest - Data and type mismatch found.1vnd.api+json/example/data - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecasts/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/publishDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecasts/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/startDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecasts/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/endDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecasts/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/publishDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecasts/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/startDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecasts/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/endDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecasts1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecastValues/get/responses/200/content/application1vnd.api+json/examples/example/value/data/0/attributes/date - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecastValues/get/responses/200/content/application1vnd.api+json/examples/example/value/data/1/attributes/date - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1forecastValues1{id}/get/responses/200/content/application1vnd.api+json/example/data - Data and type mismatch found.1vnd.api+json/example/data/attributes/created - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/created - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/costAtOrigin - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/bunkerPrice - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/absoluteProfit - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/created - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/costAtOrigin - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/bunkerPrice - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/absoluteProfit - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/costAtOrigin - Data and type mismatch found.1vnd.api+json/example/data/attributes/bunkerPrice - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1netbacks1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/absoluteProfit - Data and type mismatch found.1vnd.api+json/example/data/attributes/transactionOrder - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/transactionOrder - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/price/high - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/startDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/endDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/transactionOrder - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/startDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/endDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/price/high - Data and type mismatch found.1vnd.api+json/example/data/attributes/startDate - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1transactions1{id}/get/responses/200/content/application1vnd.api+json/example/data/attributes/endDate - Data and type mismatch found.1vnd.api+json/example/data/attributes/capacity - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1vessels/get/responses/200/content/application1vnd.api+json/example/data/0/attributes/capacity - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1vessels/get/responses/200/content/application1vnd.api+json/example/data/1/attributes/capacity - Data and type mismatch found.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/paths/1vessels1{id}/get/responses/200/content/application
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/components/schemas/CargoModel/properties/attributes/properties/originDetails/properties/mass - The format integer is not supported by Kiota for the type number and the string type will be used.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/components/schemas/CargoModel/properties/attributes/properties/originDetails/properties/volume - The format integer is not supported by Kiota for the type number and the string type will be used.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/components/schemas/CargoModel/properties/attributes/properties/originDetails/properties/energyContent - The format integer is not supported by Kiota for the type number and the string type will be used.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/components/schemas/CargoModel/properties/attributes/properties/destinationDetails/properties/mass - The format integer is not supported by Kiota for the type number and the string type will be used.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/components/schemas/CargoModel/properties/attributes/properties/destinationDetails/properties/volume - The format integer is not supported by Kiota for the type number and the string type will be used.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/components/schemas/CargoModel/properties/attributes/properties/destinationDetails/properties/energyContent - The format integer is not supported by Kiota for the type number and the string type will be used.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/components/schemas/ForecastValueModel/properties/relationships/properties/forecast/properties/data/properties/id - The format string is not supported by Kiota for the type string and the string type will be used.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/components/schemas/TransactionModel/properties/attributes/properties/transactionOrder - The format int is not supported by Kiota for the type number and the string type will be used.
warn: Kiota.Builder.KiotaBuilder[0]
OpenAPI warning: #/components/schemas/VesselModel/properties/attributes/properties/capacity - The format int is not supported by Kiota for the type number and the string type will be used.
dbug: Kiota.Builder.KiotaBuilder[0]
step 2 - parsing the document - took 00:00:00.1319134
dbug: Kiota.Builder.KiotaBuilder[0]
step 3 - updating generation configuration from kiota extension - took 00:00:00.0001077
dbug: Kiota.Builder.KiotaBuilder[0]
step 4 - filtering API paths with patterns - took 00:00:00.0028528
dbug: Kiota.Builder.KiotaBuilder[0]
step 5 - checking whether the output should be updated - took 00:00:00.0201661
dbug: Kiota.Builder.KiotaBuilder[0]
step 6 - create uri space - took 00:00:00.0020808
dbug: Kiota.Builder.KiotaBuilder[0]
InitializeInheritanceIndex 00:00:00.0023986
dbug: Kiota.Builder.KiotaBuilder[0]
CreateRequestBuilderClass 00:00:00
dbug: Kiota.Builder.KiotaBuilder[0]
MapTypeDefinitions 00:00:00.0088460
dbug: Kiota.Builder.KiotaBuilder[0]
TrimInheritedModels 00:00:00
dbug: Kiota.Builder.KiotaBuilder[0]
CleanUpInternalState 00:00:00
dbug: Kiota.Builder.KiotaBuilder[0]
step 7 - create source model - took 00:00:00.0911265
dbug: Kiota.Builder.KiotaBuilder[0]
108ms: Language refinement applied
dbug: Kiota.Builder.KiotaBuilder[0]
step 8 - refine by language - took 00:00:00.1090963
dbug: Kiota.Builder.KiotaBuilder[0]
step 9 - writing files - took 00:00:01.2042072
dbug: Kiota.Builder.KiotaBuilder[0]
cache file /tmp/kiota/cache/generation/5A0BABF09B68A6E28F55D7E23347DD3239C41A4BE33096C5882D067794222D1B/download_spec is up to date and clearCache is False, using it
info: Kiota.Builder.KiotaBuilder[0]
loaded description from remote source
dbug: Kiota.Builder.KiotaBuilder[0]
step 10 - writing lock file - took 00:00:00.0142189
Generation completed successfully
dbug: Kiota.Builder.KiotaBuilder[0]
Api manifest path: /app/apimanifest.json
Hint: use the info command to get the list of dependencies you need to add to your project.
Example: kiota info -d "https://developer.icis.com/portals/api/sites/icis-live-portal/liveportal/apis/lnganalyticsapi/download_spec" -l Python
Hint: use the --include-path and --exclude-path options with glob patterns to filter the paths generated.
Example: kiota generate --include-path "**/foo" -d "https://developer.icis.com/portals/api/sites/icis-live-portal/liveportal/apis/lnganalyticsapi/download_spec"
</details>
### Other information
_No response_
Thanks for raising this @pjmagee
It looks like this issue only affect python at the moment as the other languages do not seem to exhibit this behaviour.
The cause here looks be that python properties are written by the CodeMethodWriter
rather than the property writer(not exactly sure of the reason why here) which expects the presence of the CodeMethodKind.Constructor
method in order to write the types.
When the additionalproperties are not present, the constructor is not added as the model does not have any property with a default value(additionalData).
To fix this we probably need to either have the python refiner have the constuctor forceAdd
the constructor for model types by passing the Boolean parameter here as well as the Class kinds that may not need the default constructor.