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

feat!: migrate to v2.0.0 #147

Merged
merged 99 commits into from Nov 11, 2020
Merged
Show file tree
Hide file tree
Changes from 93 commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
abb2281
chore: remove old generated files
larkee Aug 25, 2020
b660ddb
chore: remove type files
larkee Aug 25, 2020
5114db3
refactor: move handwritten files to google/cloud/spanner
larkee Aug 26, 2020
cdf9795
chore: update synth.py
larkee Aug 26, 2020
ef6835b
chore: regen library via microgenerator
larkee Aug 26, 2020
848d576
fix: update imports to use new files
larkee Aug 26, 2020
936efd3
fix: update _helper.py
larkee Aug 28, 2020
2969885
update backup.py
larkee Aug 28, 2020
419ab72
fix: update batch.py
larkee Aug 28, 2020
cc32144
fix: update param_types.py
larkee Aug 28, 2020
9109bb0
fix: update pool.py
larkee Aug 28, 2020
47df3d7
test: update test_keyset.py
larkee Aug 28, 2020
f1db0cc
test: update test__opentelemetry_tracing.py
larkee Aug 28, 2020
2ab6b3b
fix: update client.py
larkee Sep 11, 2020
2f77e43
test: update test_client.py
larkee Sep 11, 2020
eea1b8f
fix: update database.py
larkee Sep 11, 2020
3a08a9a
test: update test_database.py
larkee Sep 11, 2020
e111612
fix: update commmit call missing kwarg
larkee Sep 11, 2020
241d71a
test: update test_session.py
larkee Sep 11, 2020
8cdbe3d
fix: update streamed.py
larkee Sep 14, 2020
8335288
test: update TestStreamedResultSet tests in streamed.py
larkee Sep 14, 2020
979a6d8
fix: update instance.py
larkee Sep 14, 2020
67b2498
test: update test_instance.py
larkee Sep 14, 2020
44b658a
fix: add _parse_value method to _helper.py
larkee Sep 14, 2020
bb36c79
test: update test/_helper.py
larkee Sep 14, 2020
ff42abd
fix: update transaction.py and test_transaction.py
larkee Sep 14, 2020
b8bd42b
fix: remove creating list_value_pb
larkee Sep 14, 2020
68677ed
fix: update snapshot.py and test_snapshot.py
larkee Sep 14, 2020
606258b
fix: update setup.py
larkee Sep 14, 2020
0c49604
fix: use struct pb for partition_query
larkee Sep 15, 2020
e19d072
fix: support merging RepeatedComposite objects
larkee Sep 16, 2020
e3a2b5f
fix: replace dict with Statements
larkee Sep 16, 2020
1ee13ef
fix: replace dict with Statements
larkee Sep 16, 2020
3b4658d
lint: format code
larkee Sep 16, 2020
c4089ba
fix: update synth.py
larkee Sep 17, 2020
db6bdde
chore: regen with gapic-generator v0.33.4
larkee Sep 22, 2020
e1a2ee4
test: increase test coverage
larkee Sep 23, 2020
337bdc1
fix: use backup pb instead of dict
larkee Sep 23, 2020
a234605
fix: update api calls to use supported kwargs
larkee Sep 23, 2020
b09235d
fix: update api calls to use supported kwargs and remove unused function
larkee Sep 23, 2020
0e91e39
test: update system tests
larkee Sep 23, 2020
66b461a
test: add tests for _parse_value function
larkee Sep 23, 2020
df46d22
test: update empty list Value to correctly reflect the format
larkee Sep 24, 2020
70cd659
refactor: use _parse_value in _parse_value_pb
larkee Sep 24, 2020
473ee33
refactor: remove unneeded wrapper classes
larkee Sep 24, 2020
b1c5c03
fix: use default retry (see golang) as ExecuteStreamingSql does not d…
larkee Sep 24, 2020
0a20a9d
refactor: remove unneeded wrapper class
larkee Sep 24, 2020
6e5543f
fix: use pb for params kwargs
larkee Sep 24, 2020
fed07cb
test: increase coverage
larkee Sep 24, 2020
fc51e9a
test: correctly assert UNKNOWN error
larkee Sep 24, 2020
19b67ea
chore: remove unneeded replacesments and regen with gapic-generator v…
larkee Sep 24, 2020
c9a558a
fix: update kwarg to type_
larkee Sep 24, 2020
d0490e3
refactor: remove unused imports
larkee Sep 24, 2020
17b51be
refactor: remove unused imports
larkee Sep 24, 2020
c58aa1f
fix: update kwarg to all_
larkee Sep 24, 2020
4f83697
fix: update kwarg to type_
larkee Sep 24, 2020
2bdf0d6
fix: update kwarg and attribute to type_
larkee Sep 24, 2020
f24f53f
fix: update kwarg to type_
larkee Sep 24, 2020
83f2ffd
test: fix test name
larkee Sep 24, 2020
646d285
style: format code
larkee Sep 24, 2020
49b6b01
fix: update kwarg to type_
larkee Sep 24, 2020
e032c4b
fix: update api calls
larkee Sep 24, 2020
70ceef0
test: update param types to use param_types types
larkee Sep 24, 2020
eb095de
test: update numeric tests
larkee Sep 24, 2020
1536ab2
test: remove unused variable
larkee Sep 24, 2020
c0b8cae
refactor: remove unused import
larkee Sep 24, 2020
91dc82b
docs: update doc references
larkee Sep 25, 2020
b2452b1
test: increase test coverage
larkee Sep 28, 2020
122f6fc
chore: test with and without opentelemetry for full test coverage
larkee Sep 28, 2020
2a4ab0c
chore: regen samples README
larkee Oct 2, 2020
b1a4e56
fix: update emulator Github action
larkee Oct 2, 2020
ae4de3e
docs: manually fix typo that breaks docs
larkee Oct 8, 2020
af63a6c
docs: remove unsupported markdown and point to link with removed info
larkee Oct 8, 2020
83a6a97
docs: fix broken hyperlink
larkee Oct 8, 2020
d8f6848
chore: add replacement for docs formatting issue
larkee Oct 8, 2020
a84d054
chore: regen library (via synth)
larkee Oct 8, 2020
1a78dd6
chore: exclude noxfile.py from being generated
larkee Oct 8, 2020
739c458
refator: move handwritten files back into google/cloud/spanner_v1
larkee Oct 12, 2020
b715807
style: fix lint
larkee Oct 12, 2020
25dcf82
fix: update sample to use correct type
larkee Oct 15, 2020
3be1d2a
fix: create alias for proto types
larkee Oct 15, 2020
b4123f6
fix: update imports
larkee Oct 22, 2020
456a4ac
test: update test to use proto-plus structures
larkee Oct 22, 2020
2c3eed0
ci: update python version for emulator tests
larkee Oct 22, 2020
6518f62
fix: update backup pagination example
larkee Oct 26, 2020
8471be9
test: revert test_keyset for coverage
larkee Oct 26, 2020
50168d2
test: fix expected ranges
larkee Oct 26, 2020
b220311
fix: ignore google/cloud/spanner_v1/__init__.py for regen
larkee Oct 26, 2020
0c5fa5a
chore: regen (via synth)
larkee Oct 26, 2020
1482435
docs: revert import changes
larkee Nov 3, 2020
bf06add
refactor: address comments
larkee Nov 3, 2020
3e14363
docs: add UPDATING guide
larkee Nov 5, 2020
82f83f2
refactor: revert imports
larkee Nov 5, 2020
f7d859a
feat: remove deprecated arguments
larkee Nov 6, 2020
eb44c0a
docs: update guide to mention deprecated arguments
larkee Nov 6, 2020
0874d1e
test: lower required coverage to 99%
larkee Nov 6, 2020
21a2fa9
test: remove deprecated options
larkee Nov 9, 2020
856f17a
style: fix lint error
larkee Nov 9, 2020
2676c39
Update UPGRADING.md
larkee Nov 9, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
File renamed without changes.
4 changes: 2 additions & 2 deletions .github/workflows/integration-tests-against-emulator.yaml
Expand Up @@ -21,11 +21,11 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.7
python-version: 3.8
- name: Install nox
run: python -m pip install nox
- name: Run system tests
run: nox -s system-3.7
run: nox -s system
env:
SPANNER_EMULATOR_HOST: localhost:9010
GOOGLE_CLOUD_PROJECT: emulator-test-project
Expand Down
2 changes: 1 addition & 1 deletion .kokoro/docker/docs/Dockerfile
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from ubuntu:20.10
from ubuntu:20.04

ENV DEBIAN_FRONTEND noninteractive

Expand Down
2 changes: 1 addition & 1 deletion .kokoro/docs/common.cfg
Expand Up @@ -30,7 +30,7 @@ env_vars: {

env_vars: {
key: "V2_STAGING_BUCKET"
value: "docs-staging-v2-staging"
value: "docs-staging-v2"
}

# It will upload the docker image after successful builds.
Expand Down
43 changes: 43 additions & 0 deletions .kokoro/populate-secrets.sh
@@ -0,0 +1,43 @@
#!/bin/bash
# Copyright 2020 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.

set -eo pipefail

function now { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n' ;}
function msg { println "$*" >&2 ;}
function println { printf '%s\n' "$(now) $*" ;}


# Populates requested secrets set in SECRET_MANAGER_KEYS from service account:
# kokoro-trampoline@cloud-devrel-kokoro-resources.iam.gserviceaccount.com
SECRET_LOCATION="${KOKORO_GFILE_DIR}/secret_manager"
msg "Creating folder on disk for secrets: ${SECRET_LOCATION}"
mkdir -p ${SECRET_LOCATION}
for key in $(echo ${SECRET_MANAGER_KEYS} | sed "s/,/ /g")
do
msg "Retrieving secret ${key}"
docker run --entrypoint=gcloud \
--volume=${KOKORO_GFILE_DIR}:${KOKORO_GFILE_DIR} \
gcr.io/google.com/cloudsdktool/cloud-sdk \
secrets versions access latest \
--project cloud-devrel-kokoro-resources \
--secret ${key} > \
"${SECRET_LOCATION}/${key}"
if [[ $? == 0 ]]; then
msg "Secret written to ${SECRET_LOCATION}/${key}"
else
msg "Error retrieving secret ${key}"
fi
done
50 changes: 13 additions & 37 deletions .kokoro/release/common.cfg
Expand Up @@ -23,42 +23,18 @@ env_vars: {
value: "github/python-spanner/.kokoro/release.sh"
}

# Fetch the token needed for reporting release status to GitHub
before_action {
fetch_keystore {
keystore_resource {
keystore_config_id: 73713
keyname: "yoshi-automation-github-key"
}
}
}

# Fetch PyPI password
before_action {
fetch_keystore {
keystore_resource {
keystore_config_id: 73713
keyname: "google_cloud_pypi_password"
}
}
}

# Fetch magictoken to use with Magic Github Proxy
before_action {
fetch_keystore {
keystore_resource {
keystore_config_id: 73713
keyname: "releasetool-magictoken"
}
}
# Fetch PyPI password
before_action {
fetch_keystore {
keystore_resource {
keystore_config_id: 73713
keyname: "google_cloud_pypi_password"
}
}
}

# Fetch api key to use with Magic Github Proxy
before_action {
fetch_keystore {
keystore_resource {
keystore_config_id: 73713
keyname: "magic-github-proxy-api-key"
}
}
}
# Tokens needed to report release status back to GitHub
env_vars: {
key: "SECRET_MANAGER_KEYS"
value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem"
}
6 changes: 6 additions & 0 deletions .kokoro/samples/python3.6/common.cfg
Expand Up @@ -13,6 +13,12 @@ env_vars: {
value: "py-3.6"
}

# Declare build specific Cloud project.
env_vars: {
key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
value: "python-docs-samples-tests-py36"
}

env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
value: "github/python-spanner/.kokoro/test-samples.sh"
Expand Down
6 changes: 6 additions & 0 deletions .kokoro/samples/python3.7/common.cfg
Expand Up @@ -13,6 +13,12 @@ env_vars: {
value: "py-3.7"
}

# Declare build specific Cloud project.
env_vars: {
key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
value: "python-docs-samples-tests-py37"
}

env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
value: "github/python-spanner/.kokoro/test-samples.sh"
Expand Down
6 changes: 6 additions & 0 deletions .kokoro/samples/python3.8/common.cfg
Expand Up @@ -13,6 +13,12 @@ env_vars: {
value: "py-3.8"
}

# Declare build specific Cloud project.
env_vars: {
key: "BUILD_SPECIFIC_GCLOUD_PROJECT"
value: "python-docs-samples-tests-py38"
}

env_vars: {
key: "TRAMPOLINE_BUILD_FILE"
value: "github/python-spanner/.kokoro/test-samples.sh"
Expand Down
8 changes: 7 additions & 1 deletion .kokoro/test-samples.sh
Expand Up @@ -28,6 +28,12 @@ if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = *"periodic"* ]]; then
git checkout $LATEST_RELEASE
fi

# Exit early if samples directory doesn't exist
if [ ! -d "./samples" ]; then
echo "No tests run. `./samples` not found"
exit 0
fi

# Disable buffering, so that the logs stream through.
export PYTHONUNBUFFERED=1

Expand Down Expand Up @@ -101,4 +107,4 @@ cd "$ROOT"
# Workaround for Kokoro permissions issue: delete secrets
rm testing/{test-env.sh,client-secrets.json,service-account.json}

exit "$RTN"
exit "$RTN"
15 changes: 10 additions & 5 deletions .kokoro/trampoline.sh
Expand Up @@ -15,9 +15,14 @@

set -eo pipefail

python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py" || ret_code=$?
# Always run the cleanup script, regardless of the success of bouncing into
# the container.
function cleanup() {
chmod +x ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh
${KOKORO_GFILE_DIR}/trampoline_cleanup.sh
echo "cleanup";
}
trap cleanup EXIT

chmod +x ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh
${KOKORO_GFILE_DIR}/trampoline_cleanup.sh || true

exit ${ret_code}
$(dirname $0)/populate-secrets.sh # Secret Manager secrets.
python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py"
123 changes: 87 additions & 36 deletions CODE_OF_CONDUCT.md
@@ -1,44 +1,95 @@
<!-- # Generated by synthtool. DO NOT EDIT! !-->
# Contributor Code of Conduct
# Code of Conduct

As contributors and maintainers of this project,
and in the interest of fostering an open and welcoming community,
we pledge to respect all people who contribute through reporting issues,
posting feature requests, updating documentation,
submitting pull requests or patches, and other activities.
## Our Pledge

We are committed to making participation in this project
a harassment-free experience for everyone,
regardless of level of experience, gender, gender identity and expression,
sexual orientation, disability, personal appearance,
body size, race, ethnicity, age, religion, or nationality.
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of
experience, education, socio-economic status, nationality, personal appearance,
race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information,
such as physical or electronic
addresses, without explicit permission
* Other unethical or unprofessional conduct.
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct.
By adopting this Code of Conduct,
project maintainers commit themselves to fairly and consistently
applying these principles to every aspect of managing this project.
Project maintainers who do not follow or enforce the Code of Conduct
may be permanently removed from the project team.

This code of conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community.

Instances of abusive, harassing, or otherwise unacceptable behavior
may be reported by opening an issue
or contacting one or more of the project maintainers.

This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, or to ban temporarily or permanently any
contributor for other behaviors that they deem inappropriate, threatening,
offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

This Code of Conduct also applies outside the project spaces when the Project
Steward has a reasonable belief that an individual's behavior may have a
negative impact on the project or its community.

## Conflict Resolution

We do not believe that all conflict is bad; healthy debate and disagreement
often yield positive results. However, it is never okay to be disrespectful or
to engage in behavior that violates the project’s code of conduct.

If you see someone violating the code of conduct, you are encouraged to address
the behavior directly with those involved. Many issues can be resolved quickly
and easily, and this gives people more control over the outcome of their
dispute. If you are unable to resolve the matter for any reason, or if the
behavior is threatening or harassing, report it. We are dedicated to providing
an environment where participants feel welcome and safe.


Reports should be directed to *googleapis-stewards@google.com*, the
Project Steward(s) for *Google Cloud Client Libraries*. It is the Project Steward’s duty to
receive and address reported violations of the code of conduct. They will then
work with a committee consisting of representatives from the Open Source
Programs Office and the Google Open Source Strategy team. If for any reason you
are uncomfortable reaching out to the Project Steward, please email
opensource@google.com.

We will investigate every complaint, but you may not receive a direct response.
We will use our discretion in determining when and how to follow up on reported
incidents, which may range from not taking action to permanent expulsion from
the project and project-sponsored spaces. We will notify the accused of the
report and provide them an opportunity to discuss it before any action is taken.
The identity of the reporter will be omitted from the details of the report
supplied to the accused. In potentially harmful situations, such as ongoing
harassment or threats to anyone's safety, we may take action without notice.

## Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 1.4,
available at
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
19 changes: 0 additions & 19 deletions CONTRIBUTING.rst
Expand Up @@ -80,25 +80,6 @@ We use `nox <https://nox.readthedocs.io/en/latest/>`__ to instrument our tests.

.. nox: https://pypi.org/project/nox/

Note on Editable Installs / Develop Mode
========================================

- As mentioned previously, using ``setuptools`` in `develop mode`_
or a ``pip`` `editable install`_ is not possible with this
library. This is because this library uses `namespace packages`_.
For context see `Issue #2316`_ and the relevant `PyPA issue`_.

Since ``editable`` / ``develop`` mode can't be used, packages
need to be installed directly. Hence your changes to the source
tree don't get incorporated into the **already installed**
package.

.. _namespace packages: https://www.python.org/dev/peps/pep-0420/
.. _Issue #2316: https://github.com/GoogleCloudPlatform/google-cloud-python/issues/2316
.. _PyPA issue: https://github.com/pypa/packaging-problems/issues/12
.. _develop mode: https://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode
.. _editable install: https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs

*****************************************
I'm getting weird errors... Can you help?
*****************************************
Expand Down
1 change: 0 additions & 1 deletion MANIFEST.in
Expand Up @@ -16,7 +16,6 @@

# Generated by synthtool. DO NOT EDIT!
include README.rst LICENSE
include google/cloud/spanner_v1/gapic/transports/spanner.grpc.config
recursive-include google *.json *.proto
recursive-include tests *
global-exclude *.py[co]
Expand Down