Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Further Elixir Client Improvements #12775

Merged
merged 6 commits into from Sep 12, 2022

Conversation

halostatue
Copy link
Contributor

Attention to @wing328 and @mrmstn.

Resolves #12731 and is the completion of the work that I started with #12751.

The changes here are extensive and likely resolve an issue that I have seen with the Ory SDK (ory/sdk#194). I have also been unable to run the integration suite for Elixir as I am (trying) to run everything in Docker (./run-in-docker.sh) as I do not have a suitable Java development environment set up, and do not do enough Java work to really justify it.

  • Updated the README for Elixir projects. Aside from some improved readability of the template by use of link references instead of inline links, I have also fixed the examples:

    • The deps example should have been putting a version constraint related to appVersion.

    • The config example should have been using packageName instead of appName. This particular issue repeats.

  • In all Elixir files:

    • Changed the function @docs formatting:

      • changed the ehading level for Parameters and Returns to h3 (### instead of ##). This will make somewhat better looking documentation that does not over-emphasize these details (which are not documented in a normal Elixir way, but this is somewhat to be expected with a code generator.) It may be desirable, after testing, to change this to h4 instead of h3.

      • Put parameter names and most return types in in-line code blocks (`hello`).

      • Put return types, when there are multiple types, in a Markdown list.

    • Fixed a lot of the spacing. Most files will be closer to Elixir standard formatting than they were. Because of the limitations of Mustache, it is still recommended that people who generate Elixir clients run mix format at least once on their codebase.

  • api.mustache:

    • Removed an awkward function pipeline call. If we specified at least Elixir 1.12 (something that I do not recommend as we have recently jumped from requiring Elixir 1.6 to Elixir 1.10), there is a better way to specify this now with Kernel.then/2. In the meantime, assigning the constructed request structure to a variable and then making a separate pipeline for the request execution and handling makes for much easier to read generated code.

    • Fixed the extra space issue with evaluate_response call tuple values; {{=<% %>=}} changes the tag types, so this change is intentional.

  • In config.exs.mustache, runtime.exs.mustache, mix.exs.mustache, and connection.ex.mustache, use packageName instead of appName for configuration specification. If packageName and appName differed, we would end up with cases like clients/client/elixir refers to an unavailable application ory/sdk#194.

  • connection.ex.mustache has been almost entirely rewritten. The changes started in order to eliminate a @doc compile-time warning, but shifted to remove the old way of building Tesla client structs with use Tesla. It works, but is no longer the recommended way of building Tesla clients.

    • The recommended way of building a Tesla Client would now be Tesla.client(Connection.middleware(), Connection.adapter()).

    • Exposed both Connection.adapter/0 and Connection.middleware/1 for use. Connection.middleware/1 has special handling for the cases where OAuth2 or HTTP Basic Auth are defined in the application, but do not currently handle any other auth methods.

  • deserializer.ex.mustache has mostly been reformatted. There are things that I do not like about it (I do not like pipelines with one line), and I have expanded one function capture into an anonymous function for readability.

  • request_builder.ex.mustache has been updated with better function and parameter descriptions and names. Please note that if request |> method(:delete) |> method(:post) is supposed to produce a POST operation, we will need to change from Map.put_new/3 to Map.put/3.

    • Reordered evaluate_response/2 so that it is the function documented, and made decode/2 and response_mapping/3 private functions. As far as I can tell, I have not changed the functionality.

Both the sample project and the example generated project compile cleanly without warnings or errors.

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package 
    ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (6.1.0) (minor release - breaking changes with fallbacks), 7.0.x (breaking changes without fallbacks)
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

Resolves OpenAPITools#12731 and is the completion of the work that I started with
OpenAPITools#12751.

The changes here are extensive and likely resolve an issue that I have
seen with the Ory SDK (ory/sdk#194). I have also been unable to run the
integration suite for Elixir as I am (trying) to run everything in
Docker (`./run-in-docker.sh`) as I *do not* have a suitable Java
development environment set up, and do not do enough Java work to really
justify it.

- Updated the README for Elixir projects. Aside from some improved
  readability of the template by use of link references instead of
  inline links, I have also fixed the examples:

  - The `deps` example should have been putting a version constraint
    related to `appVersion`.

  - The `config` example should have been using `packageName` instead of
    `appName`. This particular issue repeats.

- In all Elixir files:

  - Changed the function `@docs` formatting:

    - changed the ehading level for `Parameters` and `Returns` to h3
      (`###` instead of `##`). This will make somewhat better looking
      documentation that does not over-emphasize these details (which
      are *not* documented in a normal Elixir way, but this is somewhat
      to be expected with a code generator.) It may be desirable, after
      testing, to change this to `h4` instead of `h3`.

    - Put parameter names and most return types in in-line code blocks
      (`` `hello` ``).

    - Put return types, when there are multiple types, in a Markdown
      list.

  - Fixed a lot of the spacing. Most files will be *closer* to Elixir
    standard formatting than they were. Because of the limitations of
    Mustache, it is still recommended that people who generate Elixir
    clients run `mix format` at least once on their codebase.

- `api.mustache`:

  - Removed an awkward function pipeline call. If we specified at least
    Elixir 1.12 (something that I do not recommend as we have recently
    jumped from requiring Elixir 1.6 to Elixir 1.10), there is a better
    way to specify this now with `Kernel.then/2`. In the meantime,
    assigning the constructed request structure to a variable and then
    making a separate pipeline for the request execution and handling
    makes for *much* easier to read generated code.

  - Fixed the extra space issue with `evaluate_response` call tuple
    values; `{{=<% %>=}}` changes the tag types, so this change is
    intentional.

- In `config.exs.mustache`, `runtime.exs.mustache`, `mix.exs.mustache`,
  and `connection.ex.mustache`, use `packageName` instead of `appName`
  for configuration specification. If `packageName` and `appName`
  differed, we would end up with cases like ory/sdk#194.

- `connection.ex.mustache` has been almost entirely rewritten. The
  changes started in order to eliminate a `@doc` compile-time warning,
  but shifted to remove the old way of building Tesla client structs
  with `use Tesla`. It works, but is no longer the recommended way of
  building Tesla clients.

  - The *recommended* way of building a Tesla Client would now be
    `Tesla.client(Connection.middleware(), Connection.adapter())`.

  - Exposed both `Connection.adapter/0` and `Connection.middleware/1`
    for use. `Connection.middleware/1` has special handling for the
    cases where OAuth2 or HTTP Basic Auth are defined in the
    application, but do not currently handle any other auth methods.

- `deserializer.ex.mustache` has mostly been reformatted. There are
  things that I do not like about it (I do not like pipelines with one
  line), and I have expanded one function capture into an anonymous
  function for readability.

- `request_builder.ex.mustache` has been updated with better
  function and parameter descriptions and names. Please note that if
  `request |> method(:delete) |> method(:post)` is supposed to produce
  a `POST` operation, we will need to change from `Map.put_new/3` to
  `Map.put/3`.

  - Reordered `evaluate_response/2` so that it is the function documented,
    and made `decode/2` and `response_mapping/3` private functions. As
    far as I can tell, I have *not* changed the functionality.
Copy link
Contributor

@mrmstn mrmstn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you very much for all your changes, looks like a lot of work work and I really appreciate it a lot.

As I'm still on holiday (till 2022-07-12) I was only able to do the review on my phone (which isn't great, but better than nothing)

I've added some comments for discussion, overall I'm very happy with your changes and think they will add a lot of value to the generated clients, and the project itself.

@wing328 could you run the tests and give it another look?

@halostatue
Copy link
Contributor Author

@mrmstn I think that this is something that can potentially wait until you’re back from vacation for a more in-depth review. I want to also look at the Elixir documentation to clarify a few things (such as the fact that, if you control the OpenAPI specification, you should customize the connection.ex file to your API—like with the Nomad client—and put it in the generator ignore file.

- The example dependency code in the README had dropped the opening
  brace for the tuple. This has been resolved.

- The default formatting of the API pipelines has been adjusted to
  minimize possible changes from `mix format`.
Copy link
Contributor

@mrmstn mrmstn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @halostatue, thank you very much for your patient.
I had some time to continue my review and found some smaller things that should be fixed.

Please let me know if you have some questions according to my suggestions. Everything else looks really great, many thanks for your work!

halostatue and others added 4 commits July 16, 2022 22:26
Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>
….ex.mustache

Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>
….ex.mustache

Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>
@wing328
Copy link
Member

wing328 commented Aug 15, 2022

@mrmstn any further feedback/question on this PR? shall we merge it?

@halostatue
Copy link
Contributor Author

I’m fine with whatever, but it will probably take me a couple of days to respond for the next week, as I’ve got some other work that I’m finishing up.

Copy link
Contributor

@mrmstn mrmstn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wing328 Thank you very much for the bump, I wasn't aware that I'm the blocker 🙈

Everything looks great and can be merged! @halostatue Thank you very much for your contribution

@neilberkman
Copy link

Looking forward to getting this merged. Any ETA on this?

@wing328 wing328 modified the milestones: 6.1.0, 6.1.1 Sep 11, 2022
@mrmstn
Copy link
Contributor

mrmstn commented Sep 12, 2022

@wing328 What's the further proceeding? Is there anything missing?

@wing328 wing328 merged commit 194d421 into OpenAPITools:master Sep 12, 2022
@wing328
Copy link
Member

wing328 commented Sep 12, 2022

Sorry I missed it. Just merged.

@halostatue halostatue deleted the improved-elxir-connection branch September 12, 2022 14:30
@wing328
Copy link
Member

wing328 commented Sep 14, 2022

@mrmstn when you've time, can you please PM me via Slack?

https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g

@wing328 wing328 modified the milestones: 6.1.1, 6.2.0 Sep 24, 2022
wilsondy added a commit to tasso-inc/openapi-generator that referenced this pull request Apr 17, 2023
* enhance api exception in r client (#13046)

* [R] Add httr2 support (work in progress) (#13005)

* add httr2 support to r client gen

* fix headers

* add accepts, content-types

* update samples

* fix req

* update samples

* various fixes

* add data file test

* fix streaming, add tests

* [python-experimental] consolidates endpoints into paths module (#13007)

* Adds endpoint creation in path modules

* REgens samples

* Adds BaseApi so there can be 2 class interfaces for http method and operationid

* Adds paths init

* Adds enum containing paths

* Uses path enum for endpoint paths

* Adds camel case to undersce converstion in to ineum var name

* Fixes path enum generation

* Moves path api combination module into apis

* Moves tag apis into a tags module

* Adds path_to_api

* Changes module path to paths

* Fixes tag api imports

* Fixes self type in endpoint methods

* Adds test changes

* Adds tag enum

* Adds tag_to_api

* Adds missing tag

* Fixes self types in endpoint methods

* Refactors java endpoint generation to be simpler

* Further refactors generateEndpoints

* Generates one test file per endpoint

* Updates v3 samples

* Fixes endpoint tests, all tests passing now

* Samples regenerated

* Fixes petstore tests

* Generates separate endpoint test methods on each endpoint

* Fixes api docs and enum string values in those docs

* Regenerates samples

* Removes pass to fix tests

* [python-experimental] Fixes issue 12986 (#13054)

* Adds fix for api names and tag names

* Removes sample spec

* Samples regenerated

* Update tsconfig.mustache (#12753)

Fix #12728

* fix query param, fix spec (#13065)

* update samples

* [R][httr2] fix HTTP header (#13066)

* add test for header parameters

* fix header parameter in r httr2 client

* [python experimental] Issue 13043: fixes toExampleValueRecursive stackoverflow (#13062)

Fixes an issue in python-experimental that was causing a stackoverflow
error.

* Fixed by adding composed schemas to the list of 'includedSchemas'
* Fixed an additional issue that was causing a schema to be added to the
'includedSchemas' list
* Added a unit test with a minimal GeoJson spec to confirm results

* Issue 13043: converted an exception to a warning for doubly adding schemas to the includedSchemas list (#13070)

* [R][httr2] Fix form parameter support (#13057)

* fix form parameter support in the r client

* fix query param

* fix form parameters

* [rust] fix incorrect Cargo.toml generated when supportAsync & withAWSV4Signature are both enabled. (#13015)

* Bump terser from 4.6.3 to 4.8.1 in /website (#12946)

Bumps [terser](https://github.com/terser/terser) from 4.6.3 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump eventsource from 1.0.7 to 1.1.1 in /website (#12499)

Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.0.7 to 1.1.1.
- [Release notes](https://github.com/EventSource/eventsource/releases)
- [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
- [Commits](https://github.com/EventSource/eventsource/compare/v1.0.7...v1.1.1)

---
updated-dependencies:
- dependency-name: eventsource
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [PHP] Add support for server variables in operations (#12982)

* [FEATURE] Support for server variables in operations

* [AUTOGENERATED] update samples

* [PHP] Added tests for server variables in operations

* [Java] apache-httpclient serialize support custom contentType (#13058)

* java http-client multiPartBuilder support custom contentType for textBody

* java apache-httpclient serialize support custom contentType

* modify getContentType method

* Update php-symfony/model_variables.mustache to fix template bug (#13060) (#13061)

* fix TS model tests in Windows (#13072)

* Revert "Issue 13043: converted an exception to a warning" (#13074)

* Revert "Issue 13043: converted an exception to a warning for doubly adding schemas to the includedSchemas list (#13070)"

This reverts commit bbf463f7275b69053345630c61444b909d6e345d.

* Samples regen

* [jaxrs-spec] to fix default values for array (#13076)

* fix 13025 with correct default values for array

* fix missing curly bracket

* 3.0.3 spec updated with json schema tags (#13104)

* Spec updated with json schema tags

* Samples regenerated

* [python-experimental] moves model and api docs into subfolders (#13106)

* Regens docs in new locations, adds endpoint anchors

* Updates readme links and top of page link

* Model updates so the readme links work

* Samples regenerated

* Adds missing module names to apis and models

* [python-experimental] removes print (#13107)

* Removes print

* Samples regenerated

* Added parameter to add models in seperate project (#13044)

Samples and build for seperate model projects

* fix assignment, clean up tests, use !!! operator (#13075)

* [R] fix auto-generated doc, add checks for bearer/access token (#13112)

* update readme to show bearer auth

* fix doc

* fix doc

* C# API Client CancellationToken, Base Validation and Nullable/Required (#13049)

* Ensure CancellationTokenSource disposal in CSharp clients

* Fixed broken BaseValidate in CSharp models

* Ensure final CancellationToken is used in CSharp API clients

* Ensure EmitDefaultValue true for required properties in CSharp clients

* Regenerated samples

* Fixed broken C# ApiClient.ExecAsync disposable resources

* fix test

* update test file sha256

* Fix Perl cannot string bind undef (#13114)

* fix and add perl client tests

* fixed undefined value in Perl

* update perl client sample

* fix test case

* better validation for r parameters (#13119)

* [csharp-netcore] Form data serialize non-primitive objects (#12967)

* csharp-netcore: serialize non-primitive objects in form-data

* csharp-netcore: update samples

* [Kotlin] Add reserved word `contract` (#13108)

* [R][httr2] better support for OAuth authoriziation flows (#13123)

* better oauth support in r client

* better comment

* update samples

* remove commented code

* update samples

* fix mustache tag

* improve r regular expression handling (#13125)

* skip client id, secret validation to allow multiple auth schemas (#13126)

* [Spring] Fix generated api ignore basePath (#10573)

* remove @RequestMapping from the apiController.mustache file and add it
to the api.mustache file

* move the defaultBasePath.mustache file in src/main/resources/JavaSpring
so that it commun with all Spring server-side libraries (spring-boot,
spring-mvc). The value of default context path is the value of
contextPath variable.

* added a unit test to verify it

* update the outputDir variable to samples/server/petstore/spring-stubs in
the  bin/configs/spring-stubs.yaml file because it generates Spring
server-side classes. And not on the client-side as the output directory
seemed to suggest.

* Results of "generate-samples.sh bin/configs/spring*" command

* Remove default value of url in @FeignClient

* resolve conflicts with origin/master

* merge remote/master into branch

* fix samples after a merge with master

* delete the directory samples/client/petstore/spring-stubs because it
moved to samples/openapi3/...

* add samples/client/petstore/spring-stubs just for the CI build (normally
it is unnecessary))

* delete 3 kotlin class files commited by error in
samples/server/petstore/kotlin-springboot and
samples/server/petstore/kotlin-springboot-reactive

* Update the unit test SpringCodegenTest.doAnnotateDatesOnModelParameters
because one more annotation is generated (@RequestMapping)

Co-authored-by: rpruvost <rpruvost@ITEM-S78402.emea.msad.sopra>
Co-authored-by: rpruvost <rpruvost@ITEM-S78402>
Co-authored-by: rpruvost <rpruvost>

* Issue 13043: Improved handling of recursive schemas (#13109)

* Issue 13043: Improved handling of recursive schemas

Converted Exception to a warning when a Schema is doubly added to the includedSchemas list
Broke recursion in a more reasonable place when generating example values

* Addressed comments from PR

* fix: [JAVA/SPRING] [#12692] fixed optional config property legacyDisc… (#12713)

* fix: [JAVA/SPRING] [#12692] fixed optional config property legacyDiscriminatorBehavior always being overwritten to false in spring codegen

* feat: [JAVA/SPRING] [#12692] spaces instead of tabs

* feat: [JAVA/SPRING] [#12692] spaces instead of tabs in test

* fix: [JAVA/SPRING] [#12692] added comment

* fix: [JAVA/SPRING] [#12692] spaces instead of tabs

* fix: [JAVA/SPRING] [#12692] spaces instead of tabs in test

* Adds requiredVarsMap (#13117)

* Adds requiredVarsMap

* Fixes imports

* Adds requiredVarsMap to CodegenParameter

* Updates CodegenResponse

* Adds feature to codegenModel

* Fixes codegenProperty

* Switches to getRequiredVarsMap

* Uses curly braces for set definition

* Added blocked examples back n to test spec now that the required bug is fixed

* Sample regenerated

* Handles escaping required property names

* Fixes CI tests

* Samples regenerated

* Samples regnerated

* Fixes test

* Allow useInlineModelResolver to be influenced by generator options (#13056)

* Move logic so that it can dynamically be influenced by opts

* Or should it be here?

* We handle the useInlineModelResolver logic in configureGeneratorProperties after processOpts

Co-authored-by: Westerlaken, H.L. (Laurens) <laurens.westerlaken@devolksbank.nl>

* [Java] enum space value must not be generated as underscore (#13136)

* [Java] enum space value must not be generated as underscore

as this is invalid in Java 9

this closes #9607

* script changes

Co-authored-by: Sven Meier <sven@meiers.net>

* Better logic to handle duplicated properties in parent, child models (#13135)

* better logic to handle duplicated properties in child, parent models

* add tests, update samples

* [Go] Fix missing import for array/map of file (#13143)

* fix missing import for array/map of file in go client

* add new files

* [#12887] typescript-axios: nested object as query parameter (#13051)

* [#12887] typescript-axios: object as query parameter resolved

* Added samples for typescript-axios

* minor variable name change

* minor indentation fixes

* [OpenAPITools#12887] typescript-axios: backward compantiability maintained

* [OpenAPITools#12887] typescript-axios: backward compantiability maintained

* [OpenAPITools#12887] typescript-axios: backward compantiability maintained

* [#12887] Review comments incorporated

Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>

* Review comment incorporated

Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>

* [#12887] samples updated

Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>

* [Typescript-axios] Dot prefix on every query parameter (#13149)

* [#12887] dot prefix fixed for pr #13051

* [#12887] dot prefix fixed for pr #13051

* [#12887] review comment incorporated #13051

* Cleaned up cargo clippy warnings (#13011)

* Cleaned up cargo clippy warnings

* Re-add clippy allow statements; don't lowercase variable names

* update samples

* [Ruby] add `useAutoload` option to use autoload instead of require (#13153)

* [Ruby] Use Ruby autoload to lower memory usage and load times

Fixes #12648

Requiring all models up front can be very expensive in both time and
memory if there are many models. In an example client with 6000 models,
this would consume nearly 400MB of memory and take about 7 seconds to
load. This is mostly unnecessary as most users of the client library
will only actually use a small percentage of the library.

The changes in this commit use Ruby's autoload capability to defer the
loading until the constant is actually used. In that same example client
with 6000 models, when initially requiring the library, the memory
usage dropped to ~20MB and loaded in 0.3 seconds. As the constants are
loaded on-demand, the memory would increase towards that 400MB ceiling,
but if only a few constants are actually used, then memory will never
actually hit that ceiling.

An additional side effect of using Ruby's autoload is that the order of
declaring the constants is not important, as Ruby will naturally load
them in the correct order when they are needed. Thus, this commit obviates
PR #9103 and fixes #4690.

* add option to use autoload in ruby client

* test ruby clients only

* add tests

* update samples

* Revert "test ruby clients only"

This reverts commit 0aaf71cd4cc5d266f824b261a4d312f07bd589e5.

* update doc

Co-authored-by: Jason Frey <fryguy9@gmail.com>

* Fix missing import in `api.mustache` for Typescript generator (#13105)

* Fix missing import in `api.mustache` for Typescript generator

This fixes issue OpenAPITools/openapi-generator#11288.

* Generate samples

* Replace use of deprecated Faraday::UploadIO (#13127)

Faraday 0.16.0 added Faraday::FilePart as an alias to Faraday::UploadIO
and deprecated Faraday::UploadIO. In Faraday 2.0 the deprecated UploadIO
was removed.

Fixes: e12100b033c13b835fc3b3f1de159dc7f4634fc0

* Fix template for nullable models in rust new() fns (#10778)

Co-authored-by: Elric Milon <whirm@gmx.com>

* Adds $ref data to schema classes (#13163)

* Adds getRef/setRef

* Adds ref to CodegenModel

* Adds ref to CodegenProperty

* Adds ref to CodegenParameter

* Adds ref to CodegenResponse

* Sets ref on CodegenModel and CodegenProperty

* Samples regenerated

* Add tests to Rust (hyper, reqwest) clients (#13165)

* add tests to rust clients

* add new file

* add validations to R models (#13157)

* fix issues reported by roxygen in r client (#13176)

* [R] allow oauth scopes customization, remove unused import (#13179)

* add oauth scopes, remove unused import

* fix null check

* fix r model validations, add tests (#13181)

* [ci] Rename "bin/config/other" to make it clear that it is unmaintained (#13184)

* Fixed scala-sttp generator (#11949)

* fixed scala-sttp generator

* pr checklist

* fixed issue with imports in scala-sttp

* fixed samples

* changed isUnit to isDefault

* fixed errors

* Update modules/openapi-generator/src/main/resources/scala-sttp/api.mustache

Co-authored-by: João Ferreira <jtjeferreira@gmail.com>

* updated samples

Co-authored-by: João Ferreira <jtjeferreira@gmail.com>

* Avro fix arrays with items as a ref to defined enum (#13162)

* avro-schema generation fix for arrays with ref to enum (or any non primitive type) to include modelPackage prefix

* sample scenario and generated outputs for avro-schema

* create avro-schema dedicated test file

* Update allOf to not always be nullable (#12861)

* added nonNullableVars

* added return property to operation

* added return property to operation

* build samples

* added inner enum

* build samples

* allOf no longer always nullable

* added a comment

* Make "applyToParams" a Future + add "this." when decoding JSON (#13120)

* Bump jimschubert/query-tag-action from 1 to 2

Bumps [jimschubert/query-tag-action](https://github.com/jimschubert/query-tag-action) from 1 to 2.
- [Release notes](https://github.com/jimschubert/query-tag-action/releases)
- [Commits](https://github.com/jimschubert/query-tag-action/compare/v1...v2)

Signed-off-by: dependabot[bot] <support@github.com>

* Use a normal variable name inside a function, no need to make it private.

* Pass on authentication names because authentication implementations may need those!

* Generate Petstore samples.

* Allow authentication implementations to apply header and query parameters asynchronously.

* Allow inherited implementations to define a type for authentication class.

* Generate Petstore sources.

* Remove `authNames` from API client and authentication classes.

* Reference properties with `this.` in case one of them has the same name as a local variable.

* Regenerate Petstore source code.

* Revert adding a generic T in `ApiClient`.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* update samples

* [rust-server]: Update help (#13194)

* Fixed regular expression in python client codegen that was removing any trailing chars instead of only expected ones (#13164)

* Fixed regular expression in python client codegen

The previous regular expression was too loose, including any last character in the second group. This commit fixes that, making sure we only remove leading forward slashes, trailing forward slashes or trailing `\i`.

This commit closes 13069.

* Added generated files

* Edit comment

* Add test cases

Co-authored-by: antonio.silva <antonio.silva@feedzai.com>

* Fix #6899 - python-flask now uses the pre-existing getter/setter validators (#6911)

* make python-flask set attributes via existing setter

* regenerate python-flask templates

Co-authored-by: Matthew Davis <Matthew.Davis.2@team.telstra.com>
Co-authored-by: Ubuntu <ubuntu@ip-172-31-5-110.ap-southeast-2.compute.internal>

* Add support for Angular v14 (#12901)

* Add support for Angular v14

- Support Angular 14
- Support rxjs 7.5.5, tsickle 0.46.3, ngPackagr 14.0.2, zonejs 0.11.5
- Requires typescript >= 4.6.0 and < 4.8.0

* Review comments

- Remove duplicate tests
- Added openapi-generator-ignore

* Update samples/client/petstore/typescript-angular-v14-provided-in-root/pom.xml

* Update samples/client/petstore/typescript-angular-v14-provided-in-root/pom.xml

* Update samples/client/petstore/typescript-angular-v14-provided-in-root/pom.xml

* Review comments

- Added typescript-angular-v14-provided-in-root test module to root pom.

* update samples

Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>
Co-authored-by: Esteban Gehring <esteban.gehring@bithost.ch>

* [R] Add generateWrapper option (#13198)

* add generateWrapper option

* fix bug, add tests

* update doc

* fix null ref on invalid requestBody reference (#13199)

* [R] Fix warnings reported by r cmd check (#13205)

* fix warnings reported by r cmd check

* fix assignment

* [python-experimental] improves docs, add migration guide (#13210)

* Adds comments and migration readme section

* Samples regenerated

* Samples regenerated

* fix rdoc type (#13216)

* [python-experimental] code quality improvements (#13221)

* Changes http to https

* Refactors method to be simpler, removes unused json encoder

* Samples regen, test fixed, consolidated redundant return

* Samples regenerated

* Updates composed model property names

* Samples regenerated using composed schema name update

* Samples regen, removed unused arg in __get_oneof_class

* [R] Add fromJSONString method to oneOf/anyOf in R client (#13223)

* add fromJSONString method to oneOf/anyOf in R client

* update code samples

* [typescript-axios] Ignore unused imports when using 'withSeparateModelsAndApi' (#13204)

* Add typescript-axios/with-separate-models-and-api-inheritance sample as test for #13203

* [typescript-axios] Add // @ts-ignore to imports in models if withSeparateModelsAndApi is set

* [typescript-axios] Update samples

* [R] Minor improvements to the documentation (#13226)

* minor improvement to r doc

* better scopes

* [rust]: Remove unmaintained samples and specs (#13193)

* [rust]: Remove unmaintained samples and specs

* Fix checks

* move test file

* Fix test file

* [typescript-fetch] Serialize Set of primitives as array (#13195)

* [typescript-fetch] Fix array of primitive items where unique-items is true

* [typescript-fetch] Update examples

* [typescript-fetch] Split template into multiple lines

* Standardizes import gathering code (#13137)

* Uses the same util to add all imports

* Removes unneeded class variable definition

* Samples regenerated for Groovy

* Fixes imports in Lua so object import does not show up

* Fixes nim imports

* Fixes proto generation

* Removes accidental new protobuf sample

* Improves proto allOf test

* Controls import addition with parametersAndResponsesImportFromV3SpecLocations

* More import protection in fromFormProperty

* More test fixes

* Samples regenerated

* Do not import composed schemas if those features are not supported

* Samples regenerated

* Adds new param importContainerType

* Fixes tests

* Samples regenerated

* Turns off importContainerType in JavaMicronautAbstractCodegen and regens samples

* Reverts most import changes, puts original imports behind a constant check

* Samples regenerated

* Updates model imports, samples regenerated

* Removes typeMapping and instantiationMap types from getImports

* Reverts template and regens samples

* Revers generator java files

* Stops setting complexType on codegenParameter

* Adds missing import back in

* Reverts languageSpecificPrimitives changes

* Samples regenerated

* Regnerates samples

* Reverts proto files

* Removes hoistParameterArrayItemBaseTypeHigher

* Samples regen

* Reverts parameter property

* Turns off importContainerType in getContent

* Samples regenerated

* Uncomments java test

* Adds imports for codegenParameter.schema

* Changes property name to importFromV3SpecLocations

* Changes property name to addSchemaImportsFromV3SpecLocations

* Removes unused java codes

* Fixes javadoc

* Removes extra docs file

* [python-experimental] style + naming cleanup (#13234)

* Updates templates

* Samples update

* Other sample updated

* Removes unserscore prefix from Validators

* Samples regenerated

* fix string comparison in scala sttp client (#13235)

* better handling of NPE in k6 client generator (#13236)

* minor code improvement in model utils (#13237)

* update undertow to newer version (#13238)

* feat: [JAVA] [resttemplate] [#13146] added support for abstract file in operation response for rest template (#13168)

* Fix javascript-apollo generator/template (#13191)

* bump apollo-datasource-rest to 3.6.1

* Fix RESTDataSource import

* fix ApiClient template

* fix parameters in callApi, add requestInit param

* change parameters to RESTDataSource convenience methods

* add .babelrc file, even in ES6

* simplify .babelrc... no need for all those fancy things, i think

* fix API test mustache template

* Update package.mustache

* add Set as a language-specific primitive

* Update JavascriptApolloClientCodegen.java

* make babel packages dev dependencies only

* Get inspiration from the main Javascript Generator :confounded:

* correctly get the basePath from spec

* fix basePath template reference

* Do not sanitize project description

Project descriptions are a multiline string — we just need to escape a few special characters (which we're already doing by invoking escapeText() on line 334)

* Fix module name when generating scoped package

If we set the project name to "@myorg/mypackage" (scoped package[1]), running `npm test` will fail, as it will generate faulty code.

[1] https://docs.npmjs.com/about-scopes

* update doc

* [python-experimental] move validations into cls (#13252)

* Adds null checks to validation properties

* Modifies the templates to move validations into the cls

* Regnerates unit test spec

* Template update to get rid of cls factory for validations

* Updates samples for unit test spec

* Moves SchemaValidator class

* Removes SchemaValidator

* Fixes 2 tests in v3 sample

* Reverts version files

* Reverts 2 files

* [python-experimental] moves composed schemas into cls (#13255)

* Composed schemas moved into cls

* Fixes tests

* Other sample regenerated

* Reverts version files

* fix the issue of inline-enum for array (#13250)

update doc

* [csharp-netcore] Fix keys of the enum reference map (#13242)

* fix(cpp-pistache-server): Add support for AnyType objects (#13232)

Co-authored-by: Ryan Shea <ryan.shea3@t-mobile.com>

* Better enum tests for scala-sttp (#13261)

* better petstore tests for scala-sttp

* test scala sttp in github workflow

* test with jdk 11

* comment test

* [python-experimental] creates + uses MetaOapg cls to store non-properties schema keywords (#13256)

* Uses MetaOapg

* Fixes some tests

* Fixes tests

* Removes pass

* Generates unit test sample

* Samples regenerates

* Reverts version files

* Changes uniqueItems to Boolean type

* Samples regenerated

* Fixes code in addImportsForPropertyType

* Fixes codegenModel and codegenProperty

* Fixes CodegenParameter

* Adds getUniqueItemsBoolean/setUniqueItemsBoolean

* Updates template to use getUniqueItemsBoolean

* Adds printing of uniqueItemsBoolean in codegenModel

* Samples regenerated

* fix: Deepcopy fail for allOf schemas (#13130)

* fixes #13131: support matrix parameters and other parameter styles in typescript-angular (#13132)

* fix TypescriptAngularPetstoreIntegrationTest

(since this has been abandoned for a long time: just copy the generated code the the "expected" directory)

* fix TypescriptAngularArrayAndObjectIntegrationTest

(since this has been abandoned for a long time: just copy the generated code the the "expected" directory)

* fix TypescriptAngularAdditionalPropertiesIntegrationTest

(since this has been abandoned for a long time: just copy the generated code the the "expected" directory)

* fixes #13131: add custom path parameter expansion to typescript-angular

* fixes #13131: add example for typescript-angular: paramExpansionStrategy=custom

* fixes #13131: document usage of paramExpansionStrategy=custom in README.mustache

* fixes #13131: fix unit tests and sample url for http-param-expander package

* fixes #13131: update samples

* fixes #13131: drop new cli parameter, handle encoding in template only

* fixes #13131: add TestNG groups to all Typescript tests

* fixes #13131: old angular/typescript does not understand type imports

* Apply suggestions from code review

Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>

* fixes #13131: implement backwards-compatible behavior for format: 'date-time'

* fixes #13131: update typescript-angular integrationtests

* fixes #13131: review fixes + lots of documentation

* fixes #13131: update integrationtests

* fixes #13131: update docs/examples

* fixes #13131: update integrationtests

* fixes #13131: unify enums to union-types to make the api feel mora angular-ish

* fixes #13131: update examples

* fixes #13131: update docs/examples after merge of master

Co-authored-by: Christoph Linder <post@christoph-linder.ch>
Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>

* Javascript Generator: two small sanitization changes 🦠 (#13268)

* Javascript Generator: small sanitization changes

Sanitize module name, do not sanitize description.

If we set the project name to "@myorg/mypackage" (scoped package[1]), running `npm test` will fail, as it will generate faulty code due to the module name including the '@' symbol, which is not a valid JS identifier.

Additionally, we don't need to sanitize the description - spaces and special characters are fine. We just need to make sure they are escaped, which we're already doing by invoking escapeText() on line 329

[1]anitize module name, do not sanitize description

* update JS samples

* better null check in default codegen (#13264)

* fix(cpp-pistache-server): Fix enum generation for useStructModel=true mode (#13249)

* Explode query params for kotlin generator (#13154)

* Add missing golang tag in code markdown (#13248)

* update go samples

* Allow override CodegenConfigurator in GenerateTask (#13140)

* Update 'GenerateTask'. Allow override config

* Update 'GenerateTask'. Allow override config

Co-authored-by: Dmitry Glushkov <daglushkov@alfabank.ru>

* fix: [csharp-netcore]: anyOf fixes for Primitive types (#13172)

* fixed null-coalescing operator incorrectly used for primitive types with the same change than @jafin in https://github.com/OpenAPITools/openapi-generator/pull/11427

* fix: [typescript-angular] incorrect import when model starts with number (#13277)

fixes #13201

* Add more tests for Gradle plugin in Github workflows (#13280)

* add more tests for gradle plugin

* update gradlew to 6.8.3

* fix typo

* update comment

* [rust] [rust-server] Add AbstractRustCodegen (#13231)

* Add AbstractRustCodegen

* Fix minor bug

* Fix copy-pasting mistake

* Simplify addApiNamePrefixAndSuffix

* [protobuf] fix set, add tests (#13286)

* fix set, add tests for protobuf

* add new files

* update doc

* remove yaml

* fix: [typescript-angular] `.join` does not exist on type `Set` (#13278)

fixes #11782

* [python-experimental] improves type hints (#13271)

* Templates updated, dict properties moved into Meta

* Fixes tests

* Renames _discriminator to discriminator

* Moves required vars into required

* Renames _additional_properties to additional_properties

* Adds MetaOapgTyped

* Adds type hints for MetaOapg to classes that neen it

* Adds StrMixin

* Adds DecimalMixin

* Adds BoolMixin

* Adds NoneMixin

* Adds TupleMixin

* Adds FrozenDictMixin

* Regenerates unit test samples

* Only quotes type hints if they are imported

* Moves _items into Meta

* Renames _items to items, various small type hint fixes

* Adds type hints for object model new signature

* Adds type hints for body schema primitive types

* Adds primitive types to all query/path/header/cookie params

* Samples regenerated for unit test api

* Version files fixed

* fix return in r (#13294)

* Combine javascript and javascript-apollo generators (#13270)

* Combine javascript and javascript-apollo generator functionality

* Combine javascript and javascript-apollo templates

* update configs

* deprecate javascript-apollo generator

* bonus magic string deletion :sparkles:

* update samples

* update generator docs

* fix: include .babelrc in apollo generation

* update samples

* update samples

* rename javascript-apollo to javascript-apollo-deprecated

* fix javascript apollo library template

Apollo library now uses the partial_model_generic template file from the ES6 library, as it includes many fixes and improvements (including handling models with ill-named attributes)

* update samples

* Create javascript-apollo-deprecated.md

* Updated javascript generator template's gitignore

Updates .gitignore with that from https://github.com/github/gitignore/blob/main/Node.gitignore

Main reason for the update is to ignore the 'dist' folder with compiled files by default.

* javascript generator: merge api_test template files

The only difference is that Apollo is not designed for browser, so having a "if(browser)" check is useless, but doesn't hurt.

* update docs

* cleanup

* avoid possible config clash

* update javascript-apollo sample

* update javascript-es6 sample

I kept the pom.xml from before

* update javascript-promise-es6 sample

kept pom.xml

* update samples

* fix protobuf variable name (#13296)

* minor enhancement to the JS apollo generator (#13297)

* Fix for issue 13272 - Syntax error in generated html (#13293)

* update html2 samples

* Cpp restbed server improvements (#13030)

* Keep old implementation of cpp-restbed generator as cpp-restbed-server-deprecated

* Refactor operation path processing

* Restructure samples directory to better allow writing tests

* Improve templates for cpp-restbed-server

Improve templates

* Add integration tests

* Improvement in templates for cpp-restbed-server

* Fix tests

* Improve cpp-restbed generator

* Improve cpp-restbed-server

* Add more tests

* Add suppoert for arrays of enums in query params

* Generate CMakeLists.txt

* Small improvements and example in Readme

* Add integration tests to maven project

* Update doc

* update doc

* [R] minor bug fixes in oneOf, anyOf (#13298)

* update oneof to handle primitive types in r client

* add support for primitive type support in anyOf in r client

* remmove lock

* [R] Better rdoc  (#13275)

* better rdoc

* update doc

* update samples

* [R] override `print`, lock classes (#13300)

* override print, add lock

* add print, lock class to anyof/oneof

* add oneOf discriminator lookup support (#13301)

* [python-experimental] improves type hints for arrays, and object required properties (#13299)

* Regenerates sample with additional enum values

* Sample regenerated, array type hints working

* Unit test sample regenerated

* Removes unneeded __getattribute__

* Sample regenerated using getRequiredVarsMap for property type hints

* Adds schemaFromAdditionalProperties to tell if a CodegenProperty is from properties or additionalProperties

* Adds get/setSchemaIsFromAdditionalProperties

* Updates codegenModel

* Updates codegenParameter

* Updates codegenResponse

* Uses setSchemaIsFromAdditionalProperties

* Fixes array new typ ehint and additional property type hints

* Samples regenerated

* Adds missing parms to javadoc

* Fixes param name

* Adds missing param to javadoc

* [csharp-netcore] To support Secret API key input as string (#13276)

* To support api secret key to take input as string.

* To support Secret API key input as string

Co-authored-by: Savitha M R <savitha.m@maplelabs.com>

* Small fixes and cleanup on cpp-restbed-server (#13305)

Some small issues sneaked into the improved restbed generator.

* [swift]: support uuid in FormDataEncoding (#13228)

* update doc

* [cpp-ue4] Support UE5 version of FTickerObjectBase (#13304)

Co-authored-by: nullbus <nullbus@nm-fc.com>

* [python-experimental] adds dict["key_name"] type hints (#13309)

* Uses frozendict module import in schemas and api_client

* Regnerates sample

* Adds overload type hints

* Adds __getitem__ methods for invalidly name properties

* Fixes code that instantiates referenced schemas in object payloads

* Fixes getitem literals containing control charaters

* Sorts params by required, adds type hints for properties with addProps turned off

* Unit test spec sample regenerated

* Adds stub files for models and endpoints

* Omitting some endpoint info from endpoint stub files

* Removes more from endpoint stub

* Deletes all except for schema definition in endpoint stubs

* Removes simple validations from stubs

* Removes endpoint parameter deifnition from endpoints stubs

* Removes unnecessary ../ stub variable access

* Samples regenerated

* Samples regenerated, fixed handling of invalidly named properties

* Samples regenerated

* Reverts version files

* [python-experimental] improves type hints of optional object properties (#13314)

* Adds Unset type hint for use cases containing additional properties

* Simplifies no addProps type hint template

* Unset type hints added when additionalProperties are off

* Adds __getitem__ unset fix

* Adds unset test

* Fixes non overload method when addprops are present

* Sample regenrated, tests added, readme updated

* Unit test sample updated

* Reverts version files

* add additional properties support in r client (#13317)

* [swift5] explode query params only if necessary (#13202)

* propagate explode option to mapValuesToQueryItems

* regenerate swift5 samples

* [python-experimental] adds NullableX base class mixins, fixes additionalProperties type hint (#13323)

* Makes additionalProperties type hint include Unset

* Adds 2-class Mixins

* unit test sample regenerated

* Reverts version files

* fix http basc auth in R client (#13330)

* [python-experimental] improves method names (#13325)

* Replaces all validate methods with public validate ones

* More methods made public with _oapg suffix

* Makes methods private where one can

* Fixes tests

* Fixes typo, maked Disciminable methods public

* Method changed to from_openapi_data_oapg

* Fixes tests for from_openapi_data_oapg

* Tweaks endpoint stub so the endpoint exists for ycharm type hints

* Makes Api methods protected

* Adds binary python type hints, makes get_new_instance_without_conversion_oapg public

* Protects some schema methods

* Protects more schema methods

* Renames as_x, is_x acessors with needed suffix

* Fixes some tests

* Fixes tests, fixes new signature for DateSchema

* Methods removed and made private

* Fixes indentation

* Samples regenerated

* [swift5] distinguish (un-)authenticated requests (#13321)

* add isRequestAuthenticated to request builder

* update samples

* improve samples

* [R] Update fromJSON to handle additional properties (#13331)

* update fromJSON to handle additional properties

* update RoxygenNote to newer version

* move print to public method, leave commented code to lock, unlock the class (#13342)

* fix: ensure Resteasy JAX-RS Response object closed (#13333)

Signed-off-by: Michael Edgar <medgar@redhat.com>

Signed-off-by: Michael Edgar <medgar@redhat.com>

* [maven] Use one of two default paths of output directory according to the lifecycle phase (#13151)

In case the lifecycle phase is "generate-test-sources" the default output directory is:
"${project.build.directory}/generated-test-sources/openapi"

In case of any other lifecycle phase the default output directory is:
"${project.build.directory}/generated-sources/openapi"

Also use the "src/main/java" as the only default source folder in the output path for both
cases when addCompileSourceRoot == true and when addTestCompileSourceRoot == true.
In case you really need "src/test/java" it still can be set in the configOptions manually:

    <configOptions>
        <sourceFolder>src/test/java</sourceFolder>
    </configOptions>

* Fix generation of default array values for kotlin client (#13243)

* Fix generation of default array values for kotlin client

* rerun generation scripts

* replace list of enum with list of string

* Do not generate new models for readonly schema references (#13303)

* Add example of nested schema issue

* Add failing test case

* Special case properties with a single allOf and readonly

* Remove rogue file from FILES

* Feature/update kotlin dependecies template (#12966)

* update Kotlin & Ktor versions

* update samples

* fix gradle version

* update the ktor client templates and project samples

* update the ktor client templates and project samples

* revert multiplatform upgrade

* update kotlin multiplatform

* upload kotlin Multiplatform samples

* fix gson ktor sample

* update samples

* fix: unused imports

* fix imports of ApiClient

* update kotlin samples

* update samples

* [R] Remove obsolete importMapping code, add tests (#13345)

* remove import obsolete code, add tests

* remove man fodler

* update .gitignore

* Adds isBooleanSchemaTrue/False getters and setters (#13341)

* Adds getters and setters for boolean schema true and false

* Updates CodegenModel

* Updates codegenProperty

* Updates codegenparameter and codegenresponse

* Adds comments describing the new properties

* Updates additionalProperty setting for python-experimental

* Sample regenerated

* Docs updated

* Do not write additionalProperties when they are unset

* Updates criteria for when DictSchema subcalsses are created

* Adds NotAnyTypeSchema when a schema is False

* Updates new kwargs signature

* Updates get_item type hints

* Updates sample, readme updated

* Simplifies method calls

* Adds get_item_oapg, removes unset from get_item and getattr

* Sample regenrated

* Fixes tests

* Raises AttributeError if a property is not required and it is dotname accessed

* Fixes one test

* Fixes 3 tests

* Fixes test

* Fixes two more tests

* Fixes test

* Fixes two tests

* Fixes two tests

* Tests fixed

* Unit test sample regerated, fixed unset addprops required type hint issue

* Migration guide updated

* Samples regenerated

* fix allVars to handle empty string and more (#13346)

* fix query parameter in r client (#13348)

* escape % in description in r model @field (#13353)

* add Zomzog to java spring technical committee

* [dart-dio] handle polymorphism + discriminator serialization (#12295)

* return structured serializer

* generate samples

* implmented postProcessAllModels to fix assignment of inherited models

* Templates now respect inheritance

* regen dart samples

* only built value support for now

* ignore unused elements

* fixed tests

* new configs to test oneOf

* add some helper vendorextensions for oneOf support

* update templates

* regen samples

* resolve conflicts

* fix missing serializers

* Updated samples and fixed merge conflict

* updated samples

* Follow java conventions

* Follow java conventions

* updated samples

* update sampels 2

* update samples 3 ...

* fix underscores

* fixed missing imports from java code

* update config names

* updated samples

* updated built_value deps

* regen samples

* workaround built_value abstract builders google/built_value.dart#1180

* regen samples

* updated test pubspec

* temp fix rewriteImports for Lists and maps

* Add new samples to CI

* Improve white spaces & formatting

* fix enums not getting assigned correctly

* update samples

* fixed typo

* regen samples

* remove repeating imports

* regen samples

* ignore unused_element warning

* updated tests

* regen samples

Co-authored-by: Peter Leibiger <kuhnroyal@gmail.com>

* [python-experimental] adds new json content type (#13356)

* Adds json detection for application/json-patch+json

* Adds jsonPatch route and schemas

* Adds test_json_patch

* Unit test sample updated

* Reverts version files

* [python-experimental] adds and uses regex patterns for json + filename detection (#13357)

* Unit test sample regenerated

* Reverts version files

* [python-experimental] Improves additionalProperties processing when additionalProperties is unset (#13347)

* Adds NotAnyTypeSchema

* Unit test sample regenerated

* Turns parameter tests back on

* Removes unused from_server_types

* Reverts version files

* Samples regerated with fixed type hints

* Further fixed type hints

* [python-experimental] adds test verifying inheriting from multiple AnyType classes (#13358)

* Adds test_additional_properties_validator

* Updates test

* Reverts file

* Mark overrides in typescript-fetch and typescript-rxjs (#13322)

* feat(typescript-fetch): mark overrides

fix #12948

* feat(typescript-rxjs): mark overrides

fix #12948

* update ts samples

* Escape quotes in example of array type (#12505)

Escape quotes in example of array type in Schema and ApiModelProperty annotations

* [R] support explode (true/false) in query array parameters (#13364)

* fix query parameters (explode or not) in r client

* add tests

* Adding TileDB logo as suggested by William Cheng (#13366)

* [C][Client] Treat "null" as a valid value for a field of a JSON map (#13352)

* [Java][Feign] convert expirationTimeSeconds to milliseconds (#13361)

* Fix #13369: kotlin-client with okhttp doesn't escape path parameters with slashes correctly (#13370)

* Fix #13369

* Regenarate samples

* Fix support for okhttp3

* update jackson databind to newer version (#13391)

* 6.1.0 release (#13398)

* Prepare 6.1.1 SNAPSHOT version (#13399)

* prepare v6.1.1

* update samples

* update doc

* Adds IJsonSchemaValidationProperties format getter and setter +uses the format info (#13360)

* Adds format getter and setter

* Updates codegenProperty

* Updates codegenModel

* Updates codegenParameter + Response

* Sets format and removes unused import code in python-experimental

* Samples regenerated

* Samples regenerated

* Adds AnyTypeAndFormat

* Separates format bases out from their str or number bases

* Docs updated

* Updates python-exp, stops setting isDate and uses format instead

* Removes python-experimental isDate usages

* Fixes password usages

* Turns off isDateTime in python-experimental java layer

* Sample regnerated without isDateTime

* Removes isUuid

* Turns off isDecimal, decimal_payload broken

* Removes isDecimal

* Removes isByteArray

* Removes isBinary python-exp usages

* Removes isFloat isDouble setting from python-experimental

* Removes isDouble isFloat usages in sample

* Stops setting isShort and isLong in python-exp java layer

* Removes isShort isLong usages from python-exp and generates sample

* Adds decimal as integer input

* Adds missing bool type

* Adds validations to format mixins, adds test_uuid

* Adds test_date

* Adds test_date_time

* Adds test_number

* Adds test_int32

* Adds test_int64

* Adds test_double

* Adds test_float

* Samples updated

* Fixes javadoc

* Further Elixir Client Improvements (#12775)

* Further Elixir Client Improvements

Resolves #12731 and is the completion of the work that I started with
#12751.

The changes here are extensive and likely resolve an issue that I have
seen with the Ory SDK (ory/sdk#194). I have also been unable to run the
integration suite for Elixir as I am (trying) to run everything in
Docker (`./run-in-docker.sh`) as I *do not* have a suitable Java
development environment set up, and do not do enough Java work to really
justify it.

- Updated the README for Elixir projects. Aside from some improved
  readability of the template by use of link references instead of
  inline links, I have also fixed the examples:

  - The `deps` example should have been putting a version constraint
    related to `appVersion`.

  - The `config` example should have been using `packageName` instead of
    `appName`. This particular issue repeats.

- In all Elixir files:

  - Changed the function `@docs` formatting:

    - changed the ehading level for `Parameters` and `Returns` to h3
      (`###` instead of `##`). This will make somewhat better looking
      documentation that does not over-emphasize these details (which
      are *not* documented in a normal Elixir way, but this is somewhat
      to be expected with a code generator.) It may be desirable, after
      testing, to change this to `h4` instead of `h3`.

    - Put parameter names and most return types in in-line code blocks
      (`` `hello` ``).

    - Put return types, when there are multiple types, in a Markdown
      list.

  - Fixed a lot of the spacing. Most files will be *closer* to Elixir
    standard formatting than they were. Because of the limitations of
    Mustache, it is still recommended that people who generate Elixir
    clients run `mix format` at least once on their codebase.

- `api.mustache`:

  - Removed an awkward function pipeline call. If we specified at least
    Elixir 1.12 (something that I do not recommend as we have recently
    jumped from requiring Elixir 1.6 to Elixir 1.10), there is a better
    way to specify this now with `Kernel.then/2`. In the meantime,
    assigning the constructed request structure to a variable and then
    making a separate pipeline for the request execution and handling
    makes for *much* easier to read generated code.

  - Fixed the extra space issue with `evaluate_response` call tuple
    values; `{{=<% %>=}}` changes the tag types, so this change is
    intentional.

- In `config.exs.mustache`, `runtime.exs.mustache`, `mix.exs.mustache`,
  and `connection.ex.mustache`, use `packageName` instead of `appName`
  for configuration specification. If `packageName` and `appName`
  differed, we would end up with cases like ory/sdk#194.

- `connection.ex.mustache` has been almost entirely rewritten. The
  changes started in order to eliminate a `@doc` compile-time warning,
  but shifted to remove the old way of building Tesla client structs
  with `use Tesla`. It works, but is no longer the recommended way of
  building Tesla clients.

  - The *recommended* way of building a Tesla Client would now be
    `Tesla.client(Connection.middleware(), Connection.adapter())`.

  - Exposed both `Connection.adapter/0` and `Connection.middleware/1`
    for use. `Connection.middleware/1` has special handling for the
    cases where OAuth2 or HTTP Basic Auth are defined in the
    application, but do not currently handle any other auth methods.

- `deserializer.ex.mustache` has mostly been reformatted. There are
  things that I do not like about it (I do not like pipelines with one
  line), and I have expanded one function capture into an anonymous
  function for readability.

- `request_builder.ex.mustache` has been updated with better
  function and parameter descriptions and names. Please note that if
  `request |> method(:delete) |> method(:post)` is supposed to produce
  a `POST` operation, we will need to change from `Map.put_new/3` to
  `Map.put/3`.

  - Reordered `evaluate_response/2` so that it is the function documented,
    and made `decode/2` and `response_mapping/3` private functions. As
    far as I can tell, I have *not* changed the functionality.

* Address issues found in code review

- The example dependency code in the README had dropped the opening
  brace for the tuple. This has been resolved.

- The default formatting of the API pipelines has been adjusted to
  minimize possible changes from `mix format`.

* Update modules/openapi-generator/src/main/resources/elixir/api.mustache

Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>

* Update modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache

Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>

* Update modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache

Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>

* Update templates based on review comments

Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>

* [python-experimental] Enhance octet-stream deserialize (#13402)

* [python-experimental] Enhance octet-stream deserialization

When the headers didn't provide the filename, use the url of response to
extract filename.

* [python-experimental] Remove todo comment.

* [python-experimental] Fix test code.

* Update samples

* [python-experimental] Refined the method and the test

+ Early return when the url is empty or `None`.
+ Removed unused f-string prefix.

* [python-experimental] Comapre url is None explicitly.

* Update samples.

* fix(typescript-fetch): Handle cors errors. (#12960)

* fix(typescript-fetch): Handle cors errors.

If there is a communication error,
e.g. an OPTIONS request returns 404 not found,
then the whole request is cancelled and there is no
response object (it is undefined).

I observed the following error:
TypeError: Cannot read properties of undefined (reading 'status')
Basically response was undefined.

In order to circumvent this issue, we do a check
to make sure response is "truthy", which works
for objects.

With these code changes, it will throw a ResponseError,
which is what you would expect instead of a TypeError.

* regenerate typescript-fetch stuff

* retry code generation

Co-authored-by: Joe Heyming <jheyming@Roblox.com>

* [swift5]: support arrays in multipart/form-data (#13383)

* [swift5]: support arrays in multipart/form-data

* update samples

* add validation for query enum parameters in r client (#13415)

* Fix applying optional query parameters (#13419)

* add query params

* update samples

* [Spring] Bean validation for headers (#13414)

* Fix php generators treating double as a native type (#13421)

* Fix php generators treating double as a native type

Fixes #13335

* Remove double handling in enum

* Add missed double type removal

* Update customization.md (#13416)

* [python-experimental] adds more base class mixins, preparation for v3.1.0 type arrays (#13436)

* Removes unnecesary typing.Unions

* Adds qty 3 mixin

* Adds qty4 mixin

* Adds mixins for 3-5 type combinations

* Regenerates samples

* [python-experimental] simplifies type checking (#13437)

* Better control of when to write MetaOapg

* Makes MetaOapg in Schema a type hint rather than assignmnet

* Samples regenerated

* Adds tuple types

* Removes types info

* Adds _types

* Samples regenerated

* Adds missing mixins, samples regenerated

* SchemaTypeChecker removed

* Samples regnerated

* Adds dependentRequired (#13442)

* Updates codegenmodel

* Updates codegenProperty

* Updates codegenParameter

* Updates codegenResponse

* Samples regenerated

* support set in r client parameters (#13430)

* Add set support to model properties in R client (#13443)

* add set support to model properties in r client

* update samples

* Adds contains (#13449)

* Adds contains getter and setter

* Updates codegenProperty

* Updates codegenModel

* Updates codegenparameter

* Updates codegenResponse

* Samples regenerated

* r better doc (#13447)

* [kotlin][client] fix file upload with okhttp (#13435)

* [kotlin][client] fix file upload with okhttp

* [kotlin][client] fix file upload with okhttp

* [kotlin][client] update sample projects

* [kotlin][client] fix file upload with okhttp3

* [kotlin][client] update sample projects

* fix: incorrect boolean literal in unit tests [python-flask] (#13397)

Co-authored-by: Kevin Bannier <kevin.bannier@outlook.fr>

* [R] Add array support to path parameters (#13450)

* add array support to path parameters (r client)

* update samples

* [JAVA] fix ClassCastException validating an optional JsonArray which is a JsonNullable (#13448)

* Upgrades swagger parser to 2.1.1, allows ingestion of 3.1.0 specs (#13133)

* Upgrades swagger-parser

* Removes additional property and halting of spec processing

* Updates tests

* Docs updated

* [PHP-Symfony] Encurage Symfony 5 bundle directory structure best practices (#13014)

* use .yaml instead of .yml

This is recommended by Symfony standards

* save Bundle files also to src path

* add test for generate ping

* add package imports

* fix expected file names

* why is Api/ApiServer.php missing

* output filenames

* use getAbsolutePath for debug purpose

* do not use punctuation as current directory

* refactor: remove todos

* use also .yaml in test to fix it

* add test for setting a different source directory

* use correct const for setting source dir property in tests

* import the AbstractPhpCodegen in test class

* put also Resources to source path

* save docs not to Resources

* update samples and improve src path in autoload.php and composer.json

* update moved samples

* [typescript-angular] Support body for DELETE requests (#13457)

* [typescript-angular] Update api template to use HttpClient#request instead of its http-method-specific wrappers

* update expected output for integration tests

* regenerate samples

* [kotlin] fix enum default values (#13404)

* [kotlin-okhttp]: fix enum default parameters

* [kotlin-retrofit]: add enum support

* update samples

* fix(typescript-angular): compile error with `queryParamObjectFormat` and `tsc --strictNullChecks` (#13431)

fixes #13429

* [python-experimental] Fix error message (#13471)

* fix error message formatting

* add more infos in error message

* [Dart] Remove toString() call in enum TypeTransformers (#13452)

* Updated samples

* [Dart] Removed 'toString' check on enum TypeTransformers (#12167)

* [Ruby] Change constants lookup methods in enum class (#13285)

* [Ruby] Add missing block ends

* [Ruby] Change constants lookup methods in enum class

* Update ruby samples

* Support for international letters like øæå. (#13316)

Co-authored-by: Sverre Kristian Valskrå <Sverre.Valskra@skatteetaten.no>

* add links to blog post

* Rust: Issue #13453 - Empty enum variant names (#13454)

* PHP: fix ranged status codes (#13012)

* PHP: fix ranged status codes

* PHP: update samples

* [python-experimental] improves documentation (#13477)

* Improves docs generation

* Adds inline composed schemas

* Adds missing from property

* Adds notes info

* Fixes spacing

* Updates notes, generates container properties

* Adds anchors to property schema docs

* Adds format info to docs

* Adds items schema documentation

* Adds doc for additionalProperties

* Adds anchors for response types

* Fixes anchors in endpoint

* Fixes api doc link to model doc

* Removes returnType from api docs because it is unused

* Fixes float and double tests

* fix optional body parameter in r (#13483)

* [rust-server] Resolve clippy warnings (#13473)

* fix(rust-server): Use ok_or_else instead of ok_or

* fix(rust-server): Remove empty format string

* fix(rust-server): Remove redundant field names in struct initialisation

* fix(rust-server): Remove redundant clones

* fix(rust-server): Derive Eq with PartialEq always

* fix(rust-server): Remove immediately pushes replaced by vec macro

* fix(rust-server): Remove useless conversions

* fix(rust-server): Dismiss clippy::new_without_default

* fix(rust-server): Fix compilation failures

* fix(rust-server): Resolve remaining warnings

* build(rust-server): Add newly generated samples of petstore

* fix(rust-server): Allow clippy::derive_partial_eq_without_eq to avoid float types try to derive Eq

* fix(rust-server): Fix parts to compile samples successfully

* fix(rust-server): Allow clippy::redundant_clone instead of removing redundant map_err

* fix(rust-server): Resolve and dismiss lots of warnings to satisfy clippy on samples

* build(rust-server): Add clippy execution to sample integration test

* build(rust-server): Add .cargo/config to the test root to use -Dwarnings flag in tests

* fix(rust-server): Allow unused_mut to avoid compilation fails in some environments

* [python-experimental] reduces python version (#13481)

* Removes classmethod property combinations

* Changes python version to 3.8

* Changes python version to 3.7

* Tests fixed

* Samples updated

* Adds getAddSuffixToDuplicateOperationNickname and uses it in python-exp, samples regenerated

* test_paths regenerated

* Fixes bug

* Adds typing_extensions requirement

* better enum status validation (#13486)

* [python-experimental] removes enum cls factory (#13491)

* Movs enum info, changes cls factory to base class + updates samples

* Fixed docs for enums, they show the allowed bool and None values now

* [Kotlin] Fix wrong default value is generated for non-integer numbers (#13507)

* ISSUE-13506 fix number value for default values when they are number

* ISSUE-13506 test and sample update

* Switches python-experimental in as the primary python client (#13501)

* Changes python to python-prior

* python -> python-prior, python-experimental->python

* Renames sample spec directories

* Samples regnerated

* Regenerates docs

* Fixes test

* Samples regenerated

* Updates renerators list

* Fixes made to python paths in pom.xml

* Fixes node4 sh file paths

* fix travis docker version release (#13515)

* prepare 6.2.0 release (#13514)

* set release version to 6.2.0

* update samples

* comment out rust server test in travis

* Prepare 6.2.1 (#13517)

* update to 6.2.1-SNAPSHOT

* update samples

* update doc

* Add .net framework 4.8 support (#13504)

* add .net framework 4.8 support

* add dependency, test in appveyor

* update doc

* [PHP] BUGFIX: model_generic: fix missing setOpenAPInullablesSetToNull method (#13499)

* [PHP] Bugfix - model_generic.mustache: missing setter for openAPINullabelsSetToNull (which is invoked in the property setters)

* [AUTOGENERATED] update samples

* [PHP] Added test for nullable fields

* Elixir: Improve generated API options docs (#13478)

While working with the Magento 2.4 API definition, there were several
issues found. The easiest to resolve is a documentation naming issue.
(The others will be raised for discussion.)

This is known to be an issue with query parameters, but may not be
limited to *just* query parameters.

In the event that a parameter is a mix of arrays and objects, the
template in the documentation for the API function was expanding out the
parameter name such that `foo[0]` would be turned into
`:foo_left_square_bracket0_right_square_bracket`, but the actual
parameter name was being left as `:foo[0]`, which meant that the
documentation did not reflect the actual parameter.

> Note: there are issues with the way that query parameters are put
> together in this sense, which is going to require substantially more
> work to resolve as well as discussion on how these options should be
> implemented, as what the Magento API requires may not be what is
> expected by a different server, and the nature of the input parameters
> is itself incorrect.

* [swift5] support both date and date-time formats (#13520)

* add withoutTime formatter

* add DateWithoutTime

wip

* fix CI

# Conflicts:
#	samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/DateWithoutTime.swift

* implement flag and adjust tests

* generate samples and docs

* docs

* update samples

* remove samples of legacy python generator

* Revert "remove samples of legacy python generator"

This reverts commit 28da78f99dcaa6cf761367b0a2d2c3fddf4803ec.

* review remarks

* generate samples

* fix

* review remarks

* remove samples

* generate swift 5 samples

* generate csharp examples

* docs

* Revert "generate csharp examples"

This reverts commit d1deb17dbcd04b9b00d9ad4a08ce55bedd960de8.

* Revert "generate swift 5 samples"

This reverts commit 968e859bfe3ce631f174d10f10983ed2f5c09486.

* Revert "remove samples"

This reverts commit a43d21529ba6a9e615671729d970ec7ef9662402.

* manually remove FILES

* regenerate files

* reviewers remarks

* delete all date without times

* update config of alamofireLib to use new attribute and generate samples again

* docs

* update c# samples

* update restsharp to the latest stable version (#13525)

* [typscript-rxjs] fix build failure (#13526)

* add node types to fix build failure

* Revert "add node types to fix build failure"

This reverts commit 7ec986e164d9ab0ab5eb1abb93f2f3e06121bd7e.

* add node installation to fix build failure

* update ts samples

* Update Sort list of style guides (#13502)

* [csharp] Fixed isMap property (#13482)

* fixed data type for maps

* fighting line endings

* fighting line endings

* removed commented code

* reverted unintended line break

* reverted unintended line break

* reverted unintended line break

* update doc

* Add Bandwidth to the user list (#13532)

* add bandwidth to the user list

* Update README.md

Co-authored-by: AJ Rice <53190766+ajrice6713@users.noreply.github.com>

* update link

Co-authored-by: AJ Rice <53190766+ajrice6713@users.noreply.github.com>

* add design philosophy (#13535)

* [R] add discriminator and mappings support (#13529)

* add discriminator property, mapping

* add discriminator, mapping support to R client generator

* add discriminator, mapping support to R client genrator httr library

* [swift5] [alamofire] adds ability to inject custom response serializers (#13542)

* adjust templates to allow injecting ResponseSerializers

* generate samples

* swift < 5.5 compatibility

* Restore JS tests …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Elixir Generator generates code with lots of warnings
4 participants