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-Clean]: Content-safety changes #23965

Merged
merged 3 commits into from
May 13, 2023
Merged

[TypeSpec-Clean]: Content-safety changes #23965

merged 3 commits into from
May 13, 2023

Conversation

markcowl
Copy link
Member

@markcowl markcowl commented May 12, 2023

@markcowl markcowl requested a review from yangyuan as a code owner May 12, 2023 22:07
@openapi-workflow-bot
Copy link

Hi, @markcowl 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 12, 2023

    Swagger Validation Report

    ️️✔️BreakingChange succeeded [Detail] [Expand]
    There are no breaking changes.
    compared swaggers (via Oad v0.10.4)] new version base version
    contentsafety.json 2023-04-30-preview(4d503fe) 2023-04-30-preview(main)
    ️️✔️Breaking Change(Cross-Version) succeeded [Detail] [Expand]
    There are no breaking changes.
    ️️✔️CredScan succeeded [Detail] [Expand]
    There is no credential detected.
    ️⚠️LintDiff: 0 Warnings warning [Detail]
    compared tags (via openapi-validator v2.1.1) new version base version
    package-2023-04-30-preview package-2023-04-30-preview(4d503fe) package-2023-04-30-preview(main)

    The following errors/warnings exist before current PR submission:

    Rule Message
    OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'TextBlocklists' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L97
    AvoidAnonymousTypes Inline/anonymous models must not be used, instead define a schema with a model name in the 'definitions' section and refer to it. This allows operations to share the models.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L108
    OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'TextBlocklists' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L159
    OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'TextBlocklists' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L203
    OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'TextBlocklists' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L265
    OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'TextBlocklists' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L411
    AvoidAnonymousTypes Inline/anonymous models must not be used, instead define a schema with a model name in the 'definitions' section and refer to it. This allows operations to share the models.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L440
    OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'TextBlocklists' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L491
    ⚠️ SecurityDefinitionDescription Security definition should have a description.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L41
    ⚠️ SchemaTypeAndFormat Schema with type: string has unrecognized format: uri
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L63
    ⚠️ SchemaTypeAndFormat Schema with type: string has unrecognized format: uri
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L122
    ⚠️ PatchInOperationName 'PATCH' operation 'TextBlocklists_CreateOrUpdateTextBlocklist' should use method name 'Update'. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L203
    ⚠️ ListInOperationName Since operation response has model definition in array type, it should be of the form '_list'.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L307
    ⚠️ PaginationResponse Operation might be pageable. Consider adding the x-ms-pageable extension.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L307
    ⚠️ ParameterDescription Parameter should have a description.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L324
    ⚠️ RequestBodyOptional The body parameter is not marked as required.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L324
    ⚠️ ParameterDescription Parameter should have a description.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L377
    ⚠️ RequestBodyOptional The body parameter is not marked as required.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L377
    ⚠️ SchemaTypeAndFormat Schema with type: string has unrecognized format: uri
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L454
    ⚠️ PathParameterSchema Path parameter should specify characters allowed (pattern).
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L507
    ⚠️ EnumInsteadOfBoolean Booleans properties are not descriptive in all cases and can make them to use, evaluate whether is makes sense to keep the property as boolean or turn it into an enum.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L691
    ⚠️ SchemaNamesConvention Schema name should be Pascal case.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L732
    ⚠️ SchemaNamesConvention Schema name should be Pascal case.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L768
    ⚠️ SchemaNamesConvention Schema name should be Pascal case.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L781
    ⚠️ SchemaDescriptionOrTitle Schema should have a description or title.
    Location: ContentSafety/preview/2023-04-30-preview/contentsafety.json#L1018
    ️️✔️Avocado succeeded [Detail] [Expand]
    Validation passes for Avocado.
    ️️✔️ApiReadinessCheck succeeded [Detail] [Expand]
    ️⚠️~[Staging] ServiceAPIReadinessTest: 0 Warnings warning [Detail]

    API Test is not triggered due to precheck failure. Check pipeline log for details.

    ️️✔️SwaggerAPIView succeeded [Detail] [Expand]
    ️️✔️CadlAPIView succeeded [Detail] [Expand]
    ️️✔️TypeSpecAPIView succeeded [Detail] [Expand]
    ️️✔️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: 18 Errors, 5 Warnings failed [Detail]
    Rule Message
    unknown-identifier Unknown identifier Cadl
    Location: specification/cognitiveservices/OpenAI.Authoring/model.routes.tsp#L9
    unknown-identifier Unknown identifier Cadl
    Location: specification/cognitiveservices/OpenAI.Authoring/model.routes.tsp#L10
    unknown-identifier Unknown identifier Cadl
    Location: specification/cognitiveservices/OpenAI.Authoring/finetune.tsp#L93
    unknown-decorator Unknown decorator
    Location: specification/cognitiveservices/OpenAI.Authoring/finetune.tsp#L93
    unknown-identifier Unknown identifier route
    Location: specification/cognitiveservices/OpenAI.Authoring/model.routes.tsp#L27
    unknown-decorator Unknown decorator
    Location: specification/cognitiveservices/OpenAI.Authoring/model.routes.tsp#L27
    unknown-identifier Unknown identifier get
    Location: specification/cognitiveservices/OpenAI.Authoring/model.routes.tsp#L28
    unknown-decorator Unknown decorator
    Location: specification/cognitiveservices/OpenAI.Authoring/model.routes.tsp#L28
    import-not-found Couldn't resolve import "@azure-tools/typespec-client-generator-core"
    Location: specification/cognitiveservices/OpenAI.Inference/routes.tsp#L4
    invalid-ref Namespace Azure doesn't have member ClientGenerator
    Location: specification/cognitiveservices/OpenAI.Inference/routes.tsp#L13
    unknown-identifier Unknown identifier convenientAPI
    Location: specification/cognitiveservices/OpenAI.Inference/routes.tsp#L20
    unknown-decorator Unknown decorator
    Location: specification/cognitiveservices/OpenAI.Inference/routes.tsp#L20
    unknown-identifier Unknown identifier convenientAPI
    Location: specification/cognitiveservices/OpenAI.Inference/routes.tsp#L31
    unknown-decorator Unknown decorator
    Location: specification/cognitiveservices/OpenAI.Inference/routes.tsp#L31
    unknown-identifier Unknown identifier convenientAPI
    Location: specification/cognitiveservices/OpenAI.Inference/routes.tsp#L42
    unknown-decorator Unknown decorator
    Location: specification/cognitiveservices/OpenAI.Inference/routes.tsp#L42
    MissingExamplesDirectory "details":"The 'examples' directory is missing in the typespec folder specification/cognitiveservices/OpenAI.Authoring,
    please ensure the 'examples' is added in the PR."
    MissingExamplesDirectory "details":"The 'examples' directory is missing in the typespec folder specification/cognitiveservices/OpenAI.Inference,
    please ensure the 'examples' is added in the PR."
    ⚠️ MissingTypeSpecProjectConfig "details":"The configuration 'azure-resource-provider-folder' for '@azure-tools/typespec-autorest' is missing in the tspconfig.yaml under folder specification/cognitiveservices/AnomalyDetector,
    please ensure it is added in the configuration of the emitter '@azure-tools/typespec-autorest'."
    ⚠️ MissingTypeSpecProjectConfig "details":"The configuration 'output-file' for '@azure-tools/typespec-autorest' is missing in the tspconfig.yaml under folder specification/cognitiveservices/OpenAI.Authoring,
    please ensure it is added in the configuration of the emitter '@azure-tools/typespec-autorest'."
    ⚠️ MissingTypeSpecProjectConfig "details":"The configuration 'azure-resource-provider-folder' for '@azure-tools/typespec-autorest' is missing in the tspconfig.yaml under folder specification/cognitiveservices/OpenAI.Authoring,
    please ensure it is added in the configuration of the emitter '@azure-tools/typespec-autorest'."
    ⚠️ MissingTypeSpecProjectConfig "details":"The configuration 'output-file' for '@azure-tools/typespec-autorest' is missing in the tspconfig.yaml under folder specification/cognitiveservices/OpenAI.Inference,
    please ensure it is added in the configuration of the emitter '@azure-tools/typespec-autorest'."
    ⚠️ MissingTypeSpecProjectConfig "details":"The configuration 'azure-resource-provider-folder' for '@azure-tools/typespec-autorest' is missing in the tspconfig.yaml under folder specification/cognitiveservices/OpenAI.Inference,
    please ensure it is added in the configuration of the emitter '@azure-tools/typespec-autorest'."
    ️️✔️PR Summary succeeded [Detail] [Expand]
    Validation passes for Summary.
    Posted by Swagger Pipeline | How to fix these errors?

    @ghost ghost added the Cognitive Services label May 12, 2023
    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented May 12, 2023

    Swagger Generation Artifacts

    ️️✔️ApiDocPreview succeeded [Detail] [Expand]
     Please click here to preview with your @microsoft account. 
    ️️✔️SDK Breaking Change Tracking succeeded [Detail] [Expand]

    Breaking Changes Tracking

    ️⚠️ azure-sdk-for-python-track2 warning [Detail]
    • ⚠️Warning [Logs]Release - Generate from 36b66d9. 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/ContentSafety/tspconfig.yaml skipped due to azure-sdk-for-python-track2 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.6.6
      cmderr	[automation_generate.sh] npm notice Changelog: <https://github.com/npm/cli/releases/tag/v9.6.6>
      cmderr	[automation_generate.sh] npm notice Run `npm install -g npm@9.6.6` to update!
      cmderr	[automation_generate.sh] npm notice
      warn	No file changes detected after generation
      warn	No package detected after generation
    ️❌ azure-sdk-for-net-track2 failed [Detail]
    • Failed [Logs]Release - Generate from 36b66d9. 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
      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 build sdk. exit code: False
      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 packe 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
    • Azure.AI.ContentSafety [View full logs]  [Release SDK Changes]
      info	[Changelog]
    ️⚠️ azure-sdk-for-java warning [Detail]
    • ⚠️Warning [Logs]Release - Generate from 36b66d9. SDK Automation 14.0.0
      command	./eng/mgmt/automation/init.sh ../azure-sdk-for-java_tmp/initInput.json ../azure-sdk-for-java_tmp/initOutput.json
      cmderr	[init.sh] [notice] A new release of pip is available: 23.0.1 -> 23.1.2
      cmderr	[init.sh] [notice] To update, run: pip install --upgrade pip
      cmderr	[init.sh] [notice] A new release of pip is available: 23.0.1 -> 23.1.2
      cmderr	[init.sh] [notice] To update, run: pip install --upgrade pip
      command	./eng/mgmt/automation/generate.py ../azure-sdk-for-java_tmp/generateInput.json ../azure-sdk-for-java_tmp/generateOutput.json
      warn	No file changes detected after generation
      warn	No package detected after generation
    ️⚠️ azure-sdk-for-js warning [Detail]
    • ⚠️Warning [Logs]Release - Generate from 36b66d9. 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
      warn	No file changes detected after generation
      warn	No package detected after generation
    ️⚠️ azure-resource-manager-schemas warning [Detail]
    • ⚠️Warning [Logs]Release - Generate from 36b66d9. Schema Automation 14.0.0
      command	.sdkauto/initScript.sh ../azure-resource-manager-schemas_tmp/initInput.json ../azure-resource-manager-schemas_tmp/initOutput.json
      cmderr	[initScript.sh]  WARN old lockfile
      cmderr	[initScript.sh] npm WARN old lockfile The package-lock.json file was created with an old version of npm,
      cmderr	[initScript.sh] npm WARN old lockfile so supplemental metadata must be fetched from the registry.
      cmderr	[initScript.sh] npm WARN old lockfile
      cmderr	[initScript.sh] npm WARN old lockfile This is a one-time fix-up, please be patient...
      cmderr	[initScript.sh] npm WARN old lockfile
      warn	File azure-resource-manager-schemas_tmp/initOutput.json not found to read
      command	.sdkauto/generateScript.sh ../azure-resource-manager-schemas_tmp/generateInput.json ../azure-resource-manager-schemas_tmp/generateOutput.json
      warn	No file changes detected after generation
      warn	Skip detect changed packages
    ️❌ azure-powershell failed [Detail]
    • Pipeline Framework Failed [Logs]Release - Generate from 36b66d9. SDK Automation 14.0.0
      command	sh ./tools/SwaggerCI/init.sh ../azure-powershell_tmp/initInput.json ../azure-powershell_tmp/initOutput.json
      warn		specification/cognitiveservices/ContentSafety/tspconfig.yaml skipped due to azure-powershell not found in tspconfig.yaml
      command	pwsh ./tools/SwaggerCI/psci.ps1 ../azure-powershell_tmp/generateInput.json ../azure-powershell_tmp/generateOutput.json
      SSL error: syscall failure: Broken pipe
      Error: SSL error: syscall failure: Broken pipe
    • Az.cognitiveservices.DefaultTag [View full logs
      error	Fatal error: SSL error: syscall failure: Broken pipe
      error	The following packages are still pending:
      error		Az.cognitiveservices.DefaultTag
    ️⚠️ azure-sdk-for-python warning [Detail]
    • ⚠️Warning [Logs]Release - Generate from 36b66d9. 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/data-plane/ContentSafety/readme.md skipped due to azure-sdk-for-python not found in swagger-to-sdk
      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.6.6
      cmderr	[automation_generate.sh] npm notice Changelog: <https://github.com/npm/cli/releases/tag/v9.6.6>
      cmderr	[automation_generate.sh] npm notice Run `npm install -g npm@9.6.6` to update!
      cmderr	[automation_generate.sh] npm notice
    • ️✔️azure-ai-contentsafety [View full logs]  [Release SDK Changes]
      info	[Changelog] data-plan skip changelog generation temporarily
    Posted by Swagger Pipeline | How to fix these errors?

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented May 12, 2023

    Generated ApiView

    Language Package Name ApiView Link
    Python azure-ai-contentsafety https://apiview.dev/Assemblies/Review/297d6c914cf54aa7a598df4be6b7d072

    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.

    4 participants