-
Notifications
You must be signed in to change notification settings - Fork 6.5k
migrate code from googleapis/python-vision #8512
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
Merged
Merged
Changes from 116 commits
Commits
Show all changes
118 commits
Select commit
Hold shift + click to select a range
9f24bc2
chore: move samples from python-docs-sample (#45)
arithmetic1728 0f4f0e5
feat!: migrate to use microgen (#52)
arithmetic1728 89fcc35
chore(deps): update dependency google-cloud-vision to v2 (#55)
renovate-bot 39bd282
chore(deps): update dependency pillow to v8 (#65)
renovate-bot f63f447
chore(deps): update dependency google-cloud-storage to v1.31.2 (#50)
renovate-bot d421c55
chore(deps): update dependency pillow to v8.0.1 (#71)
renovate-bot de5c807
chore(deps): update dependency google-cloud-storage to v1.32.0 (#69)
renovate-bot d28eb2a
chore(deps): update dependency google-cloud-storage to v1.33.0 (#75)
renovate-bot db13215
chore: fix flaky test by adding rerun (#77)
munkhuushmgl 2c88f2e
chore(deps): update dependency google-cloud-storage to v1.35.0 (#80)
renovate-bot c12cfce
feat(v1): add text detection params; fix: remove client side recv lim…
yoshi-automation 1d9a11c
chore(deps): update dependency pillow to v8.1.0 (#90)
renovate-bot 07d8820
chore(deps): update dependency google-cloud-vision to v2.1.0 (#99)
renovate-bot e5b46b2
test: add 3.9 tests (#96)
yoshi-automation c971d6f
chore(deps): update dependency google-cloud-vision to v2.2.0 (#109)
renovate-bot f8f6a3e
chore(deps): update dependency google-cloud-storage to v1.36.0 (#101)
renovate-bot a68723e
chore(deps): update dependency google-cloud-storage to v1.36.1 (#113)
renovate-bot 6a81ff4
chore(deps): update dependency pillow to v8.1.1 (#114)
renovate-bot 0e852dd
chore(deps): update dependency pillow to v8.1.2 (#115)
renovate-bot 96ac088
chore(deps): update dependency google-cloud-storage to v1.36.2 (#116)
renovate-bot 6846b63
chore(deps): update dependency google-cloud-storage to v1.37.0 (#121)
renovate-bot d165917
chore(deps): update dependency google-cloud-vision to v2.3.0 (#124)
renovate-bot d90d307
chore(deps): update dependency pillow to v8.2.0 (#126)
renovate-bot 982781c
chore(deps): update dependency google-cloud-vision to v2.3.1 (#135)
renovate-bot 3fd9d8c
chore: migrate to owl bot (#143)
parthea af03940
chore(deps): update dependency pytest to v6.2.4 (#144)
renovate-bot fa2cfc3
chore(deps): update dependency google-cloud-storage to v1.38.0 (#127)
renovate-bot 88c75e5
chore: new owl bot post processor docker image (#151)
gcf-owl-bot[bot] 0a383c1
chore: increased timeout by 200s to reduce flakiness (#155)
parthea 7aa5fd1
chore(deps): update dependency google-cloud-vision to v2.3.2 (#160)
renovate-bot 4682994
chore(deps): update dependency google-cloud-storage to v1.39.0 (#167)
renovate-bot c429e10
chore(deps): update dependency pillow to v8.3.0 (#173)
renovate-bot 8888096
chore(deps): update dependency google-cloud-storage to v1.40.0 (#172)
renovate-bot e59ac1e
chore(deps): update dependency pillow to v8.3.1 (#174)
renovate-bot 13b4557
chore(deps): update dependency backoff to v1.11.0 (#177)
renovate-bot 41630d3
chore(deps): update dependency backoff to v1.11.1 (#196)
renovate-bot 271e382
chore(deps): update dependency google-cloud-storage to v1.41.0 (#195)
renovate-bot 2913860
chore(deps): update dependency google-cloud-vision to v2.4.0 (#178)
renovate-bot 024df7f
chore(deps): update dependency google-cloud-storage to v1.41.1 (#203)
renovate-bot d096a98
feat: add Samples section to CONTRIBUTING.rst (#201)
gcf-owl-bot[bot] a1a63a4
chore(deps): update dependency google-cloud-vision to v2.4.1 (#204)
renovate-bot 4a9a7cf
chore(deps): update dependency google-cloud-vision to v2.4.2 (#211)
renovate-bot 3024bb1
chore: fix INSTALL_LIBRARY_FROM_SOURCE in noxfile.py (#213)
gcf-owl-bot[bot] 323627d
chore: drop mention of Python 2.7 from templates (#217)
gcf-owl-bot[bot] bea9b01
chore(deps): update dependency google-cloud-storage to v1.42.0 (#215)
renovate-bot 9fcf2cd
chore(deps): update dependency pytest to v6.2.5 (#222)
renovate-bot 724b600
build(deps): bump pillow in /samples/snippets/crop_hints (#228)
dependabot[bot] be0f5b6
chore(deps): update dependency google-cloud-storage to v1.42.1 (#229)
renovate-bot 8785515
chore(deps): update dependency pillow to v8.3.2 (#230)
renovate-bot 1d5e66c
chore(deps): update dependency google-cloud-storage to v1.42.2 (#232)
renovate-bot bd6c5f7
chore: blacken samples noxfile template (#231)
gcf-owl-bot[bot] 01c5ea7
chore(deps): update dependency google-cloud-vision to v2.4.3 (#238)
renovate-bot 268fb72
chore(deps): update dependency google-cloud-vision to v2.4.4 (#242)
renovate-bot e94c871
chore(deps): update dependency google-cloud-storage to v1.42.3 (#243)
renovate-bot 789149c
chore: fail samples nox session if python version is missing (#241)
gcf-owl-bot[bot] 427b5a2
chore(python): Add kokoro configs for python 3.10 samples testing (#250)
gcf-owl-bot[bot] 56c6915
chore(deps): update dependency google-cloud-vision to v2.5.0 (#251)
renovate-bot 54afb08
chore(deps): update dependency pillow to v8.4.0 (#255)
renovate-bot 3966d8d
chore(deps): update dependency google-cloud-vision to v2.6.0 (#258)
renovate-bot c525a05
docs: update async_detect_document() sample (#260)
kweinmeister 783834c
chore(deps): update dependency google-cloud-vision to v2.6.1 (#262)
renovate-bot b1a8284
chore(deps): update dependency google-cloud-vision to v2.6.2 (#265)
renovate-bot 5475736
chore(deps): update dependency google-cloud-storage to v1.43.0 (#274)
renovate-bot dcc35c6
docs: Update doctext sample to include method signature (#275)
kweinmeister a14c009
docs: Add example of how to use max_results (#277)
andrewferlitsch eb5c8f9
chore: update python-docs-samples link to main branch (#278)
gcf-owl-bot[bot] 2bb258f
chore(deps): update dependency google-cloud-vision to v2.6.3 (#281)
renovate-bot 1af94f0
chore(samples): Add check for tests in directory (#288)
gcf-owl-bot[bot] 87b8ae5
chore(deps): update all dependencies (#285)
renovate-bot 1b23970
chore(deps): update dependency google-cloud-storage to v2 (#294)
renovate-bot 1bf5707
chore(python): Noxfile recognizes that tests can live in a folder (#296)
gcf-owl-bot[bot] ef16b85
chore(deps): update dependency google-cloud-storage to v2.1.0 (#297)
renovate-bot af291d8
chore(deps): update all dependencies (#311)
renovate-bot cf8e5c5
chore(deps): update all dependencies (#313)
renovate-bot 55a5098
chore: Adding support for pytest-xdist and pytest-parallel (#320)
gcf-owl-bot[bot] 8c85e9d
chore(deps): update dependency google-cloud-vision to v2.7.1 (#323)
renovate-bot 207e6e9
chore(deps): update dependency pytest to v7.1.0 (#325)
renovate-bot 47620b0
chore(deps): update dependency google-cloud-storage to v2.2.0 (#326)
renovate-bot 49e950b
chore(deps): update dependency google-cloud-storage to v2.2.1 (#327)
renovate-bot 57f3425
chore(deps): update dependency pytest to v7.1.1 (#328)
renovate-bot 53be1b0
chore(python): use black==22.3.0 (#333)
gcf-owl-bot[bot] f5fc180
chore(deps): update dependency google-cloud-vision to v2.7.2 (#332)
renovate-bot 9901741
chore(deps): update dependency pillow to v9.1.0 (#338)
renovate-bot 700c973
chore(deps): update dependency google-cloud-storage to v2.3.0 (#345)
renovate-bot 7ffb94b
chore(python): add nox session to sort python imports (#347)
gcf-owl-bot[bot] c80c653
chore(deps): update dependency pytest to v7.1.2 (#350)
renovate-bot 1e790f6
chore(deps): update dependency backoff to v2 (#351)
renovate-bot bafe4bf
chore(deps): update dependency backoff to v2.0.1 (#353)
renovate-bot 2f1ffd5
chore(deps): update dependency pillow to v9.1.1 (#359)
renovate-bot 3f686a6
fix: require python 3.7+ (#452)
gcf-owl-bot[bot] 2e04e09
chore(deps): update all dependencies (#444)
renovate-bot 3635ba1
chore(deps): update all dependencies (#461)
renovate-bot 89bf17f
chore(deps): update all dependencies (#463)
renovate-bot 4cfae14
chore(deps): update all dependencies (#466)
renovate-bot b9b3563
chore(deps): update dependency google-cloud-vision to v3.1.1 (#471)
renovate-bot b2d7484
chore(deps): update dependency pytest to v7.1.3 (#480)
renovate-bot 42eeaae
chore: detect samples tests in nested directories (#484)
gcf-owl-bot[bot] 869f21b
chore(deps): update dependency google-cloud-vision to v3.1.2 (#488)
renovate-bot 9e80372
chore(deps): update dependency google-cloud-vision to v3.1.3 (#492)
renovate-bot d914ee5
chore(deps): update dependency backoff to v2.2.1 (#493)
renovate-bot df00ead
chore(deps): update dependency google-cloud-vision to v3.1.4 (#496)
renovate-bot e103806
chore(deps): update dependency pytest to v7.2.0 (#497)
renovate-bot 8974dc2
chore(deps): update dependency pillow to v9.3.0 (#499)
renovate-bot 4e4d440
Merge remote-tracking branch 'migration/main' into python-vision-migr…
arbrown 25dc0ff
Update company name
arbrown beeb6ea
Remove extra verbiage from copyright header
arbrown 1dcaa73
Fix copyright lines
arbrown 3657f19
Remove comma
arbrown 3324786
Fix copyright header
arbrown e97630f
Remove trailing spaces
arbrown 2a338d1
Add blunderbuss and CODEOWNER
arbrown bafccb9
Remove noxfiles
arbrown 2001fcf
Remove noxfile
arbrown 6e603cc
Ignore python 2.7 in noxfile_config
arbrown 817c886
Remove remaining noxfiles
arbrown b13308f
Fix blunderbuss and CODEOWNERS teams
arbrown e5b117c
Update .github/CODEOWNERS
dandhlee 60ecda6
Remove final noxfile
arbrown File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
See https://github.com/GoogleCloudPlatform/python-docs-samples/blob/main/AUTHORING_GUIDE.md |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
See https://github.com/GoogleCloudPlatform/python-docs-samples/blob/main/CONTRIBUTING.md |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
output-crop.jpg | ||
output-hint.jpg |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
.. This file is automatically generated. Do not edit this file directly. | ||
|
||
Google Cloud Vision API Python Samples | ||
=============================================================================== | ||
|
||
.. image:: https://gstatic.com/cloudssh/images/open-btn.png | ||
:target: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/GoogleCloudPlatform/python-docs-samples&page=editor&open_in_editor=vision/cloud-client/crop_hints/README.rst | ||
|
||
|
||
This directory contains samples for Google Cloud Vision API. `Google Cloud Vision API`_ allows developers to easily integrate vision detection features within applications, including image labeling, face and landmark detection, optical character recognition (OCR), and tagging of explicit content. | ||
|
||
- See the `migration guide`_ for information about migrating to Python client library v0.25.1. | ||
|
||
.. _migration guide: https://cloud.google.com/vision/docs/python-client-migration | ||
|
||
|
||
|
||
|
||
.. _Google Cloud Vision API: https://cloud.google.com/vision/docs | ||
|
||
Setup | ||
------------------------------------------------------------------------------- | ||
|
||
|
||
Authentication | ||
++++++++++++++ | ||
|
||
This sample requires you to have authentication setup. Refer to the | ||
`Authentication Getting Started Guide`_ for instructions on setting up | ||
credentials for applications. | ||
|
||
.. _Authentication Getting Started Guide: | ||
https://cloud.google.com/docs/authentication/getting-started | ||
|
||
Install Dependencies | ||
++++++++++++++++++++ | ||
|
||
#. Clone python-docs-samples and change directory to the sample directory you want to use. | ||
|
||
.. code-block:: bash | ||
|
||
$ git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git | ||
|
||
#. Install `pip`_ and `virtualenv`_ if you do not already have them. You may want to refer to the `Python Development Environment Setup Guide`_ for Google Cloud Platform for instructions. | ||
|
||
.. _Python Development Environment Setup Guide: | ||
https://cloud.google.com/python/setup | ||
|
||
#. Create a virtualenv. Samples are compatible with Python 2.7 and 3.4+. | ||
|
||
.. code-block:: bash | ||
|
||
$ virtualenv env | ||
$ source env/bin/activate | ||
|
||
#. Install the dependencies needed to run the samples. | ||
|
||
.. code-block:: bash | ||
|
||
$ pip install -r requirements.txt | ||
|
||
.. _pip: https://pip.pypa.io/ | ||
.. _virtualenv: https://virtualenv.pypa.io/ | ||
|
||
Samples | ||
------------------------------------------------------------------------------- | ||
|
||
Crop Hints Tutorial | ||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | ||
|
||
.. image:: https://gstatic.com/cloudssh/images/open-btn.png | ||
:target: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/GoogleCloudPlatform/python-docs-samples&page=editor&open_in_editor=vision/cloud-client/crop_hints/crop_hints.py,vision/cloud-client/crop_hints/README.rst | ||
|
||
|
||
|
||
|
||
To run this sample: | ||
|
||
.. code-block:: bash | ||
|
||
$ python crop_hints.py | ||
|
||
usage: crop_hints.py [-h] image_file mode | ||
|
||
positional arguments: | ||
image_file The image you'd like to crop. | ||
mode Set to "crop" or "draw". | ||
|
||
optional arguments: | ||
-h, --help show this help message and exit | ||
|
||
|
||
|
||
|
||
|
||
The client library | ||
------------------------------------------------------------------------------- | ||
|
||
This sample uses the `Google Cloud Client Library for Python`_. | ||
You can read the documentation for more details on API usage and use GitHub | ||
to `browse the source`_ and `report issues`_. | ||
|
||
.. _Google Cloud Client Library for Python: | ||
https://googlecloudplatform.github.io/google-cloud-python/ | ||
.. _browse the source: | ||
https://github.com/GoogleCloudPlatform/google-cloud-python | ||
.. _report issues: | ||
https://github.com/GoogleCloudPlatform/google-cloud-python/issues | ||
|
||
|
||
.. _Google Cloud SDK: https://cloud.google.com/sdk/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# This file is used to generate README.rst | ||
|
||
product: | ||
name: Google Cloud Vision API | ||
short_name: Cloud Vision API | ||
url: https://cloud.google.com/vision/docs | ||
description: > | ||
`Google Cloud Vision API`_ allows developers to easily integrate vision | ||
detection features within applications, including image labeling, face and | ||
landmark detection, optical character recognition (OCR), and tagging of | ||
explicit content. | ||
|
||
|
||
- See the `migration guide`_ for information about migrating to Python client library v0.25.1. | ||
|
||
|
||
.. _migration guide: https://cloud.google.com/vision/docs/python-client-migration | ||
|
||
setup: | ||
- auth | ||
- install_deps | ||
|
||
samples: | ||
- name: Crop Hints Tutorial | ||
file: crop_hints.py | ||
show_help: True | ||
|
||
cloud_client_library: true | ||
|
||
folder: vision/cloud-client/crop_hints |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
#!/usr/bin/env python | ||
|
||
# Copyright 2017 Google LLC | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
"""Outputs a cropped image or an image highlighting crop regions on an image. | ||
|
||
Examples: | ||
python crop_hints.py resources/cropme.jpg draw | ||
python crop_hints.py resources/cropme.jpg crop | ||
""" | ||
# [START vision_crop_hints_tutorial] | ||
# [START vision_crop_hints_tutorial_imports] | ||
import argparse | ||
import io | ||
|
||
from google.cloud import vision | ||
from PIL import Image, ImageDraw | ||
# [END vision_crop_hints_tutorial_imports] | ||
|
||
|
||
def get_crop_hint(path): | ||
# [START vision_crop_hints_tutorial_get_crop_hints] | ||
"""Detect crop hints on a single image and return the first result.""" | ||
client = vision.ImageAnnotatorClient() | ||
|
||
with io.open(path, 'rb') as image_file: | ||
content = image_file.read() | ||
|
||
image = vision.Image(content=content) | ||
|
||
crop_hints_params = vision.CropHintsParams(aspect_ratios=[1.77]) | ||
image_context = vision.ImageContext(crop_hints_params=crop_hints_params) | ||
|
||
response = client.crop_hints(image=image, image_context=image_context) | ||
hints = response.crop_hints_annotation.crop_hints | ||
|
||
# Get bounds for the first crop hint using an aspect ratio of 1.77. | ||
vertices = hints[0].bounding_poly.vertices | ||
# [END vision_crop_hints_tutorial_get_crop_hints] | ||
|
||
return vertices | ||
|
||
|
||
def draw_hint(image_file): | ||
"""Draw a border around the image using the hints in the vector list.""" | ||
# [START vision_crop_hints_tutorial_draw_crop_hints] | ||
vects = get_crop_hint(image_file) | ||
|
||
im = Image.open(image_file) | ||
draw = ImageDraw.Draw(im) | ||
draw.polygon([ | ||
vects[0].x, vects[0].y, | ||
vects[1].x, vects[1].y, | ||
vects[2].x, vects[2].y, | ||
vects[3].x, vects[3].y], None, 'red') | ||
im.save('output-hint.jpg', 'JPEG') | ||
print('Saved new image to output-hint.jpg') | ||
# [END vision_crop_hints_tutorial_draw_crop_hints] | ||
|
||
|
||
def crop_to_hint(image_file): | ||
"""Crop the image using the hints in the vector list.""" | ||
# [START vision_crop_hints_tutorial_crop_to_hints] | ||
vects = get_crop_hint(image_file) | ||
|
||
im = Image.open(image_file) | ||
im2 = im.crop([vects[0].x, vects[0].y, | ||
vects[2].x - 1, vects[2].y - 1]) | ||
im2.save('output-crop.jpg', 'JPEG') | ||
print('Saved new image to output-crop.jpg') | ||
# [END vision_crop_hints_tutorial_crop_to_hints] | ||
|
||
|
||
if __name__ == '__main__': | ||
# [START vision_crop_hints_tutorial_run_application] | ||
parser = argparse.ArgumentParser() | ||
parser.add_argument('image_file', help='The image you\'d like to crop.') | ||
parser.add_argument('mode', help='Set to "crop" or "draw".') | ||
args = parser.parse_args() | ||
|
||
if args.mode == 'crop': | ||
crop_to_hint(args.image_file) | ||
elif args.mode == 'draw': | ||
draw_hint(args.image_file) | ||
# [END vision_crop_hints_tutorial_run_application] | ||
# [END vision_crop_hints_tutorial] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Copyright 2017 Google LLC | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
import os | ||
|
||
import crop_hints | ||
|
||
|
||
def test_crop(capsys): | ||
"""Checks the output image for cropping the image is created.""" | ||
file_name = os.path.join( | ||
os.path.dirname(__file__), | ||
'resources/cropme.jpg') | ||
crop_hints.crop_to_hint(file_name) | ||
out, _ = capsys.readouterr() | ||
assert os.path.isfile('output-crop.jpg') | ||
|
||
|
||
def test_draw(capsys): | ||
"""Checks the output image for drawing the crop hint is created.""" | ||
file_name = os.path.join( | ||
os.path.dirname(__file__), | ||
'resources/cropme.jpg') | ||
crop_hints.draw_hint(file_name) | ||
out, _ = capsys.readouterr() | ||
assert os.path.isfile('output-hint.jpg') |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.