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

Migrate code from googleapis/python-datalabeling #8456

Merged
merged 68 commits into from
Nov 9, 2022
Merged
Show file tree
Hide file tree
Changes from 62 commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
7858a28
chore: move samples from python-docs-sample to here (#29)
arithmetic1728 Aug 7, 2020
cee3077
feat!: migrate to use microgen (#34)
arithmetic1728 Aug 12, 2020
71ca67a
samples: updated requierement.txt and enabled list sample test (#48)
munkhuushmgl Sep 2, 2020
1e0adb9
chore: added helpful instruction comment on lable_image sample (#52)
munkhuushmgl Nov 16, 2020
5c99847
feat: add common resource helper paths; expose client transport (#49)
yoshi-automation Nov 18, 2020
213a2e3
chore: currently datalabeling is limited to due to covid 19 (#61)
munkhuushmgl Dec 28, 2020
3f8a868
chore: update templates (#63)
yoshi-automation Dec 29, 2020
abebafd
chore: Updating resources and configuration for presubmits and test e…
yoshi-automation Feb 12, 2021
686d515
chore: disabling datalabeling tests due to service limited exception …
munkhuushmgl Mar 23, 2021
cc4de63
chore: migrate to owl bot (#96)
parthea May 12, 2021
f43b1fb
chore(deps): update dependency pytest to v6.2.4 (#97)
renovate-bot May 14, 2021
93288af
chore: new owl bot post processor docker image (#103)
gcf-owl-bot[bot] May 22, 2021
c2e3910
chore(deps): update dependency google-cloud-datalabeling to v1.1.0 (#…
renovate-bot Jun 4, 2021
3e88a9b
chore(deps): update dependency backoff to v1.11.0 (#118)
renovate-bot Jul 12, 2021
e7a0dee
chore(deps): update dependency google-cloud-datalabeling to v1.2.0 (#…
renovate-bot Jul 13, 2021
9047b77
chore(deps): update dependency backoff to v1.11.1 (#120)
renovate-bot Jul 16, 2021
49f141a
feat: add Samples section to CONTRIBUTING.rst (#124)
gcf-owl-bot[bot] Jul 22, 2021
8791e61
chore(deps): update dependency google-cloud-datalabeling to v1.2.1 (#…
renovate-bot Jul 22, 2021
3b96719
chore(deps): update dependency google-cloud-datalabeling to v1.2.2 (#…
renovate-bot Jul 28, 2021
20bf518
chore: fix INSTALL_LIBRARY_FROM_SOURCE in noxfile.py (#134)
gcf-owl-bot[bot] Aug 11, 2021
d770fa9
chore: drop mention of Python 2.7 from templates (#136)
gcf-owl-bot[bot] Aug 13, 2021
9bebe8c
chore(deps): update dependency pytest to v6.2.5 (#141)
renovate-bot Aug 31, 2021
0aee688
chore: blacken samples noxfile template (#146)
gcf-owl-bot[bot] Sep 17, 2021
f99a215
chore: fail samples nox session if python version is missing (#153)
gcf-owl-bot[bot] Sep 30, 2021
7df8fc6
chore(python): Add kokoro configs for python 3.10 samples testing (#158)
gcf-owl-bot[bot] Oct 8, 2021
5191da9
chore(deps): update dependency google-cloud-datalabeling to v1.3.0 (#…
renovate-bot Oct 20, 2021
c2fc455
chore(deps): update dependency google-cloud-datalabeling to v1.4.0 (#…
renovate-bot Nov 3, 2021
d6620b8
chore(samples): Add check for tests in directory (#181)
gcf-owl-bot[bot] Jan 11, 2022
9a57f84
chore(python): Noxfile recognizes that tests can live in a folder (#185)
gcf-owl-bot[bot] Jan 19, 2022
d55abe6
chore(deps): update dependency pytest to v7 (#193)
renovate-bot Feb 7, 2022
ed22fe2
chore(deps): update dependency pytest to v7.0.1 (#195)
renovate-bot Feb 14, 2022
a01df31
chore(deps): update dependency google-cloud-datalabeling to v1.5.0 (#…
renovate-bot Feb 14, 2022
7133c23
chore: use gapic-generator-python 0.63.2 (#194)
gcf-owl-bot[bot] Feb 24, 2022
a62b743
chore: use gapic-generator-python 0.63.4 (#197)
gcf-owl-bot[bot] Feb 25, 2022
5c43f56
chore: update copyright year to 2022 (#198)
gcf-owl-bot[bot] Feb 26, 2022
9093bf9
chore: Adding support for pytest-xdist and pytest-parallel (#207)
gcf-owl-bot[bot] Mar 4, 2022
da7ea9d
chore(deps): update dependency google-cloud-datalabeling to v1.5.1 (#…
renovate-bot Mar 7, 2022
fcbaeb9
chore(deps): update dependency pytest to v7.1.0 (#212)
renovate-bot Mar 13, 2022
15caff7
chore(deps): update dependency pytest to v7.1.1 (#213)
renovate-bot Mar 19, 2022
a64f2a6
chore(python): use black==22.3.0 (#218)
gcf-owl-bot[bot] Mar 28, 2022
f936c44
chore: use gapic-generator-python 0.65.1 (#228)
gcf-owl-bot[bot] Apr 14, 2022
44376bc
chore(python): add nox session to sort python imports (#229)
gcf-owl-bot[bot] Apr 21, 2022
0adf632
chore(deps): update dependency pytest to v7.1.2 (#232)
renovate-bot Apr 25, 2022
ea1ce9b
chore(deps): update dependency backoff to v2 (#233)
renovate-bot Apr 26, 2022
f4d289d
chore(deps): update dependency backoff to v2.0.1 (#235)
renovate-bot Apr 27, 2022
ba5bfe3
fix: require python 3.7+ (#251)
gcf-owl-bot[bot] Jul 10, 2022
70d6906
chore(deps): update all dependencies (#245)
renovate-bot Jul 15, 2022
a589421
chore(deps): update all dependencies (#257)
renovate-bot Aug 2, 2022
0ab4e21
chore(deps): update dependency google-cloud-datalabeling to v1.6.1 (#…
renovate-bot Aug 17, 2022
4a7715e
chore(deps): update dependency pytest to v7.1.3 (#272)
renovate-bot Sep 6, 2022
8d10ac4
chore: Bump gapic-generator-python version to 1.3.0 (#273)
gcf-owl-bot[bot] Sep 7, 2022
304ffc2
chore: detect samples tests in nested directories (#276)
gcf-owl-bot[bot] Sep 13, 2022
714ce01
chore(deps): update dependency google-cloud-datalabeling to v1.6.2 (#…
renovate-bot Oct 4, 2022
b57e518
chore(deps): update dependency backoff to v2.2.1 (#281)
renovate-bot Oct 6, 2022
cbc4eb4
chore(deps): update dependency google-cloud-datalabeling to v1.6.3 (#…
renovate-bot Oct 18, 2022
ab0e3ba
chore(deps): update dependency pytest to v7.2.0 (#285)
renovate-bot Oct 26, 2022
ee4282f
Updated copyright years to 2022
ivanmkc Nov 3, 2022
b686d2f
Removed generated samples
ivanmkc Nov 4, 2022
60066eb
Fixed removed files and master-main
ivanmkc Nov 4, 2022
e86677c
Merge branch 'main' into python-datalabeling-migration
ivanmkc Nov 4, 2022
0a96c25
Merge branch 'main' into python-datalabeling-migration
ivanmkc Nov 8, 2022
d7a9b2d
Updated blunderbuss file
ivanmkc Nov 8, 2022
0833c3e
Update .github/blunderbuss.yml
dandhlee Nov 8, 2022
2daf5ce
Merge branch 'main' into python-datalabeling-migration
ivanmkc Nov 8, 2022
ab01032
Added ivanmkc as reviewer
ivanmkc Nov 8, 2022
ddd312e
Added to CODEOWNERS
ivanmkc Nov 9, 2022
5dd6664
Merge branch 'main' into python-datalabeling-migration
dandhlee Nov 9, 2022
b9844f5
Merge branch 'main' into python-datalabeling-migration
dandhlee Nov 9, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/blunderbuss.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,11 @@ assign_issues_by:
- 'api: translate'
to:
- nicain

- labels:
- 'api: datalabeling'
to:
- python-sample-reviewers
dandhlee marked this conversation as resolved.
Show resolved Hide resolved

assign_prs_by:
- labels:
- 'api: auth'
Expand Down
1 change: 1 addition & 0 deletions datalabeling/AUTHORING_GUIDE.md
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
1 change: 1 addition & 0 deletions datalabeling/CONTRIBUTING.md
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
78 changes: 78 additions & 0 deletions datalabeling/snippets/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
.. This file is automatically generated. Do not edit this file directly.

Google Cloud Data Labeling Service 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=datalabeling/README.rst


This directory contains samples for Google Cloud Data Labeling Service. `Google Cloud Data Labeling Service`_ allows developers to request having human labelers label a collection of data that you plan to use to train a custom machine learning model.




.. _Google Cloud Data Labeling Service: https://cloud.google.com/data-labeling/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/



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/
18 changes: 18 additions & 0 deletions datalabeling/snippets/README.rst.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# This file is used to generate README.rst

product:
name: Google Cloud Data Labeling Service
short_name: Cloud Data Labeling
url: https://cloud.google.com/data-labeling/docs/
description: >
`Google Cloud Data Labeling Service`_ allows developers to request having
human labelers label a collection of data that you plan to use to train a
custom machine learning model.

setup:
- auth
- install_deps

cloud_client_library: true

folder: datalabeling
84 changes: 84 additions & 0 deletions datalabeling/snippets/create_annotation_spec_set.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#!/usr/bin/env python

# Copyright 2022 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 argparse
import os

from google.api_core.client_options import ClientOptions


# [START datalabeling_create_annotation_spec_set_beta]
def create_annotation_spec_set(project_id):
"""Creates a data labeling annotation spec set for the given
Google Cloud project.
"""
from google.cloud import datalabeling_v1beta1 as datalabeling

client = datalabeling.DataLabelingServiceClient()
# [END datalabeling_create_annotation_spec_set_beta]
# If provided, use a provided test endpoint - this will prevent tests on
# this snippet from triggering any action by a real human
if "DATALABELING_ENDPOINT" in os.environ:
opts = ClientOptions(api_endpoint=os.getenv("DATALABELING_ENDPOINT"))
client = datalabeling.DataLabelingServiceClient(client_options=opts)
# [START datalabeling_create_annotation_spec_set_beta]

project_path = f"projects/{project_id}"

annotation_spec_1 = datalabeling.AnnotationSpec(
display_name="label_1", description="label_description_1"
)

annotation_spec_2 = datalabeling.AnnotationSpec(
display_name="label_2", description="label_description_2"
)

annotation_spec_set = datalabeling.AnnotationSpecSet(
display_name="YOUR_ANNOTATION_SPEC_SET_DISPLAY_NAME",
description="YOUR_DESCRIPTION",
annotation_specs=[annotation_spec_1, annotation_spec_2],
)

response = client.create_annotation_spec_set(
request={"parent": project_path, "annotation_spec_set": annotation_spec_set}
)

# The format of the resource name:
# project_id/{project_id}/annotationSpecSets/{annotationSpecSets_id}
print("The annotation_spec_set resource name: {}".format(response.name))
print("Display name: {}".format(response.display_name))
print("Description: {}".format(response.description))
print("Annotation specs:")
for annotation_spec in response.annotation_specs:
print("\tDisplay name: {}".format(annotation_spec.display_name))
print("\tDescription: {}\n".format(annotation_spec.description))

return response


# [END datalabeling_create_annotation_spec_set_beta]


if __name__ == "__main__":
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
)

parser.add_argument("--project-id", help="Project ID. Required.", required=True)

args = parser.parse_args()

create_annotation_spec_set(args.project_id)
53 changes: 53 additions & 0 deletions datalabeling/snippets/create_annotation_spec_set_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/usr/bin/env python

# Copyright 2022 Google, Inc
#
# 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 backoff
from google.api_core.exceptions import ServerError
import pytest

import create_annotation_spec_set
import testing_lib

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")


@pytest.fixture(scope="module")
def cleaner():
resource_names = []

yield resource_names

for resource_name in resource_names:
testing_lib.delete_annotation_spec_set(resource_name)


@pytest.mark.skip(reason="service is limited due to covid")
def test_create_annotation_spec_set(cleaner, capsys):
@backoff.on_exception(
backoff.expo, ServerError, max_time=testing_lib.RETRY_DEADLINE
)
def run_sample():
return create_annotation_spec_set.create_annotation_spec_set(PROJECT_ID)

response = run_sample()

# For cleanup
cleaner.append(response.name)

out, _ = capsys.readouterr()
assert "The annotation_spec_set resource name:" in out
96 changes: 96 additions & 0 deletions datalabeling/snippets/create_instruction.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#!/usr/bin/env python

# Copyright 2022 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 argparse
import os

from google.api_core.client_options import ClientOptions


# [START datalabeling_create_instruction_beta]
def create_instruction(project_id, data_type, instruction_gcs_uri):
"""Creates a data labeling PDF instruction for the given Google Cloud
project. The PDF file should be uploaded to the project in
Google Cloud Storage.
"""
from google.cloud import datalabeling_v1beta1 as datalabeling

client = datalabeling.DataLabelingServiceClient()
# [END datalabeling_create_instruction_beta]
# If provided, use a provided test endpoint - this will prevent tests on
# this snippet from triggering any action by a real human
if "DATALABELING_ENDPOINT" in os.environ:
opts = ClientOptions(api_endpoint=os.getenv("DATALABELING_ENDPOINT"))
client = datalabeling.DataLabelingServiceClient(client_options=opts)
# [START datalabeling_create_instruction_beta]

project_path = f"projects/{project_id}"

pdf_instruction = datalabeling.PdfInstruction(gcs_file_uri=instruction_gcs_uri)

instruction = datalabeling.Instruction(
display_name="YOUR_INSTRUCTION_DISPLAY_NAME",
description="YOUR_DESCRIPTION",
data_type=data_type,
pdf_instruction=pdf_instruction,
)

operation = client.create_instruction(
request={"parent": project_path, "instruction": instruction}
)

result = operation.result()

# The format of the resource name:
# project_id/{project_id}/instruction/{instruction_id}
print("The instruction resource name: {}".format(result.name))
print("Display name: {}".format(result.display_name))
print("Description: {}".format(result.description))
print("Create time:")
print("\tseconds: {}".format(result.create_time.timestamp_pb().seconds))
print("\tnanos: {}".format(result.create_time.timestamp_pb().nanos))
print("Data type: {}".format(datalabeling.DataType(result.data_type).name))
print("Pdf instruction:")
print("\tGcs file uri: {}\n".format(result.pdf_instruction.gcs_file_uri))

return result


# [END datalabeling_create_instruction_beta]


if __name__ == "__main__":
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
)

parser.add_argument("--project-id", help="Project ID. Required.", required=True)

parser.add_argument(
"--data-type",
help="Data type. Only support IMAGE, VIDEO, TEXT and AUDIO. Required.",
required=True,
)

parser.add_argument(
"--instruction-gcs-uri",
help="The URI of Google Cloud Storage of the instruction. Required.",
required=True,
)

args = parser.parse_args()

create_instruction(args.project_id, args.data_type, args.instruction_gcs_uri)
Loading