microsoft / kiota

OpenAPI based HTTP Client code generator
https://aka.ms/kiota/docs
MIT License
2.93k stars 205 forks source link

Specifying None as serializer/deserializer breaks kiota update #4916

Closed ajtribick closed 4 months ago

ajtribick commented 4 months ago

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

Csharp

Describe the bug

After generating a C# client passing the options --deserializer=None --serializer=None a client is generated without any default serializers. If the OpenAPI spec is then updated, running kiota update fails with "sequence does not contain any elements"

Expected behavior

The client should be updated

How to reproduce

Open API description file

No response

Kiota Version

1.15.0

Latest Kiota version known to work for scenario above?(Not required)

No response

Known Workarounds

No response

Configuration

Found on Windows 10, x64

Debug output

No response

Other information

Based on a quick debug, it appears that the kiota update command is trying to set up a factory class called "None", rather than treating this as an indication that there should be no default factories.

ajtribick commented 4 months ago

further update - looks like it works if you use "none" rather than "None". Looks like a case (in)sensitivity mismatch between kiota generate and kiota update.

andrueastman commented 4 months ago

Thanks for raising this @ajtribick

Looks like the hashset with the configurations are not set with the same comparers when the lock file is read. Authored https://github.com/microsoft/kiota/pull/4923 to resolve this one.