Skip to content

Commit

Permalink
fix: require python 3.7+ (#313)
Browse files Browse the repository at this point in the history
* chore(python): drop python 3.6

Source-Link: googleapis/synthtool@4f89b13
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:e7bb19d47c13839fe8c147e50e02e8b6cf5da8edd1af8b82208cd6f66cc2829c

* add api_description to .repo-metadata.json

* require python 3.7+ in setup.py

* remove python 3.6 sample configs

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou <partheniou@google.com>
  • Loading branch information
3 people authored Jul 7, 2022
1 parent 55d2896 commit 95fc188
Show file tree
Hide file tree
Showing 16 changed files with 99 additions and 136 deletions.
4 changes: 2 additions & 2 deletions packages/google-cloud-kms/.github/.OwlBot.lock.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
digest: sha256:b2dc5f80edcf5d4486c39068c9fa11f7f851d9568eea4dcba130f994ea9b5e97
# created: 2022-06-12T16:09:31.61859086Z
digest: sha256:e7bb19d47c13839fe8c147e50e02e8b6cf5da8edd1af8b82208cd6f66cc2829c
# created: 2022-07-05T18:31:20.838186805Z
2 changes: 1 addition & 1 deletion packages/google-cloud-kms/.github/workflows/unittest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python: ['3.6', '3.7', '3.8', '3.9', '3.10']
python: ['3.7', '3.8', '3.9', '3.10']
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down
40 changes: 0 additions & 40 deletions packages/google-cloud-kms/.kokoro/samples/python3.6/common.cfg

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

4 changes: 2 additions & 2 deletions packages/google-cloud-kms/.kokoro/test-samples-impl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export PYTHONUNBUFFERED=1
env | grep KOKORO

# Install nox
python3.6 -m pip install --upgrade --quiet nox
python3.9 -m pip install --upgrade --quiet nox

# Use secrets acessor service account to get secrets
if [[ -f "${KOKORO_GFILE_DIR}/secrets_viewer_service_account.json" ]]; then
Expand Down Expand Up @@ -76,7 +76,7 @@ for file in samples/**/requirements.txt; do
echo "------------------------------------------------------------"

# Use nox to execute the tests for the project.
python3.6 -m nox -s "$RUN_TESTS_SESSION"
python3.9 -m nox -s "$RUN_TESTS_SESSION"
EXIT=$?

# If this is a periodic build, send the test log to the FlakyBot.
Expand Down
3 changes: 2 additions & 1 deletion packages/google-cloud-kms/.repo-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,6 @@
],
"default_version": "v1",
"codeowner_team": "",
"api_shortname": "cloudkms"
"api_shortname": "cloudkms",
"api_description": "a cloud-hosted key management service that lets you manage cryptographic keys for your cloud services the same way you do on-premises. You can generate, use, rotate, and destroy AES256, RSA 2048, RSA 3072, RSA 4096, EC P256, and EC P384 cryptographic keys. Cloud KMS is integrated with Cloud IAM and Cloud Audit Logging so that you can manage permissions on individual keys and monitor how these are used. Use Cloud KMS to protect secrets and other sensitive data that you need to store in Google Cloud Platform."
}
6 changes: 2 additions & 4 deletions packages/google-cloud-kms/CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ In order to add a feature:
documentation.

- The feature must work fully on the following CPython versions:
3.6, 3.7, 3.8, 3.9 and 3.10 on both UNIX and Windows.
3.7, 3.8, 3.9 and 3.10 on both UNIX and Windows.

- The feature must not add unnecessary dependencies (where
"unnecessary" is of course subjective, but new dependencies should
Expand Down Expand Up @@ -221,13 +221,11 @@ Supported Python Versions

We support:

- `Python 3.6`_
- `Python 3.7`_
- `Python 3.8`_
- `Python 3.9`_
- `Python 3.10`_

.. _Python 3.6: https://docs.python.org/3.6/
.. _Python 3.7: https://docs.python.org/3.7/
.. _Python 3.8: https://docs.python.org/3.8/
.. _Python 3.9: https://docs.python.org/3.9/
Expand All @@ -239,7 +237,7 @@ Supported versions can be found in our ``noxfile.py`` `config`_.
.. _config: https://github.com/googleapis/python-kms/blob/main/noxfile.py


We also explicitly decided to support Python 3 beginning with version 3.6.
We also explicitly decided to support Python 3 beginning with version 3.7.
Reasons for this include:

- Encouraging use of newest versions of Python 3
Expand Down
52 changes: 32 additions & 20 deletions packages/google-cloud-kms/README.rst
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
Python Client for Cloud Key Management Service (KMS) API
========================================================
Python Client for Google Cloud Key Management Service API
=========================================================

|GA| |pypi| |versions|
|stable| |pypi| |versions|

`Cloud Key Management Service (KMS) API`_: Manages keys and performs
cryptographic operations in a central cloud service, for direct use by other
cloud resources and applications.
`Google Cloud Key Management Service API`_: a cloud-hosted key management service that lets you manage cryptographic keys for your cloud services the same way you do on-premises. You can generate, use, rotate, and destroy AES256, RSA 2048, RSA 3072, RSA 4096, EC P256, and EC P384 cryptographic keys. Cloud KMS is integrated with Cloud IAM and Cloud Audit Logging so that you can manage permissions on individual keys and monitor how these are used. Use Cloud KMS to protect secrets and other sensitive data that you need to store in Google Cloud Platform.

- `Client Library Documentation`_
- `Product Documentation`_

.. |GA| image:: https://img.shields.io/badge/support-GA-gold.svg
:target: https://github.com/googleapis/google-cloud-python/blob/main/README.rst#general-availabilityt
.. |stable| image:: https://img.shields.io/badge/support-stable-gold.svg
:target: https://github.com/googleapis/google-cloud-python/blob/main/README.rst#stability-levels
.. |pypi| image:: https://img.shields.io/pypi/v/google-cloud-kms.svg
:target: https://pypi.org/project/google-cloud-kms/
.. |versions| image:: https://img.shields.io/pypi/pyversions/google-cloud-kms.svg
:target: https://pypi.org/project/google-cloud-kms/
.. _Cloud Key Management Service (KMS) API: https://cloud.google.com/kms
.. _Google Cloud Key Management Service API: https://cloud.google.com/kms
.. _Client Library Documentation: https://cloud.google.com/python/docs/reference/cloudkms/latest
.. _Product Documentation: https://cloud.google.com/kms

Expand All @@ -27,12 +25,12 @@ In order to use this library, you first need to go through the following steps:

1. `Select or create a Cloud Platform project.`_
2. `Enable billing for your project.`_
3. `Enable the Cloud Key Management Service (KMS) API.`_
3. `Enable the Google Cloud Key Management Service API.`_
4. `Setup Authentication.`_

.. _Select or create a Cloud Platform project.: https://console.cloud.google.com/project
.. _Enable billing for your project.: https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project
.. _Enable the Cloud Key Management Service (KMS) API.: https://cloud.google.com/kms
.. _Enable the Google Cloud Key Management Service API.: https://cloud.google.com/kms
.. _Setup Authentication.: https://googleapis.dev/python/google-api-core/latest/auth.html

Installation
Expand All @@ -49,15 +47,25 @@ dependencies.
.. _`virtualenv`: https://virtualenv.pypa.io/en/latest/


Code samples and snippets
~~~~~~~~~~~~~~~~~~~~~~~~~

Code samples and snippets live in the `samples/` folder.


Supported Python Versions
^^^^^^^^^^^^^^^^^^^^^^^^^
Python >= 3.6
Our client libraries are compatible with all current [active](https://devguide.python.org/devcycle/#in-development-main-branch) and [maintenance](https://devguide.python.org/devcycle/#maintenance-branches) versions of
Python.

Python >= 3.7

Deprecated Python Versions
^^^^^^^^^^^^^^^^^^^^^^^^^^
Python == 2.7.
Unsupported Python Versions
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Python <= 3.6

The last version of this library compatible with Python 2.7 is google-cloud-kms==1.4.0.
If you are using an [end-of-life](https://devguide.python.org/devcycle/#end-of-life-branches)
version of Python, we recommend that you update as soon as possible to an actively supported version.


Mac/Linux
Expand All @@ -84,8 +92,12 @@ Windows
Next Steps
~~~~~~~~~~

- Read the `Client Library Documentation`_ to see other available methods on
the client.
- Read the `Product Documentation`_ to learn more about the product and see
How-to Guides.
- Read the `Client Library Documentation`_ for Google Cloud Key Management Service API
to see other available methods on the client.
- Read the `Google Cloud Key Management Service API Product documentation`_ to learn
more about the product and see How-to Guides.
- View this `README`_ to see the full list of Cloud
APIs that we cover.

.. _Google Cloud Key Management Service API Product documentation: https://cloud.google.com/kms
.. _README: https://github.com/googleapis/google-cloud-python/blob/main/README.rst
85 changes: 54 additions & 31 deletions packages/google-cloud-kms/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

DEFAULT_PYTHON_VERSION = "3.8"

UNIT_TEST_PYTHON_VERSIONS = ["3.6", "3.7", "3.8", "3.9", "3.10"]
UNIT_TEST_PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10"]
UNIT_TEST_STANDARD_DEPENDENCIES = [
"mock",
"asyncmock",
Expand Down Expand Up @@ -331,28 +331,15 @@ def docfx(session):
def prerelease_deps(session):
"""Run all tests with prerelease versions of dependencies installed."""

prerel_deps = [
"protobuf",
"googleapis-common-protos",
"google-auth",
"grpcio",
"grpcio-status",
"google-api-core",
"proto-plus",
# dependencies of google-auth
"cryptography",
"pyasn1",
]

for dep in prerel_deps:
session.install("--pre", "--no-deps", "--upgrade", dep)

# Remaining dependencies
other_deps = ["requests"]
session.install(*other_deps)

# Install all dependencies
session.install("-e", ".[all, tests, tracing]")
session.install(*UNIT_TEST_STANDARD_DEPENDENCIES)
session.install(*SYSTEM_TEST_STANDARD_DEPENDENCIES)
system_deps_all = (
SYSTEM_TEST_STANDARD_DEPENDENCIES
+ SYSTEM_TEST_EXTERNAL_DEPENDENCIES
+ SYSTEM_TEST_EXTRAS
)
session.install(*system_deps_all)

# Because we test minimum dependency versions on the minimum Python
# version, the first version we test with in the unit tests sessions has a
Expand All @@ -366,19 +353,44 @@ def prerelease_deps(session):
constraints_text = constraints_file.read()

# Ignore leading whitespace and comment lines.
deps = [
constraints_deps = [
match.group(1)
for match in re.finditer(
r"^\s*(\S+)(?===\S+)", constraints_text, flags=re.MULTILINE
)
]

# Don't overwrite prerelease packages.
deps = [dep for dep in deps if dep not in prerel_deps]
# We use --no-deps to ensure that pre-release versions aren't overwritten
# by the version ranges in setup.py.
session.install(*deps)
session.install("--no-deps", "-e", ".[all]")
session.install(*constraints_deps)

if os.path.exists("samples/snippets/requirements.txt"):
session.install("-r", "samples/snippets/requirements.txt")

if os.path.exists("samples/snippets/requirements-test.txt"):
session.install("-r", "samples/snippets/requirements-test.txt")

prerel_deps = [
"protobuf",
# dependency of grpc
"six",
"googleapis-common-protos",
"grpcio",
"grpcio-status",
"google-api-core",
"proto-plus",
"google-cloud-testutils",
# dependencies of google-cloud-testutils"
"click",
]

for dep in prerel_deps:
session.install("--pre", "--no-deps", "--upgrade", dep)

# Remaining dependencies
other_deps = [
"requests",
"google-auth",
]
session.install(*other_deps)

# Print out prerelease package versions
session.run(
Expand All @@ -387,5 +399,16 @@ def prerelease_deps(session):
session.run("python", "-c", "import grpc; print(grpc.__version__)")

session.run("py.test", "tests/unit")
session.run("py.test", "tests/system")
session.run("py.test", "samples/snippets")

system_test_path = os.path.join("tests", "system.py")
system_test_folder_path = os.path.join("tests", "system")

# Only run system tests if found.
if os.path.exists(system_test_path) or os.path.exists(system_test_folder_path):
session.run("py.test", "tests/system")

snippets_test_path = os.path.join("samples", "snippets")

# Only run samples tests if found.
if os.path.exists(snippets_test_path):
session.run("py.test", "samples/snippets")
2 changes: 1 addition & 1 deletion packages/google-cloud-kms/samples/attestations/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def get_pytest_env_vars() -> Dict[str, str]:

# DO NOT EDIT - automatically generated.
# All versions used to test samples.
ALL_VERSIONS = ["3.6", "3.7", "3.8", "3.9", "3.10"]
ALL_VERSIONS = ["3.7", "3.8", "3.9", "3.10"]

# Any default versions that should be ignored.
IGNORED_VERSIONS = TEST_CONFIG["ignored_versions"]
Expand Down
2 changes: 1 addition & 1 deletion packages/google-cloud-kms/samples/snippets/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def get_pytest_env_vars() -> Dict[str, str]:

# DO NOT EDIT - automatically generated.
# All versions used to test samples.
ALL_VERSIONS = ["3.6", "3.7", "3.8", "3.9", "3.10"]
ALL_VERSIONS = ["3.7", "3.8", "3.9", "3.10"]

# Any default versions that should be ignored.
IGNORED_VERSIONS = TEST_CONFIG["ignored_versions"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Install Dependencies
.. _Python Development Environment Setup Guide:
https://cloud.google.com/python/setup

#. Create a virtualenv. Samples are compatible with Python 3.6+.
#. Create a virtualenv. Samples are compatible with Python 3.7+.

.. code-block:: bash
Expand Down
Loading

0 comments on commit 95fc188

Please sign in to comment.