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

Build out some integration with Cloud Bigtable #872

Closed
jgeewax opened this issue May 12, 2015 · 95 comments
Closed

Build out some integration with Cloud Bigtable #872

jgeewax opened this issue May 12, 2015 · 95 comments
Assignees
Labels
api: bigtable Issues related to the Bigtable API.
Milestone

Comments

@jgeewax
Copy link
Contributor

jgeewax commented May 12, 2015

We want to make users of Happybase "just work", so...some ideas:

Option 1: A wrapped import module

from gcloud.bigtable import happybase

Option 2: Some sort of monkey patching?

from gcloud import bigtable
import happybase
happybase = bigtable.monkey_patch(happybase)
@jgeewax jgeewax added the api: bigtable Issues related to the Bigtable API. label May 12, 2015
@jgeewax jgeewax added this to the Bigtable Beta milestone May 12, 2015
@jgeewax
Copy link
Contributor Author

jgeewax commented May 12, 2015

/cc @maxluebbe

@jgeewax
Copy link
Contributor Author

jgeewax commented May 12, 2015

/cc @dhermes @tseaver : Max might have some spare cycles to work on this, figured you guys should chat.

@dhermes
Copy link
Contributor

dhermes commented May 14, 2015

@tseaver
Copy link
Contributor

tseaver commented May 28, 2015

ISTM that monkey-patching the happybase third-party module would be a poor choice. I think we need to think of this as "write a happybase API emulation layer" instead (which may or may not itself even use the real happybase code).

@dhermes
Copy link
Contributor

dhermes commented May 28, 2015

Can you elaborate? Why is it a bad idea? (I have yet to look at the happybase code/docs.)

@tseaver
Copy link
Contributor

tseaver commented May 28, 2015

I think our goal is that they should be able to port scripts easily (ideally, just changing import happytable to from gcloud.bigtable import happytable and adjusting the connection parameters). I don't see interfering with the actual happytable module's internals as a useful way to approach that goal. For instance, users of gcloud.bigtable might need to interact with a real happybase/Thrift backend (e.g., to move or compare data between it and the bigtable dataset).

@jgeewax
Copy link
Contributor Author

jgeewax commented May 28, 2015

I agree that there may be times where someone would want to talk to Cloud Bigtable and HBase at the same time, so monkey-patching happybase sounds like we'd screw over those multi-tenant situations.

Maybe there's a way to from gcloud import bigtable and then happybase_compatible_client = bigtable.get_happybase_client() which uses the real happybase code, but swaps out a connection of sorts at the lower level...

@tseaver
Copy link
Contributor

tseaver commented May 28, 2015

The gcloud.bigtable docs say:

Cloud Bigtable works with Hadoop 2.4 and higher and is interface compatible with Apache HBase 1.0.

If that means that it exports the same REST API as HBase / Thrift, then maybe we don't have to do much to enable happybase, beyond ensuring that we set the connection up with gcloud-relevant credentials.

@jgeewax
Copy link
Contributor Author

jgeewax commented May 28, 2015

This is the interesting piece. It is not wire-protocol compatible. That is -- it doesn't speak Thrift (AFAIK). Instead, they made the Java code compatible, and swapped out the thing that does serialization and sending of requests underneath.

I think @maxluebbe can comment more to confirm.

@dhermes
Copy link
Contributor

dhermes commented May 29, 2015

Yeah that one is important. I was under the impression from @jgeewax previous comments that the web APIs were the same / close cousins.

@brianolson
Copy link

The Java "HBase" client to Bigtable appears to be an emulation layer. A Python client should be built on the same protobuf rpc interface as that:
https://github.com/GoogleCloudPlatform/cloud-bigtable-client/tree/master/bigtable-protos/src/main/proto/google

I'd imagine that Python client having a native mode that just handles the proto-rpc; and then there could be a happybase emulation layer on top of that.

@maxluebbe
Copy link

Sorry have been OOO. Some clarifications.

  1. Additional work item is modernizing Happybase to 1.0 HBase API.
  2. Cloud Bigtable does not support Thrift/Rest interfaces. Part of the work that needs to be done here is decoupling the thrift parts of happybase from the interface provided to the user, so that we can drop in gRPC in place of Thrift.

@jgeewax
Copy link
Contributor Author

jgeewax commented Jun 2, 2015

gRPC or Protobuf over HTTP 1.0?

gRPC is not possible right now given the installation process (we need to keep our install to pip install gcloud and can't ask people to do a bunch of Makefile madness to use our library).

@brianolson
Copy link

Is it acceptable for gRPC to be an optional install? (and python bigtable might not work without it, but the rest of gcloud-python would)
Maybe spin off the python bigtable client into something not part of 'gcloud-python'? (Seems fair, the Java bigtable client is its own project/repo.)

@jgeewax
Copy link
Contributor Author

jgeewax commented Jun 3, 2015

You're telling me there's no way to talk to Cloud Bigtable's API without using a gRPC client? We can't use HTTP 1.0 ? That seems.... really really weird. @maxluebbe @carterpage can you confirm?

@carterpage
Copy link

We're designed to be very low latency and high-throughput so all of our focus is on gRPC. There is a REST interface, which comes for free with our envelope, but we don't recommend using for much more than slow admin API calls or ad hoc test queries against the data API. Almost everything in the API is a binary string, including keys and values, so there would be a lot of base64 encoding going on -- a big CPU hit on both sides. We also have not tested streaming scans would work in REST.

@dhermes
Copy link
Contributor

dhermes commented Jun 3, 2015

Can we help make the gRPC install process easy?

@jgeewax
Copy link
Contributor Author

jgeewax commented Jun 3, 2015

Some references.... (Short answer... not really. The best we have for Linux is sudo apt-get install linuxbrew && sudo brew install grpc)

I believe the issue here is that gRPC requires some crazy stuff in SSL libs and others, which won't make it into mainstream world for quite some time, and users can't have two versions of those libraries the way apt handles packaging (for Linux).

As for @carterpage 's comment...

We're designed to be very low latency and high-throughput so all of our focus is on gRPC. There is a REST interface, which comes for free with our envelope, but we don't recommend using for much more than slow admin API calls or ad hoc test queries against the data API.

HBase today doesn't speak HTTP 2.0 right? So wouldn't the REST-ful HTTP API calls be comparable to existing HBase clusters in latency and HTTP overhead?

@carterpage
Copy link

HBase has their own bespoke RPC system that's actually fairly fast. The issue for us is, using Google's plumbing, gRPC is the only option to provide the sort of latencies we need.

RESTful HTTP API calls would be better than running a Thrift server in front of HBase, since that adds an extra hop, but that's a fairly low bar. I think the performance comparison we want to aim for is Happybase against raw HBase. I believe that uses HBase's binary RPC format, so I don't see how we'd match it without gRPC.

@jgeewax
Copy link
Contributor Author

jgeewax commented Jun 3, 2015

Got it. We won't be able to "depend" on gRPC via PyPI, so that means in our docs we'll basically have to say "If you want to use Cloud Bigtable via gcloud-python, you'll need to follow these steps to install gRPC on your machine".

This will clearly have more drop-off, but I suspect we already have a somewhat small pool of people using Cloud Bigtable (given the lowest cost product we offer people is $1500 / month), so adding an extra "here install this" hurdle wouldn't be the end of the world.

@dhermes
Copy link
Contributor

dhermes commented Jun 3, 2015

Shouldn't the dev exp be even better for the people paying more? (Sorry if that is an unpopular opinion.)

@jgeewax
Copy link
Contributor Author

jgeewax commented Jun 3, 2015

Haha - yes, it should. The developer experience in this case is blazing fast managed HBase -- which is pretty incredible (and what you're paying for).

As far as "installing the client", it seems that our problem with packaging gRPC is not really in our control. The library itself (I'm told) depends on some pretty serious changes to libraries which are in the pipeline but not aimed for main-stream for quite some time. The best we can do (again, I'm told) is using linux brew (brew install grpc).

@carterpage
Copy link

JJ hit the nail on the head. This is a pretty bleeding edge service, so there are still some rough edges that will get polished as more network stacks are comfortable with HTTP2, etc.. Our typical customer is technically sophisticated and willing to tolerate a little extra effort for the added power. Hopefully we'll have the best of both worlds before long.

@dhermes
Copy link
Contributor

dhermes commented Jun 6, 2015

So you're extending existing Python libraries to support HTTP2 or making your own? Why not just ship a custom fork?

Is the issue compiling C extensions for Python or is the issue making new versions of system socket libraries (e.g. things in /usr/lib)? It should still be possible to just point to local paths for things that would typically be found in /usr/lib.

@dhermes
Copy link
Contributor

dhermes commented Jun 10, 2015

Some context for Python 3 support in happybase (and deps):

python-happybase/happybase#40
python-happybase/happybase#78
python-happybase/happybase#95

@maxluebbe
Copy link

Let's not think about Python 3 at this time. Getting a solid Python 2.x experience is our top priority.

@tseaver
Copy link
Contributor

tseaver commented Jun 10, 2015

@maxluebbe the rest of gcloud-python is already Python3-compatible. At a minimum, we need all "hard" dependencies to be compatible as well, so that our CI story stays sane. I guess we could keep our code source-compatible, make happylib a "soft" dependency, and define the wrappers / tests only if it is importable.

@dhermes
Copy link
Contributor

dhermes commented Jun 10, 2015

@jgeewax Suggested we use happybase. I'm trying to get a sense of its popularity after @maxluebbe made me step back and ask "why happybase?".

It only has 17 tagged StackOverflow questions (as of June 10 at noon Pacific).

Checking installs is not so small:

$ pip install -U vanity
$ vanity happybase
...
happybase has been downloaded 487933 times!

This is in comparsion to 37,602,602 for boto and 10,308,673 for httplib2, so I'm not sure how to gauge it.

@dhermes
Copy link
Contributor

dhermes commented Jul 16, 2015

@jgeewax Small distinction: service accounts work (i.e. they are "good") for the Table Admin API and Data API, just not the Cluster Admin API (here is where they are "no good").

@coryoconnor
Copy link

@dmmcerlean @sduskis any ideas?

@lesv
Copy link

lesv commented Jul 16, 2015

@dhermes
Copy link
Contributor

dhermes commented Jul 16, 2015

Trying only one at a time as wells as both at once, it still fails with the message

Project has not enabled the API. Please use Google Developers Console to activate the API for your project.


If you like, I've made an all-inclusive gist that makes this easy to run and tweak:
https://gist.github.com/dhermes/d27070c90a9862213a3b

The script main_with_cluster_admin.go uses bigtable.ClusterAdminScope. This value (defined in doc.go) is slightly different than the one you suggested:

https://www.googleapis.com/auth/bigtable.admin.cluster        # In GOLANG
https://www.googleapis.com/auth/cloud-bigtable.admin.cluster  # Your suggestion

You can run it with

make list_clusters

for a service account or

make list_clusters USE_APP_DEFAULT=True

for using the user creds from gcloud login.

@dhermes
Copy link
Contributor

dhermes commented Jul 16, 2015

Here is a well-polished jumping off point for Python:
https://gist.github.com/dhermes/2edb97d9581b5ec471eb

Will merge this upstream into https://github.com/dhermes/gcloud-python-bigtable

@lesv
Copy link

lesv commented Jul 16, 2015

@AngusDavis -- Please take a look.

@lesv
Copy link

lesv commented Jul 16, 2015

I've talked with engineering -- it is probably best not to provide the cluster APIs for now.

@jgeewax
Copy link
Contributor Author

jgeewax commented Jul 16, 2015 via email

@lesv
Copy link

lesv commented Jul 16, 2015

gcloud, when acquiring OAuth tokens, use the client id and client secret (from the installed application OAuth flow). This results in gcloud being able to use the API, but not tokens associated with service accounts.

When the Cluster API is fully enabled, it will be usable programmatically. Until then, the recommendation is to use gcloud or cloud console for the infrequent case of creating a cluster and the data and table APIs for the more frequent cases.

So basically, the API is visible to some internal projects and not to everyone else. We're trying to get this exposed via a service acct, it's currently not... hang tight

@dhermes
Copy link
Contributor

dhermes commented Jul 16, 2015

Hanging tight; from the outside perspective, service accounts should be prioritized over user accounts since service accounts are used in a deployed application.

@dhermes
Copy link
Contributor

dhermes commented Jul 20, 2015

OK here is a new one, I can't even create a cluster through the API cloud console anymore:

screen_shot_006

Note the "Table Admin API" service is enabled on the project

screen_shot_007

and as mentioned before there is no Cluster Admin API as a choice to enable:

screen_shot_008

@lesv
Copy link

lesv commented Jul 20, 2015

I've reported it to engineering.

@dhermes
Copy link
Contributor

dhermes commented Jul 20, 2015

Thanks. I think it's just my personal (@gmail.com) account. @jgeewax was able to create one through the UI with a @google.com account.

@lesv
Copy link

lesv commented Jul 20, 2015

Yep -- it fails on my personal gmail account when I'm not on the corporate network as well.

@lesv
Copy link

lesv commented Jul 20, 2015

Fix is rolling out now, should be done in the next few hours.

@dhermes
Copy link
Contributor

dhermes commented Jul 20, 2015

Fix for UI or fix for supporting service accounts with Cluster Admin API?

@lesv
Copy link

lesv commented Jul 20, 2015

At this point, it should be just like things were last week. We rolled back some changes.

@dhermes
Copy link
Contributor

dhermes commented Jul 20, 2015

Gotcha. Thanks.

@dhermes
Copy link
Contributor

dhermes commented Jul 22, 2015

@lesv ISTM that it became possible to use service accounts for the Cluster Admin API yesterday. Can you confirm? (Though the API still doesn't show up in the list of APIs to enable on cloud console.)

@lesv
Copy link

lesv commented Jul 22, 2015

That might have happened as part of the fix for the problem you found recently -- the engineer I need to talk w/ is out this week -- so, don't take it as a given that it will stay this way. Eventually, it will be correct and you can use them -- but I'm not sure it has happened officially yet.

@lesv
Copy link

lesv commented Jul 23, 2015

@dhermes @jgeewax The Cluster Admin API is definitely not supposed to be enabled yet. The cluster proto was open sourced for some testing reasons, but wasn't supposed to be made available externally yet. One reason is that there are some naming issues that have come up, and the proto may have to be changed because of this. That conversation won't take place until next week and we probably won't see any public results for at least a week after that.

@dhermes
Copy link
Contributor

dhermes commented Jul 23, 2015

@lesv Thanks. I have the entire Cluster Admin API implemented, including

  • an automated generator for the *_pb2.py modules
  • a system test suite that covers every API method (except for UndeleteCluster) with real API calls
  • a unit test suite with 100% code coverage

Though it's not supposed to be enabled yet, any changes will be quickly picked up by the 3 suites mentioned above.

Thanks for the heads up though.


PS ISTM that supporting cloud alpha bigtable clusters * would be impossible without enabling the API.

@dhermes
Copy link
Contributor

dhermes commented Aug 3, 2015

I have everything implemented except for the stream requests (ReadRows and SampleRowKeys), which I'm not sure how to handle with gRPC Python.

Golang handles it by using a cancel-able stream.

@nathanielmanistaatgoogle

@dhermes: what's unclear? gRPC Python supports cancellation. (Ping me; I have some time open this afternoon if you'd like to videochat.)

@dhermes
Copy link
Contributor

dhermes commented Aug 3, 2015

Nothing unclear (that I know of), I just don't know how to do it. Let's chat.

@jgeewax
Copy link
Contributor Author

jgeewax commented Nov 3, 2015

@dhermes : Looks like we're "done enough" with the Bigtable stuff. I'm going to close this out and open a new issue focused on "what exactly do we need to do to make gcloud_bigtable become gcloud.bigtable"

Sound reasonable? (Re-open if not)

@jgeewax jgeewax closed this as completed Nov 3, 2015
parthea pushed a commit that referenced this issue Oct 21, 2023
* Add new "quickstart" samples [(#547)](GoogleCloudPlatform/python-docs-samples#547)

* Quickstart tests [(#569)](GoogleCloudPlatform/python-docs-samples#569)

* Add tests for quickstarts
* Update secrets

* Fix vision failure on Python 3

Change-Id: Ieb53e6cdd8b1a70089b970b7a2aa57dd3d24c3de

* Generate most non-appengine readmes

Change-Id: I3779282126cdd05b047194d356932b9995484115

* Update samples to support latest Google Cloud Python [(#656)](GoogleCloudPlatform/python-docs-samples#656)

* Auto-update dependencies. [(#715)](GoogleCloudPlatform/python-docs-samples#715)

* Vision cloud client snippets [(#751)](GoogleCloudPlatform/python-docs-samples#751)

* fixes typo in detect_properties [(#761)](GoogleCloudPlatform/python-docs-samples#761)

* Vision 1.1 [(#827)](GoogleCloudPlatform/python-docs-samples#827)

* Adds vision 1.1 features

* Update README

* Updates GCS snippet to match local file [(#836)](GoogleCloudPlatform/python-docs-samples#836)

* Improvess consistency in docs and fixes links in restructured text [(#839)](GoogleCloudPlatform/python-docs-samples#839)

* Auto-update dependencies. [(#825)](GoogleCloudPlatform/python-docs-samples#825)

* Crop hints tutorial [(#861)](GoogleCloudPlatform/python-docs-samples#861)

* Adds crop hints tutorial.

* Uses aspect ratio so that we actually crop.

* Addresses review feedback

* nits

* Restructures samples for CI

* Auto-update dependencies. [(#866)](GoogleCloudPlatform/python-docs-samples#866)

* Adds document text detection tutorial. [(#868)](GoogleCloudPlatform/python-docs-samples#868)

* Adds document text detection tutorial.

* Feedback from review

* Less whitespace and fewer hanging indents

* Fixes a few style issues that came up in document text review. [(#871)](GoogleCloudPlatform/python-docs-samples#871)

* Fixes a few style issues that came up in document text review.

* Fixing my breaks

* Auto-update dependencies. [(#872)](GoogleCloudPlatform/python-docs-samples#872)

* An attempt at flattening the detect example [(#873)](GoogleCloudPlatform/python-docs-samples#873)

* Adds web detection tutorial [(#874)](GoogleCloudPlatform/python-docs-samples#874)

* Vision face tutorial [(#880)](GoogleCloudPlatform/python-docs-samples#880)

* Updates sample to use the Cloud client library

* Nits found after commit

* Nudge for travis

* flake8 hates my face

* Auto-update dependencies. [(#876)](GoogleCloudPlatform/python-docs-samples#876)

* Remove cloud config fixture [(#887)](GoogleCloudPlatform/python-docs-samples#887)

* Remove cloud config fixture

* Fix client secrets

* Fix bigtable instance

* Auto-update dependencies. [(#888)](GoogleCloudPlatform/python-docs-samples#888)

* Remove resource [(#890)](GoogleCloudPlatform/python-docs-samples#890)

* Remove resource fixture

* Remove remote resource

* Re-generate all readmes

* Auto-update dependencies. [(#922)](GoogleCloudPlatform/python-docs-samples#922)

* Auto-update dependencies.

* Fix pubsub iam samples

* Adds checks for all features using https. [(#944)](GoogleCloudPlatform/python-docs-samples#944)

* Adds checks for all features using https.

* Fixes overindent for lint

* Fix README rst links [(#962)](GoogleCloudPlatform/python-docs-samples#962)

* Fix README rst links

* Update all READMEs

* Auto-update dependencies. [(#1004)](GoogleCloudPlatform/python-docs-samples#1004)

* Auto-update dependencies.

* Fix natural language samples

* Fix pubsub iam samples

* Fix language samples

* Fix bigquery samples

* Auto-update dependencies. [(#1011)](GoogleCloudPlatform/python-docs-samples#1011)

* Auto-update dependencies. [(#1033)](GoogleCloudPlatform/python-docs-samples#1033)

* Vision GAPIC client library [(#1015)](GoogleCloudPlatform/python-docs-samples#1015)

* Migrate quickstart to gapic

* formatting

* updating detect_faces, failing tests

* Migrate detect_faces to gapic

* Migrate detect_labels to gapic

* Migrate detect_landmarks to gapic

* Migrate detect_logos to gapic

* remove "Likelihood" from test outputs

* Migrate detect_safe_search to gapic

* Migrate detect_text to gapic

* Migrate detect_properties to gapic

* Migrate detect_web to gapic

* Migrate crophints to gapic

* Migrate detect_document to gapic;

* Migrate crop_hints.py to gapic

* hard code the likelihood names

* Make code snippets more self-contained

* Migrate doctext.py to gapic

* Migrate web_detect.py to gapic

* Migrate faces.py to gapic

* flake8

* fix missing string format

* remove url scores from sample output

* region tags update

* region tag correction

* move region tag in get crop hints

* move region tags

* import style

* client creation

* rename bound to vertex

* add region tags

* increment client library version

* update README to include link to the migration guide

* correct version number

* update readme

* update client library version in requirements and readme

* Auto-update dependencies. [(#1055)](GoogleCloudPlatform/python-docs-samples#1055)

* Auto-update dependencies.

* Explicitly use latest bigtable client

Change-Id: Id71e9e768f020730e4ca9514a0d7ebaa794e7d9e

* Revert language update for now

Change-Id: I8867f154e9a5aae00d0047c9caf880e5e8f50c53

* Remove pdb. smh

Change-Id: I5ff905fadc026eebbcd45512d4e76e003e3b2b43

* Auto-update dependencies. [(#1093)](GoogleCloudPlatform/python-docs-samples#1093)

* Auto-update dependencies.

* Fix storage notification poll sample

Change-Id: I6afbc79d15e050531555e4c8e51066996717a0f3

* Fix spanner samples

Change-Id: I40069222c60d57e8f3d3878167591af9130895cb

* Drop coverage because it's not useful

Change-Id: Iae399a7083d7866c3c7b9162d0de244fbff8b522

* Try again to fix flaky logging test

Change-Id: I6225c074701970c17c426677ef1935bb6d7e36b4

* Update all generated readme auth instructions [(#1121)](GoogleCloudPlatform/python-docs-samples#1121)

Change-Id: I03b5eaef8b17ac3dc3c0339fd2c7447bd3e11bd2

* Added Link to Python Setup Guide [(#1158)](GoogleCloudPlatform/python-docs-samples#1158)

* Update Readme.rst to add Python setup guide

As requested in b/64770713.

This sample is linked in documentation https://cloud.google.com/bigtable/docs/scaling, and it would make more sense to update the guide here than in the documentation.

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update install_deps.tmpl.rst

* Updated readmegen scripts and re-generated related README files

* Fixed the lint error

* Auto-update dependencies. [(#1138)](GoogleCloudPlatform/python-docs-samples#1138)

* Auto-update dependencies. [(#1186)](GoogleCloudPlatform/python-docs-samples#1186)

* Auto-update dependencies. [(#1245)](GoogleCloudPlatform/python-docs-samples#1245)

* Vision beta [(#1211)](GoogleCloudPlatform/python-docs-samples#1211)

* remove unicode [(#1246)](GoogleCloudPlatform/python-docs-samples#1246)

* Added "Open in Cloud Shell" buttons to README files [(#1254)](GoogleCloudPlatform/python-docs-samples#1254)

* Auto-update dependencies. [(#1282)](GoogleCloudPlatform/python-docs-samples#1282)

* Auto-update dependencies.

* Fix storage acl sample

Change-Id: I413bea899fdde4c4859e4070a9da25845b81f7cf

* Auto-update dependencies. [(#1320)](GoogleCloudPlatform/python-docs-samples#1320)

* Vision API features update [(#1339)](GoogleCloudPlatform/python-docs-samples#1339)

* Revert "Vision API features update [(#1339)](GoogleCloudPlatform/python-docs-samples#1339)" [(#1351)](GoogleCloudPlatform/python-docs-samples#1351)

This reverts commit fba66eec5b72a8313eb3fba0a6601306801b9212.

* Auto-update dependencies. [(#1377)](GoogleCloudPlatform/python-docs-samples#1377)

* Auto-update dependencies.

* Update requirements.txt

* fix landmark sample [(#1424)](GoogleCloudPlatform/python-docs-samples#1424)

* Vision GA [(#1427)](GoogleCloudPlatform/python-docs-samples#1427)

* replace types. with vision.types. in detect.py

* copy beta code snippets

* update tests, flake

* remove beta_snippets

* update command line interface to include web-geo samples

* flake

* simplify detect document text

* [DO NOT MERGE] Vision API OCR PDF/TIFF sample [(#1420)](GoogleCloudPlatform/python-docs-samples#1420)

* add docpdf sample

* import order

* list blobs

* filename change

* add the renamed files

* parse json string to AnnotateFileResponse message

* show more of the response

* simplify response processing to better focus on how to make the request

* fix typo

* linter

* linter

* linter

* Regenerate the README files and fix the Open in Cloud Shell link for some samples [(#1441)](GoogleCloudPlatform/python-docs-samples#1441)

* detect-pdf update [(#1460)](GoogleCloudPlatform/python-docs-samples#1460)

* detect-pdf update

* update test

* Update READMEs to fix numbering and add git clone [(#1464)](GoogleCloudPlatform/python-docs-samples#1464)

* Move ocr pdf/tiff samples to GA [(#1522)](GoogleCloudPlatform/python-docs-samples#1522)

* Move ocr pdf/tiff samples to GA

* Remove blank spaces and fragment

* Fix the vision geo test. [(#1518)](GoogleCloudPlatform/python-docs-samples#1518)

Sometimes, Vision sees Zepra.  Othertimes, it sees Electra Tower.

* [DO_NOT_MERGE] Add samples for object localization and handwritten ocr [(#1572)](GoogleCloudPlatform/python-docs-samples#1572)

* Add samples for object localization and handwritten ocr

* Update to released lib

* Update beta_snippets.py

* [DO NOT MERGE] Product search [(#1580)](GoogleCloudPlatform/python-docs-samples#1580)

Product search

* Update vision web_detect test image [(#1607)](GoogleCloudPlatform/python-docs-samples#1607)

The original image no longer appears on cloud.google.com/vision

* Vision - remove unused region tags [(#1620)](GoogleCloudPlatform/python-docs-samples#1620)

* Vision region tag update [(#1635)](GoogleCloudPlatform/python-docs-samples#1635)

* Udpate Beta Vision samples to use beta tags [(#1640)](GoogleCloudPlatform/python-docs-samples#1640)

* Update samples to GA, cleanup tests, delete old samples [(#1704)](GoogleCloudPlatform/python-docs-samples#1704)

* Add print output to crop hints tutorial [(#1797)](GoogleCloudPlatform/python-docs-samples#1797)

* Remove unused code [(#1745)](GoogleCloudPlatform/python-docs-samples#1745)

* Display the score/confidence value [(#1429)](GoogleCloudPlatform/python-docs-samples#1429)

* Display the score/confidence value

A small code addition to display the score/confidence value of a detected face above the face detection box on the output image. This is very useful to know the confidence!

* Changes applied to meet coding style requirements 

I have edited the already submitted code to meet the coding style requirements!

* Edits because white spaces

* Remove [(#1431)](GoogleCloudPlatform/python-docs-samples#1431)

I'm updating all the openapi files in the getting-started sample in all the sample repos to remove basePath: "/"
Here's the reason from simonz130:

From the OpenAPI 2 spec:
* basePath: "If it is not included, the API is served directly under the host. The value MUST start with a leading slash (/). "
* Paths for methods: "A relative path to an individual endpoint. The field name MUST begin with a slash. The path is appended to the basePath in order to construct the full URL."

This OpenAPI getting-started sample have basePath: "/", which (per strict spec interpretation) means all the paths start with double-slashes. (e.g "//v1/shelves" rather than "/v1/shelves"). Removing basepath="/" fixes that.

* Auto-update dependencies. [(#1846)](GoogleCloudPlatform/python-docs-samples#1846)

ACK, merging.

* update samples for product search GA [(#1861)](GoogleCloudPlatform/python-docs-samples#1861)

* update samples for product search GA

* update to use 0.35.1

* Use default font [(#1865)](GoogleCloudPlatform/python-docs-samples#1865)

Test environment does not support all fonts.

* use shared sample data bucket [(#1874)](GoogleCloudPlatform/python-docs-samples#1874)

* Pass max_results through to API - issue #1173 [(#1917)](GoogleCloudPlatform/python-docs-samples#1917)

* Fix Vision Product Search sample comment typo [(#1897)](GoogleCloudPlatform/python-docs-samples#1897)

* vision: update samples to address changes in model annotations. [(#1991)](GoogleCloudPlatform/python-docs-samples#1991)

changes to the vision model evaluation changed annotations for
some of the sample data used in these tests.  This corrects those
expectations to reflect current evaluation.

Background: internal issue 123358697

* Auto-update dependencies. [(#1980)](GoogleCloudPlatform/python-docs-samples#1980)

* Auto-update dependencies.

* Update requirements.txt

* Update requirements.txt

* Vision API: further fixes. [(#2002)](GoogleCloudPlatform/python-docs-samples#2002)

* Vision API: further fixes.

Redirects testing to the central cloud-samples-data asset bucket.
Relaxes case considerations.
Addresses web subtests, missed in previous PR.

* Added two samples for "OCR with PDF/TIFF as source files" [(#2034)](GoogleCloudPlatform/python-docs-samples#2034)

* Added two samples for "OCR with PDF/TIFF as source files"

* Moved the code to beta_snippets.py

* Fixed the sub-parser names.

* Shortened the line that was too long.

* Added newline at the end of the file

* Using the builtin open function instead

* Renamed a variable

* Fixed the wrong arg parameter

* Added extra comment lines

* Regenerated README.rst

* Added specific strings to be unit-tested

* Added the sample for async image batch annotation [(#2045)](GoogleCloudPlatform/python-docs-samples#2045)

* Added the sample for async image batch annotation

* Fixed the wrong function name

* Changes based on Noah's comments.

* Need newer library version for latest beta [(#2052)](GoogleCloudPlatform/python-docs-samples#2052)

* Fixed string in test [(#2135)](GoogleCloudPlatform/python-docs-samples#2135)

* Fixed string in test

* Updated to latest AutoML

* Update detect.py [(#2174)](GoogleCloudPlatform/python-docs-samples#2174)

1) I got argument parse error when bucket_name=bucket_name is given
2)blob_list[0] gave me folder name

* Revert "Update detect.py" [(#2274)](GoogleCloudPlatform/python-docs-samples#2274)

* Revert "Update detect.py [(#2174)](GoogleCloudPlatform/python-docs-samples#2174)"

This reverts commit 6eaad9a3166ab3262c1211c2f41fb4b5d8234b7d.

* Update beta_snippets_test.py

* Update beta_snippets.py

* Update detect.py

* Move import inside region tags [(#2211)](GoogleCloudPlatform/python-docs-samples#2211)

* Move import inside region tags

* Update detect.py

* Fix comment. [(#2108)](GoogleCloudPlatform/python-docs-samples#2108)

Comment should reflect real filename.

* Fix a typo in output message / remove duplicate parser assignment. [(#1999)](GoogleCloudPlatform/python-docs-samples#1999)

* Fix a typo in output message.

Fixes a minor typo error in the `draw_hint` function. Because the tutorial is one of the starting points for new users, it's worth correcting it to avoid confusion.

* Remove duplicate `argparse` assignment.

`argparse.ArgumentParser()` was assigned twice in if statement so removed the duplicate.

* move import re [(#2303)](GoogleCloudPlatform/python-docs-samples#2303)

* Makes quickstart more REPL friendly [(#2354)](GoogleCloudPlatform/python-docs-samples#2354)

* vision geo test fix [(#2353)](GoogleCloudPlatform/python-docs-samples#2353)

Gus already LGTM

* Purge products [(#2349)](GoogleCloudPlatform/python-docs-samples#2349)

* add vision_product_search_purge_products_in_product_set

* add vision_product_search_purge_orphan_products

* update comment

* flake

* update print message

* update python sample to use operation.result

* longer timeout

* remove unused variable

* Adds updates for samples profiler ... vision [(#2439)](GoogleCloudPlatform/python-docs-samples#2439)

* Update Pillow dependency per security alert CVE-2019-16865 [(#2492)](GoogleCloudPlatform/python-docs-samples#2492)

* Add Set Endpoint Samples [(#2497)](GoogleCloudPlatform/python-docs-samples#2497)

* Add Set Endpoint Samples

* Add additional test result option

* Sample Request update

* Add filter_

* Auto-update dependencies. [(#2005)](GoogleCloudPlatform/python-docs-samples#2005)

* Auto-update dependencies.

* Revert update of appengine/flexible/datastore.

* revert update of appengine/flexible/scipy

* revert update of bigquery/bqml

* revert update of bigquery/cloud-client

* revert update of bigquery/datalab-migration

* revert update of bigtable/quickstart

* revert update of compute/api

* revert update of container_registry/container_analysis

* revert update of dataflow/run_template

* revert update of datastore/cloud-ndb

* revert update of dialogflow/cloud-client

* revert update of dlp

* revert update of functions/imagemagick

* revert update of functions/ocr/app

* revert update of healthcare/api-client/fhir

* revert update of iam/api-client

* revert update of iot/api-client/gcs_file_to_device

* revert update of iot/api-client/mqtt_example

* revert update of language/automl

* revert update of run/image-processing

* revert update of vision/automl

* revert update testing/requirements.txt

* revert update of vision/cloud-client/detect

* revert update of vision/cloud-client/product_search

* revert update of jobs/v2/api_client

* revert update of jobs/v3/api_client

* revert update of opencensus

* revert update of translate/cloud-client

* revert update to speech/cloud-client

Co-authored-by: Kurtis Van Gent <[email protected]>
Co-authored-by: Doug Mahugh <[email protected]>

* fix: get bounds for blocks instead of pages [(#2705)](GoogleCloudPlatform/python-docs-samples#2705)

* fix: use `page.bounding_box` when feature is page

Closes #2702

* fix: outline blocks instead of pages

Co-authored-by: Leah E. Cole <[email protected]>

* Add vision ocr set endpoint samples [(#2569)](GoogleCloudPlatform/python-docs-samples#2569)

* Add vision ocr set endpoint samples

* Remove port number as it is optional in Python

* Use unique output names

* lint

* Add support for python2 print statements

* use uuid instead of datetime

* remove all tests that use https as they perform duplicate work

Co-authored-by: Leah E. Cole <[email protected]>

* vision: update samples to throw errors if one occurs [(#2725)](GoogleCloudPlatform/python-docs-samples#2725)

* vision: update samples to throw errors if one occurs

* Add link to error page docs

* Add link to error message

Co-authored-by: Leah E. Cole <[email protected]>
Co-authored-by: Gus Class <[email protected]>

* vision: move published samples into master [(#2743)](GoogleCloudPlatform/python-docs-samples#2743)

Add generated samples for Vision API
Add required attribute mime_type
Resolve encoding error in py2
Remove autogenerated warnings
Remove coding: utf-8 line
Remove argument encoding checks
Remove CLI
Remove unnecessary statics, variables, and imports
Blacken with l=88
Remove unused region tag and comments
Verify that there are no published links pointing to removed region tags
Shorten docstring
Replace concrete file path with "path/to/your/document.pdf"

Co-authored-by: Yu-Han Liu <[email protected]>

* fix: vision product search tests to call setup and teardown and use uuid [(#2830)](GoogleCloudPlatform/python-docs-samples#2830)

* vision: fix flaky test [(#2988)](GoogleCloudPlatform/python-docs-samples#2988)

* vision: fix flaky tests to be more generic in the results [(#2915)](GoogleCloudPlatform/python-docs-samples#2915)

* chore(deps): update dependency google-cloud-storage to v1.26.0 [(#3046)](GoogleCloudPlatform/python-docs-samples#3046)

* chore(deps): update dependency google-cloud-storage to v1.26.0

* chore(deps): specify dependencies by python version

* chore: up other deps to try to remove errors

Co-authored-by: Leah E. Cole <[email protected]>
Co-authored-by: Leah Cole <[email protected]>

* Clarifying comment for batch requests [(#3071)](GoogleCloudPlatform/python-docs-samples#3071)

* Clarifying comment for batch requests

* vision: fixing linter for batch

* vision: remove redundant flaky web test [(#3090)](GoogleCloudPlatform/python-docs-samples#3090)

Fix: GoogleCloudPlatform/python-docs-samples#2880

* vision: fix flaky test [(#3091)](GoogleCloudPlatform/python-docs-samples#3091)

Fix: GoogleCloudPlatform/python-docs-samples#2876

* chore(deps): update dependency google-cloud-vision to v0.42.0 [(#3170)](GoogleCloudPlatform/python-docs-samples#3170)

* chore(deps): update dependency pillow to v6.2.2 [(#3186)](GoogleCloudPlatform/python-docs-samples#3186)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [pillow](https://python-pillow.org) ([source](https://togithub.com/python-pillow/Pillow)) | patch | `==6.2.1` -> `==6.2.2` |

---

### Release Notes

<details>
<summary>python-pillow/Pillow</summary>

### [`v6.2.2`](https://togithub.com/python-pillow/Pillow/blob/master/CHANGES.rst#&#8203;622-2020-01-02)

[Compare Source](https://togithub.com/python-pillow/Pillow/compare/6.2.1...6.2.2)

-   This is the last Pillow release to support Python 2.7 [#&#8203;3642](https://togithub.com/python-pillow/Pillow/issues/3642)

-   Overflow checks for realloc for tiff decoding. CVE-2020-5310
    [wiredfool, radarhere]

-   Catch SGI buffer overrun. CVE-2020-5311
    [radarhere]

-   Catch PCX P mode buffer overrun. CVE-2020-5312
    [radarhere]

-   Catch FLI buffer overrun. CVE-2020-5313
    [radarhere]

-   Raise an error for an invalid number of bands in FPX image. CVE-2019-19911
    [wiredfool, radarhere]

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#GoogleCloudPlatform/python-docs-samples).

* chore(deps): update dependency pillow to v7 [(#3218)](GoogleCloudPlatform/python-docs-samples#3218)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [pillow](https://python-pillow.org) ([source](https://togithub.com/python-pillow/Pillow)) | major | `==6.2.2` -> `==7.1.0` |

---

### Release Notes

<details>
<summary>python-pillow/Pillow</summary>

### [`v7.1.0`](https://togithub.com/python-pillow/Pillow/blob/master/CHANGES.rst#&#8203;710-2020-04-01)

[Compare Source](https://togithub.com/python-pillow/Pillow/compare/7.0.0...7.1.0)

-   Fix multiple OOB reads in FLI decoding [#&#8203;4503](https://togithub.com/python-pillow/Pillow/issues/4503)
    [wiredfool]

-   Fix buffer overflow in SGI-RLE decoding [#&#8203;4504](https://togithub.com/python-pillow/Pillow/issues/4504)
    [wiredfool, hugovk]

-   Fix bounds overflow in JPEG 2000 decoding [#&#8203;4505](https://togithub.com/python-pillow/Pillow/issues/4505)
    [wiredfool]

-   Fix bounds overflow in PCX decoding [#&#8203;4506](https://togithub.com/python-pillow/Pillow/issues/4506)
    [wiredfool]

-   Fix 2 buffer overflows in TIFF decoding [#&#8203;4507](https://togithub.com/python-pillow/Pillow/issues/4507)
    [wiredfool]

-   Add APNG support [#&#8203;4243](https://togithub.com/python-pillow/Pillow/issues/4243)
    [pmrowla, radarhere, hugovk]

-   ImageGrab.grab() for Linux with XCB [#&#8203;4260](https://togithub.com/python-pillow/Pillow/issues/4260)
    [nulano, radarhere]

-   Added three new channel operations [#&#8203;4230](https://togithub.com/python-pillow/Pillow/issues/4230)
    [dwastberg, radarhere]

-   Prevent masking of Image reduce method in Jpeg2KImagePlugin [#&#8203;4474](https://togithub.com/python-pillow/Pillow/issues/4474)
    [radarhere, homm]

-   Added reading of earlier ImageMagick PNG EXIF data [#&#8203;4471](https://togithub.com/python-pillow/Pillow/issues/4471)
    [radarhere]

-   Fixed endian handling for I;16 getextrema [#&#8203;4457](https://togithub.com/python-pillow/Pillow/issues/4457)
    [radarhere]

-   Release buffer if function returns prematurely [#&#8203;4381](https://togithub.com/python-pillow/Pillow/issues/4381)
    [radarhere]

-   Add JPEG comment to info dictionary [#&#8203;4455](https://togithub.com/python-pillow/Pillow/issues/4455)
    [radarhere]

-   Fix size calculation of Image.thumbnail() [#&#8203;4404](https://togithub.com/python-pillow/Pillow/issues/4404)
    [orlnub123]

-   Fixed stroke on FreeType &lt; 2.9 [#&#8203;4401](https://togithub.com/python-pillow/Pillow/issues/4401)
    [radarhere]

-   If present, only use alpha channel for bounding box [#&#8203;4454](https://togithub.com/python-pillow/Pillow/issues/4454)
    [radarhere]

-   Warn if an unknown feature is passed to features.check() [#&#8203;4438](https://togithub.com/python-pillow/Pillow/issues/4438)
    [jdufresne]

-   Fix Name field length when saving IM images [#&#8203;4424](https://togithub.com/python-pillow/Pillow/issues/4424)
    [hugovk, radarhere]

-   Allow saving of zero quality JPEG images [#&#8203;4440](https://togithub.com/python-pillow/Pillow/issues/4440)
    [radarhere]

-   Allow explicit zero width to hide outline [#&#8203;4334](https://togithub.com/python-pillow/Pillow/issues/4334)
    [radarhere]

-   Change ContainerIO return type to match file object mode [#&#8203;4297](https://togithub.com/python-pillow/Pillow/issues/4297)
    [jdufresne, radarhere]

-   Only draw each polygon pixel once [#&#8203;4333](https://togithub.com/python-pillow/Pillow/issues/4333)
    [radarhere]

-   Add support for shooting situation Exif IFD tags [#&#8203;4398](https://togithub.com/python-pillow/Pillow/issues/4398)
    [alexagv]

-   Handle multiple and malformed JPEG APP13 markers [#&#8203;4370](https://togithub.com/python-pillow/Pillow/issues/4370)
    [homm]

-   Depends: Update libwebp to 1.1.0 [#&#8203;4342](https://togithub.com/python-pillow/Pillow/issues/4342), libjpeg to 9d [#&#8203;4352](https://togithub.com/python-pillow/Pillow/issues/4352)
    [radarhere]

### [`v7.0.0`](https://togithub.com/python-pillow/Pillow/blob/master/CHANGES.rst#&#8203;700-2020-01-02)

[Compare Source](https://togithub.com/python-pillow/Pillow/compare/6.2.2...7.0.0)

-   Drop support for EOL Python 2.7 [#&#8203;4109](https://togithub.com/python-pillow/Pillow/issues/4109)
    [hugovk, radarhere, jdufresne]

-   Fix rounding error on RGB to L conversion [#&#8203;4320](https://togithub.com/python-pillow/Pillow/issues/4320)
    [homm]

-   Exif writing fixes: Rational boundaries and signed/unsigned types [#&#8203;3980](https://togithub.com/python-pillow/Pillow/issues/3980)
    [kkopachev, radarhere]

-   Allow loading of WMF images at a given DPI [#&#8203;4311](https://togithub.com/python-pillow/Pillow/issues/4311)
    [radarhere]

-   Added reduce operation [#&#8203;4251](https://togithub.com/python-pillow/Pillow/issues/4251)
    [homm]

-   Raise ValueError for io.StringIO in Image.open [#&#8203;4302](https://togithub.com/python-pillow/Pillow/issues/4302)
    [radarhere, hugovk]

-   Fix thumbnail geometry when DCT scaling is used [#&#8203;4231](https://togithub.com/python-pillow/Pillow/issues/4231)
    [homm, radarhere]

-   Use default DPI when exif provides invalid x_resolution [#&#8203;4147](https://togithub.com/python-pillow/Pillow/issues/4147)
    [beipang2, radarhere]

-   Change default resize resampling filter from NEAREST to BICUBIC [#&#8203;4255](https://togithub.com/python-pillow/Pillow/issues/4255)
    [homm]

-   Fixed black lines on upscaled images with the BOX filter [#&#8203;4278](https://togithub.com/python-pillow/Pillow/issues/4278)
    [homm]

-   Better thumbnail aspect ratio preservation [#&#8203;4256](https://togithub.com/python-pillow/Pillow/issues/4256)
    [homm]

-   Add La mode packing and unpacking [#&#8203;4248](https://togithub.com/python-pillow/Pillow/issues/4248)
    [homm]

-   Include tests in coverage reports [#&#8203;4173](https://togithub.com/python-pillow/Pillow/issues/4173)
    [hugovk]

-   Handle broken Photoshop data [#&#8203;4239](https://togithub.com/python-pillow/Pillow/issues/4239)
    [radarhere]

-   Raise a specific exception if no data is found for an MPO frame [#&#8203;4240](https://togithub.com/python-pillow/Pillow/issues/4240)
    [radarhere]

-   Fix Unicode support for PyPy [#&#8203;4145](https://togithub.com/python-pillow/Pillow/issues/4145)
    [nulano]

-   Added UnidentifiedImageError [#&#8203;4182](https://togithub.com/python-pillow/Pillow/issues/4182)
    [radarhere, hugovk]

-   Remove deprecated **version** from plugins [#&#8203;4197](https://togithub.com/python-pillow/Pillow/issues/4197)
    [hugovk, radarhere]

-   Fixed freeing unallocated pointer when resizing with height too large [#&#8203;4116](https://togithub.com/python-pillow/Pillow/issues/4116)
    [radarhere]

-   Copy info in Image.transform [#&#8203;4128](https://togithub.com/python-pillow/Pillow/issues/4128)
    [radarhere]

-   Corrected DdsImagePlugin setting info gamma [#&#8203;4171](https://togithub.com/python-pillow/Pillow/issues/4171)
    [radarhere]

-   Depends: Update libtiff to 4.1.0 [#&#8203;4195](https://togithub.com/python-pillow/Pillow/issues/4195), Tk Tcl to 8.6.10 [#&#8203;4229](https://togithub.com/python-pillow/Pillow/issues/4229), libimagequant to 2.12.6 [#&#8203;4318](https://togithub.com/python-pillow/Pillow/issues/4318)
    [radarhere]

-   Improve handling of file resources [#&#8203;3577](https://togithub.com/python-pillow/Pillow/issues/3577)
    [jdufresne]

-   Removed CI testing of Fedora 29 [#&#8203;4165](https://togithub.com/python-pillow/Pillow/issues/4165)
    [hugovk]

-   Added pypy3 to tox envlist [#&#8203;4137](https://togithub.com/python-pillow/Pillow/issues/4137)
    [jdufresne]

-   Drop support for EOL PyQt4 and PySide [#&#8203;4108](https://togithub.com/python-pillow/Pillow/issues/4108)
    [hugovk, radarhere]

-   Removed deprecated setting of TIFF image sizes [#&#8203;4114](https://togithub.com/python-pillow/Pillow/issues/4114)
    [radarhere]

-   Removed deprecated PILLOW_VERSION [#&#8203;4107](https://togithub.com/python-pillow/Pillow/issues/4107)
    [hugovk]

-   Changed default frombuffer raw decoder args [#&#8203;1730](https://togithub.com/python-pillow/Pillow/issues/1730)
    [radarhere]

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#GoogleCloudPlatform/python-docs-samples).

* Simplify noxfile setup. [(#2806)](GoogleCloudPlatform/python-docs-samples#2806)

* chore(deps): update dependency requests to v2.23.0

* Simplify noxfile and add version control.

* Configure appengine/standard to only test Python 2.7.

* Update Kokokro configs to match noxfile.

* Add requirements-test to each folder.

* Remove Py2 versions from everything execept appengine/standard.

* Remove conftest.py.

* Remove appengine/standard/conftest.py

* Remove 'no-sucess-flaky-report' from pytest.ini.

* Add GAE SDK back to appengine/standard tests.

* Fix typo.

* Roll pytest to python 2 version.

* Add a bunch of testing requirements.

* Remove typo.

* Add appengine lib directory back in.

* Add some additional requirements.

* Fix issue with flake8 args.

* Even more requirements.

* Readd appengine conftest.py.

* Add a few more requirements.

* Even more Appengine requirements.

* Add webtest for appengine/standard/mailgun.

* Add some additional requirements.

* Add workaround for issue with mailjet-rest.

* Add responses for appengine/standard/mailjet.

Co-authored-by: Renovate Bot <[email protected]>

* Update dependency google-cloud-vision to v1 [(#3227)](GoogleCloudPlatform/python-docs-samples#3227)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [google-cloud-vision](https://togithub.com/googleapis/python-vision) | major | `==0.42.0` -> `==1.0.0` |

---

### Release Notes

<details>
<summary>googleapis/python-vision</summary>

### [`v1.0.0`](https://togithub.com/googleapis/python-vision/blob/master/CHANGELOG.md#&#8203;100-httpswwwgithubcomgoogleapispython-visioncomparev0420v100-2020-02-28)

[Compare Source](https://togithub.com/googleapis/python-vision/compare/v0.42.0...v1.0.0)

##### Features

-   bump release status to GA ([#&#8203;11](https://www.github.com/googleapis/python-vision/issues/11)) ([2129bde](https://www.github.com/googleapis/python-vision/commit/2129bdedfa0dca85c5adc5350bff10d4a485df77))

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#GoogleCloudPlatform/python-docs-samples).

* Update dependency pillow to v7.1.1 [(#3263)](GoogleCloudPlatform/python-docs-samples#3263)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [pillow](https://python-pillow.org) ([source](https://togithub.com/python-pillow/Pillow)) | patch | `==7.1.0` -> `==7.1.1` |

---

### Release Notes

<details>
<summary>python-pillow/Pillow</summary>

### [`v7.1.1`](https://togithub.com/python-pillow/Pillow/blob/master/CHANGES.rst#&#8203;711-2020-04-02)

[Compare Source](https://togithub.com/python-pillow/Pillow/compare/7.1.0...7.1.1)

-   Fix regression seeking and telling PNGs [#&#8203;4512](https://togithub.com/python-pillow/Pillow/issues/4512) [#&#8203;4514](https://togithub.com/python-pillow/Pillow/issues/4514)
    [hugovk, radarhere]

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#GoogleCloudPlatform/python-docs-samples).

* vision: increase timeout for tests [(#3383)](GoogleCloudPlatform/python-docs-samples#3383)

Fix: GoogleCloudPlatform/python-docs-samples#2955
Fix: GoogleCloudPlatform/python-docs-samples#2992

* [vision] fix: longer timeout [(#3447)](GoogleCloudPlatform/python-docs-samples#3447)

fixes #2962

* testing: replace @flaky with @pytest.mark.flaky [(#3496)](GoogleCloudPlatform/python-docs-samples#3496)

* testing: replace @flaky with @pytest.mark.flaky

* lint

* mark few tests as flaky

that involves LRO polling.

* lint

* chore(deps): update dependency pillow to v7.1.2 [(#3557)](GoogleCloudPlatform/python-docs-samples#3557)

* chore(deps): update dependency google-cloud-storage to v1.28.0 [(#3260)](GoogleCloudPlatform/python-docs-samples#3260)

Co-authored-by: Takashi Matsuo <[email protected]>

* [vision] fix: add timeout for LRO result and mark it as flaky [(#3684)](GoogleCloudPlatform/python-docs-samples#3684)

fixes #3674

* [vision] fix: mark a test as flaky [(#3709)](GoogleCloudPlatform/python-docs-samples#3709)

fixes #3702

* chore: some lint fixes [(#3751)](GoogleCloudPlatform/python-docs-samples#3751)

* chore: some lint fixes

* longer timeout, more retries

* disable detect_test.py::test_async_detect_document

* [vision] testing: retry upon errors [(#3764)](GoogleCloudPlatform/python-docs-samples#3764)

fixes #3734

I only wrapped some of the tests. Potentially we can do it for
everything.

* [vision] testing: re-enable test_async_detect_document [(#3761)](GoogleCloudPlatform/python-docs-samples#3761)

fixes #3753

also made the data PDF to be smaller.

* chore(deps): update dependency google-cloud-storage to v1.28.1 [(#3785)](GoogleCloudPlatform/python-docs-samples#3785)

* chore(deps): update dependency google-cloud-storage to v1.28.1

* [asset] testing: use uuid instead of time

Co-authored-by: Takashi Matsuo <[email protected]>

* Replace GCLOUD_PROJECT with GOOGLE_CLOUD_PROJECT. [(#4022)](GoogleCloudPlatform/python-docs-samples#4022)

* chore(deps): update dependency google-cloud-storage to v1.29.0 [(#4040)](GoogleCloudPlatform/python-docs-samples#4040)

* chore(deps): update dependency pillow to v7.2.0 [(#4208)](GoogleCloudPlatform/python-docs-samples#4208)

* testing(vision): use different ids for test functions [(#4227)](GoogleCloudPlatform/python-docs-samples#4227)

fixes #4224

* chore(deps): update dependency pytest to v5.4.3 [(#4279)](GoogleCloudPlatform/python-docs-samples#4279)

* chore(deps): update dependency pytest to v5.4.3

* specify pytest for python 2 in appengine

Co-authored-by: Leah Cole <[email protected]>

* Update dependency flaky to v3.7.0 [(#4300)](GoogleCloudPlatform/python-docs-samples#4300)

* Update dependency google-cloud-storage to v1.30.0

* Update dependency pytest to v6 [(#4390)](GoogleCloudPlatform/python-docs-samples#4390)

* feat: fixed doc string comment mismatch in Product Search [(#4432)](GoogleCloudPlatform/python-docs-samples#4432)

Changes documentation string for a GCS example from `file_path` to `image_uri`.

* chore(deps): update dependency google-cloud-storage to v1.31.0 [(#4564)](GoogleCloudPlatform/python-docs-samples#4564)

Co-authored-by: Takashi Matsuo <[email protected]>

* chore: update templates

Co-authored-by: Jason Dobry <[email protected]>
Co-authored-by: Jon Wayne Parrott <[email protected]>
Co-authored-by: DPE bot <[email protected]>
Co-authored-by: Gus Class <[email protected]>
Co-authored-by: Brent Shaffer <[email protected]>
Co-authored-by: Bill Prin <[email protected]>
Co-authored-by: Yu-Han Liu <[email protected]>
Co-authored-by: michaelawyu <[email protected]>
Co-authored-by: Rebecca Taylor <[email protected]>
Co-authored-by: Frank Natividad <[email protected]>
Co-authored-by: Noah Negrey <[email protected]>
Co-authored-by: Jeffrey Rennie <[email protected]>
Co-authored-by: Tim Swast <[email protected]>
Co-authored-by: Alix Hamilton <[email protected]>
Co-authored-by: Rebecca Taylor <[email protected]>
Co-authored-by: Krissda Prakalphakul <[email protected]>
Co-authored-by: Peshmerge <[email protected]>
Co-authored-by: navinger <[email protected]>
Co-authored-by: Charles Engelke <[email protected]>
Co-authored-by: shollyman <[email protected]>
Co-authored-by: Shahin <[email protected]>
Co-authored-by: Charles Engelke <[email protected]>
Co-authored-by: Agnel Vishal <[email protected]>
Co-authored-by: Grega Kespret <[email protected]>
Co-authored-by: Da-Woon Chung <[email protected]>
Co-authored-by: Yu-Han Liu <[email protected]>
Co-authored-by: Torry Yang <[email protected]>
Co-authored-by: Kurtis Van Gent <[email protected]>
Co-authored-by: Doug Mahugh <[email protected]>
Co-authored-by: Bu Sun Kim <[email protected]>
Co-authored-by: Leah E. Cole <[email protected]>
Co-authored-by: Michelle Casbon <[email protected]>
Co-authored-by: WhiteSource Renovate <[email protected]>
Co-authored-by: Leah Cole <[email protected]>
Co-authored-by: Cameron Zahedi <[email protected]>
Co-authored-by: Takashi Matsuo <[email protected]>
Co-authored-by: Eric Schmidt <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: bigtable Issues related to the Bigtable API.
Projects
None yet
Development

No branches or pull requests