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

[TypeSpec] Update formatting of existing specs #24041

Merged
merged 2 commits into from
Jun 14, 2023

Conversation

mikeharder
Copy link
Member

No description provided.

@openapi-workflow-bot
Copy link

Hi, @mikeharder Thanks for your PR. I am workflow bot for review process. Here are some small tips.

  • Please ensure to do self-check against checklists in first PR comment.
  • PR assignee is the person auto-assigned and responsible for your current PR reviewing and merging.
  • For specs comparison cross API versions, Use API Specs Comparison Report Generator
  • If there is CI failure(s), to fix CI error(s) is mandatory for PR merging; or you need to provide justification in PR comment for explanation. How to fix?

  • Any feedback about review process or workflow bot, pls contact swagger and tools team. vscswagger@microsoft.com

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented May 18, 2023

    Swagger Validation Report

    ️️✔️BreakingChange succeeded [Detail] [Expand]
    There are no breaking changes.
    ️️✔️Breaking Change(Cross-Version) succeeded [Detail] [Expand]
    There are no breaking changes.
    ️️✔️CredScan succeeded [Detail] [Expand]
    There is no credential detected.
    ️️✔️LintDiff succeeded [Detail] [Expand]
    Validation passes for LintDiff.
    ️️✔️Avocado succeeded [Detail] [Expand]
    Validation passes for Avocado.
    ️️✔️ApiReadinessCheck succeeded [Detail] [Expand]
    ️️✔️~[Staging] ServiceAPIReadinessTest succeeded [Detail] [Expand]
    Validation passes for ServiceAPIReadinessTest.
    ️️✔️SwaggerAPIView succeeded [Detail] [Expand]
    ️️✔️CadlAPIView succeeded [Detail] [Expand]
    ️❌TypeSpecAPIView: 0 Errors, 3 Warnings failed [Detail]
    Rule Message
    ⚠️ Failed to generate TypeSpec APIView. Please check the detail log and make sure TypeSpec compiler version is the latest. "How to fix":"Check the detailed log and verify if the TypeSpec emitter is able to create API review file for the changes in PR."
    ⚠️ Failed to generate TypeSpec APIView. Please check the detail log and make sure TypeSpec compiler version is the latest. "How to fix":"Check the detailed log and verify if the TypeSpec emitter is able to create API review file for the changes in PR."
    ⚠️ Failed to generate TypeSpec APIView. Please check the detail log and make sure TypeSpec compiler version is the latest. "How to fix":"Check the detailed log and verify if the TypeSpec emitter is able to create API review file for the changes in PR."
    ️️✔️ModelValidation succeeded [Detail] [Expand]
    Validation passes for ModelValidation.
    ️️✔️SemanticValidation succeeded [Detail] [Expand]
    Validation passes for SemanticValidation.
    ️️✔️PoliCheck succeeded [Detail] [Expand]
    Validation passed for PoliCheck.
    ️️✔️PrettierCheck succeeded [Detail] [Expand]
    Validation passes for PrettierCheck.
    ️️✔️SpellCheck succeeded [Detail] [Expand]
    Validation passes for SpellCheck.
    ️️✔️Lint(RPaaS) succeeded [Detail] [Expand]
    Validation passes for Lint(RPaaS).
    ️️✔️CadlValidation succeeded [Detail] [Expand]
    Validation passes for CadlValidation.
    ️❌TypeSpec Validation: 8 Errors, 32 Warnings failed [Detail]

    Only 30 items are listed, please refer to log for more details.

    Rule Message
    MissingExamplesDirectory "details":"The 'examples' directory is missing in the typespec folder specification/cognitiveservices/OpenAI.Inference,
    please ensure the 'examples' is added in the PR."
    SwaggerNotExistInPRBranch "details":"The generated swagger file 2022-12-01/openapi.json from typespec specification/cognitiveservices/OpenAI.Inference is not on the branch."
    SwaggerNotExistInPRBranch "details":"The generated swagger file 2023-03-15-preview/openapi.json from typespec specification/cognitiveservices/OpenAI.Inference is not on the branch."
    InConsistentSwagger "details":"The generated swagger file 2022-09-02-preview/fleets.json from typespec specification/containerservice/Fleet.Management is not the same as the '/mnt/vss/_work/1/azure-rest-api-specs/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/preview/2022-09-02-preview/fleets.json' in PR,
    please make sure the swagger is consistent with the generated swagger. You can find the difference in the pipeline log."
    InConsistentSwagger "details":"The generated swagger file 2023-03-15-preview/fleets.json from typespec specification/containerservice/Fleet.Management is not the same as the '/mnt/vss/_work/1/azure-rest-api-specs/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/fleets.json' in PR,
    please make sure the swagger is consistent with the generated swagger. You can find the difference in the pipeline log."
    MissingExamplesDirectory "details":"The 'examples' directory is missing in the typespec folder specification/eventgrid/Azure.Messaging.EventGrid,
    please ensure the 'examples' is added in the PR."
    InConsistentSwagger "details":"The generated swagger file EventGrid.json from typespec specification/eventgrid/Azure.Messaging.EventGrid is not the same as the '/mnt/vss/_work/1/azure-rest-api-specs/specification/eventgrid/resource-manager/Microsoft.EventGrid/preview/2017-06-15-preview/EventGrid.json' in PR,
    please make sure the swagger is consistent with the generated swagger. You can find the difference in the pipeline log."
    InConsistentSwagger "details":"The generated swagger file 2023-05-01-preview/TrafficController.json from typespec specification/servicenetworking/ServiceNetworking.Management is not the same as the '/mnt/vss/_work/1/azure-rest-api-specs/specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/preview/2023-05-01-preview/TrafficController.json' in PR,
    please make sure the swagger is consistent with the generated swagger. You can find the difference in the pipeline log."
    ⚠️ @azure-tools/typespec-autorest/union-unsupported Unions cannot be emitted to OpenAPI v2 unless all options are literals of the same type.
    Location: cognitiveservices/OpenAI.Inference/models/completions.create.tsp#L198
    ⚠️ @azure-tools/typespec-autorest/union-unsupported Unions cannot be emitted to OpenAPI v2 unless all options are literals of the same type.
    Location: cognitiveservices/OpenAI.Inference/models/chat.completions.tsp#L162
    ⚠️ @azure-tools/typespec-autorest/union-unsupported Unions cannot be emitted to OpenAPI v2 unless all options are literals of the same type.
    Location: cognitiveservices/OpenAI.Inference/models/completions.create.tsp#L198
    ⚠️ @azure-tools/typespec-autorest/union-unsupported Unions cannot be emitted to OpenAPI v2 unless all options are literals of the same type.
    Location: cognitiveservices/OpenAI.Inference/models/chat.completions.tsp#L162
    ⚠️ deprecated: Deprecated The shared option is deprecated, use the @sharedRoute decorator instead.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L174
    ⚠️ deprecated: Deprecated The shared option is deprecated, use the @sharedRoute decorator instead.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L199
    ⚠️ @azure-tools/typespec-azure-core/no-unknown Azure services must not have properties of type unknown.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L65
    ⚠️ @azure-tools/typespec-azure-core/casing-style The names of Property types must use camelCase
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L68
    ⚠️ @azure-tools/typespec-azure-core/casing-style The names of Operation types must use camelCase
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L174
    ⚠️ @azure-tools/typespec-azure-core/no-rpc-path-params Operations defined using RpcOperation should not have path parameters. Consider using ResourceAction or ResourceCollectionAction instead.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L174
    ⚠️ @azure-tools/typespec-azure-core/request-body-problem Request body should not be of raw array type. Consider creating a container model that can add properties over time to avoid introducing breaking changes.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L217
    ⚠️ @azure-tools/typespec-azure-core/casing-style The names of Operation types must use camelCase
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L199
    ⚠️ @azure-tools/typespec-azure-core/no-rpc-path-params Operations defined using RpcOperation should not have path parameters. Consider using ResourceAction or ResourceCollectionAction instead.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L199
    ⚠️ @azure-tools/typespec-azure-core/request-body-problem Request body should not be of raw array type. Consider creating a container model that can add properties over time to avoid introducing breaking changes.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L217
    ⚠️ @azure-tools/typespec-azure-core/request-body-problem Request body should not be of raw array type. Consider creating a container model that can add properties over time to avoid introducing breaking changes.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L217
    ⚠️ @azure-tools/typespec-azure-core/casing-style The names of Operation types must use camelCase
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L224
    ⚠️ @azure-tools/typespec-azure-core/no-rpc-path-params Operations defined using RpcOperation should not have path parameters. Consider using ResourceAction or ResourceCollectionAction instead.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L224
    ⚠️ @azure-tools/typespec-azure-core/casing-style The names of Operation types must use camelCase
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L249
    ⚠️ @azure-tools/typespec-azure-core/no-rpc-path-params Operations defined using RpcOperation should not have path parameters. Consider using ResourceAction or ResourceCollectionAction instead.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L249
    ⚠️ @azure-tools/typespec-azure-core/casing-style The names of Operation types must use camelCase
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L273
    ⚠️ @azure-tools/typespec-azure-core/no-rpc-path-params Operations defined using RpcOperation should not have path parameters. Consider using ResourceAction or ResourceCollectionAction instead.
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L273
    ⚠️ @azure-tools/typespec-azure-core/casing-style The names of Operation types must use camelCase
    Location: specification/eventgrid/Azure.Messaging.EventGrid/main.tsp#L297
    ️️✔️PR Summary succeeded [Detail] [Expand]
    Validation passes for Summary.
    Posted by Swagger Pipeline | How to fix these errors?

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented May 18, 2023

    Swagger Generation Artifacts

    ️️✔️ApiDocPreview succeeded [Detail] [Expand]
    ️️✔️SDK Breaking Change Tracking succeeded [Detail] [Expand]

    Breaking Changes Tracking







    ️⚠️ azure-sdk-for-python warning [Detail]
    • ⚠️Warning [Logs]Release - Generate from 8783ae5. SDK Automation 14.0.0
      command	sh scripts/automation_init.sh ../azure-sdk-for-python_tmp/initInput.json ../azure-sdk-for-python_tmp/initOutput.json
      cmderr	[automation_init.sh] WARNING: Skipping azure-nspkg as it is not installed.
      warn		specification/cognitiveservices/HealthInsights/healthinsights.oncophenotype/tspconfig.yaml skipped due to azure-sdk-for-python not found in tspconfig.yaml
      warn		specification/cognitiveservices/HealthInsights/healthinsights.openapi/tspconfig.yaml skipped due to azure-sdk-for-python not found in tspconfig.yaml
      warn		specification/cognitiveservices/HealthInsights/healthinsights.trialmatcher/tspconfig.yaml skipped due to azure-sdk-for-python not found in tspconfig.yaml
      warn		specification/cognitiveservices/OpenAI.Inference/tspconfig.yaml skipped due to azure-sdk-for-python not found in tspconfig.yaml
      warn		specification/containerservice/Fleet.Management/tspconfig.yaml skipped due to azure-sdk-for-python not found in tspconfig.yaml
      warn		specification/servicenetworking/ServiceNetworking.Management/tspconfig.yaml skipped due to azure-sdk-for-python not found in tspconfig.yaml
      command	sh scripts/automation_generate.sh ../azure-sdk-for-python_tmp/generateInput.json ../azure-sdk-for-python_tmp/generateOutput.json
      cmderr	[automation_generate.sh] npm notice
      cmderr	[automation_generate.sh] npm notice New minor version of npm available! 9.5.1 -> 9.7.1
      cmderr	[automation_generate.sh] npm notice Changelog: <https://github.com/npm/cli/releases/tag/v9.7.1>
      cmderr	[automation_generate.sh] npm notice Run `npm install -g npm@9.7.1` to update!
      cmderr	[automation_generate.sh] npm notice
    • ️✔️azure-ai-anomalydetector [View full logs]  [Release SDK Changes]
      info	[Changelog] data-plan skip changelog generation temporarily
    • ️✔️azure-contoso-widgetmanager [View full logs]  [Release SDK Changes]
      info	[Changelog] data-plan skip changelog generation temporarily
    • ️✔️azure-eventgrid [View full logs]  [Release SDK Changes]
      info	[Changelog] data-plan skip changelog generation temporarily
    • ️✔️azure-ai-translation-text [View full logs]  [Release SDK Changes]
      info	[Changelog] data-plan skip changelog generation temporarily
    ️⚠️ azure-sdk-for-java warning [Detail]
    ️❌ azure-sdk-for-net-track2 failed [Detail]
    • Code Generator Failed [Logs]Release - Generate from 8783ae5. SDK Automation 14.0.0
      command	pwsh ./eng/scripts/Automation-Sdk-Init.ps1 ../azure-sdk-for-net_tmp/initInput.json ../azure-sdk-for-net_tmp/initOutput.json
      warn		specification/cognitiveservices/HealthInsights/healthinsights.openapi/tspconfig.yaml skipped due to azure-sdk-for-net-track2 not found in tspconfig.yaml
      warn		specification/containerservice/Fleet.Management/tspconfig.yaml skipped due to azure-sdk-for-net-track2 not found in tspconfig.yaml
      warn		specification/servicenetworking/ServiceNetworking.Management/tspconfig.yaml skipped due to azure-sdk-for-net-track2 not found in tspconfig.yaml
      command	pwsh ./eng/scripts/Invoke-GenerateAndBuildV2.ps1 ../azure-sdk-for-net_tmp/generateInput.json ../azure-sdk-for-net_tmp/generateOutput.json
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[31;1mGeneratePackage: �[0m/mnt/vss/_work/1/s/azure-sdk-for-net/eng/scripts/Invoke-GenerateAndBuildV2.ps1:145
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1mLine |
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m 145 | �[0m         �[36;1mGeneratePackage `�[0m
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m     | �[31;1m         ~~~~~~~~~~~~~~~~~
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[31;1m�[36;1m     | �[31;1mFailed to generate sdk. exit code: False
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[0m
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[31;1mGet-ChildItem: �[0m/mnt/vss/_work/1/s/azure-sdk-for-net/eng/scripts/automation/GenerateAndBuildLib.ps1:800
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1mLine |
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m 800 | �[0m … rtifacts += �[36;1mGet-ChildItem $artifactsPath -Filter *.nupkg -exclude *.s�[0m …
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m     | �[31;1m               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[31;1m�[36;1m     | �[31;1mCannot find path
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m     | �[31;1m'/mnt/vss/_work/1/s/azure-sdk-for-net/artifacts/packages/Debug/' because
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m     | �[31;1mit does not exist.
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[0m
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[31;1mGeneratePackage: �[0m/mnt/vss/_work/1/s/azure-sdk-for-net/eng/scripts/Invoke-GenerateAndBuildV2.ps1:145
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1mLine |
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m 145 | �[0m         �[36;1mGeneratePackage `�[0m
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m     | �[31;1m         ~~~~~~~~~~~~~~~~~
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[31;1m�[36;1m     | �[31;1mFailed to generate sdk artifact
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[0m
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[31;1mException: �[0m/mnt/vss/_work/1/s/azure-sdk-for-net/eng/scripts/Invoke-GenerateAndBuildV2.ps1:133
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1mLine |
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m 133 | �[0m             �[36;1mthrow "Not provide service name or namespace."�[0m
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[36;1m     | �[31;1m             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[31;1m�[36;1m     | �[31;1mNot provide service name or namespace.
      cmderr	[Invoke-GenerateAndBuildV2.ps1] �[0m
      error	Script return with result [failed] code [1] signal [null] cwd [azure-sdk-for-net]: pwsh ./eng/scripts/Invoke-GenerateAndBuildV2.ps1
      warn	Skip package processing as generation is failed
    ️❌ azure-sdk-for-js failed [Detail]
    • Pipeline Framework Failed [Logs]Release - Generate from 8783ae5. SDK Automation 14.0.0
      command	sh .scripts/automation_init.sh ../azure-sdk-for-js_tmp/initInput.json ../azure-sdk-for-js_tmp/initOutput.json
      warn	File azure-sdk-for-js_tmp/initOutput.json not found to read
      command	sh .scripts/automation_generate.sh ../azure-sdk-for-js_tmp/generateInput.json ../azure-sdk-for-js_tmp/generateOutput.json
      cmderr	[automation_generate.sh] [ERROR] Generate changelog failed: ENOENT: no such file or directory, open '/mnt/vss/_work/1/s/azure-sdk-for-js/sdk/anomalydetector/ai-anomaly-detector-rest/changelog-temp/package/CHANGELOG.md'
      the given reference name 'refs/heads/sdkAuto/' is not valid
      Error: the given reference name 'refs/heads/sdkAuto/' is not valid
    • ️✔️@azure-rest/ai-anomaly-detector [View full logs]  [Release SDK Changes]
      info	[Changelog]
      error	breakingChangeTracking is enabled, but version or changelogItem is not found in output.
    • error	Fatal error: the given reference name 'refs/heads/sdkAuto/' is not valid
      error	The following packages are still pending:
      error
    Posted by Swagger Pipeline | How to fix these errors?

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented May 18, 2023

    Generated ApiView

    Language Package Name ApiView Link
    Python azure-ai-anomalydetector Create ApiView failed. Please ask PR assignee for help
    Python azure-ai-translation-text https://apiview.dev/Assemblies/Review/8696c66bdd7c4b10b5154855cd4f735d
    Python azure-contoso-widgetmanager https://apiview.dev/Assemblies/Review/8696c66bdd7c4b10b5154855cd4f735d
    Python azure-eventgrid https://apiview.dev/Assemblies/Review/8696c66bdd7c4b10b5154855cd4f735d
    Java azure-ai-anomalydetector https://apiview.dev/Assemblies/Review/912efe7c47d649e19596358998ef8955
    Java azure-ai-translation-text https://apiview.dev/Assemblies/Review/4210c09ad55146248945bf08b6aea77b
    Java azure-contoso-widgetmanager https://apiview.dev/Assemblies/Review/1b282a9d2b0b4b79a0720cf886924c62
    JavaScript @azure-rest/ai-anomaly-detector Create ApiView failed. Please ask PR assignee for help

    @mikeharder
    Copy link
    Member Author

    /azp run specs - typespec - ci

    @azure-pipelines
    Copy link

    Azure Pipelines successfully started running 1 pipeline(s).

    @mikeharder mikeharder changed the title [TypeSpec CI] Add "tsp format" [TypeSpec] Update formatting of existing specs May 18, 2023
    @mikeharder mikeharder marked this pull request as ready for review May 19, 2023 01:03
    @mikeharder mikeharder assigned markcowl and unassigned kazrael2119 May 19, 2023
    @mikeharder mikeharder marked this pull request as draft May 19, 2023 01:35
    Copy link
    Member

    @timotheeguerin timotheeguerin left a comment

    Choose a reason for hiding this comment

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

    Formatting change looks good, can't spot any weird formatting

    Comment on lines +69 to +71
    @header
    location: string;
    @body result: AnomalyDetectionModel;
    Copy link
    Member Author

    Choose a reason for hiding this comment

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

    @timotheeguerin: Why is @header split onto two lines but @body stays on one line?

    Copy link
    Member

    Choose a reason for hiding this comment

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

    one decorator can be inlined(it should keep your decision), more than one it will split lines

    Comment on lines +146 to +147
    @body
    options: MultivariateBatchDetectionOptions
    Copy link
    Member Author

    Choose a reason for hiding this comment

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

    @timotheeguerin: Why is @body split onto multiple lines here but not above?

    @doc("Azure Messaging EventGrid Client")
    @versioned(ServiceApiVersions)
    namespace Azure.Messaging.EventGrid {

    Copy link
    Member Author

    Choose a reason for hiding this comment

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

    @timotheeguerin: What caused all these comments to move?

    Copy link
    Member

    Choose a reason for hiding this comment

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

    did those get duplicated?

    Copy link
    Member

    Choose a reason for hiding this comment

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

    oh I see there were all moved to the top, yeah thats a bug. Comments are always having weird formatting issue

    Copy link
    Member

    Choose a reason for hiding this comment

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

    Copy link
    Member Author

    Choose a reason for hiding this comment

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

    If this is a bug do we need to revert the formatting check (and the changes to this file) until this is fixed?

    harryli0108 pushed a commit to harryli0108/azure-rest-api-specs that referenced this pull request Jul 28, 2023
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    4 participants