feat: migrate to pyproject.toml (#736)
* migrate to pyproject.toml
* remove version
* remove readme_filename
* remove long_description
* dynamic version
* move description
* move urls
* move packages
* zip_safe is deprecated
* include-package-data = true by default
* platforms are ignored
* Add copyright notice
* proto-plus when python_version >= '3.13'
* remove mypy.ini
* remove pytest.ini
---------
Co-authored-by: Anthonios Partheniou <partheniou@google.com>
diff --git a/mypy.ini b/mypy.ini
deleted file mode 100644
index ce33582..0000000
--- a/mypy.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[mypy]
-python_version = 3.7
-namespace_packages = True
-ignore_missing_imports = True
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..fda8f01
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,107 @@
+# Copyright 2024 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.
+
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "google-api-core"
+authors = [{ name = "Google LLC", email = "googleapis-packages@google.com" }]
+license = { text = "Apache 2.0" }
+requires-python = ">=3.7"
+readme = "README.rst"
+description = "Google API client core library"
+classifiers = [
+ # Should be one of:
+ # "Development Status :: 3 - Alpha"
+ # "Development Status :: 4 - Beta"
+ # "Development Status :: 5 - Production/Stable"
+ "Development Status :: 5 - Production/Stable",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: Apache Software License",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
+ "Operating System :: OS Independent",
+ "Topic :: Internet",
+]
+dependencies = [
+ "googleapis-common-protos >= 1.56.2, < 2.0.dev0",
+ "protobuf >= 3.19.5, < 6.0.0.dev0, != 3.20.0, != 3.20.1, != 4.21.0, != 4.21.1, != 4.21.2, != 4.21.3, != 4.21.4, != 4.21.5",
+ "proto-plus >= 1.22.3, < 2.0.0dev",
+ "proto-plus >= 1.25.0, < 2.0.0dev; python_version >= '3.13'",
+ "google-auth >= 2.14.1, < 3.0.dev0",
+ "requests >= 2.18.0, < 3.0.0.dev0",
+]
+dynamic = ["version"]
+
+[project.urls]
+Documentation = "https://googleapis.dev/python/google-api-core/latest/"
+Repository = "https://github.com/googleapis/python-api-core"
+
+[project.optional-dependencies]
+async_rest = ["google-auth[aiohttp] >= 2.35.0, < 3.0.dev0"]
+grpc = [
+ "grpcio >= 1.33.2, < 2.0dev",
+ "grpcio >= 1.49.1, < 2.0dev; python_version >= '3.11'",
+ "grpcio-status >= 1.33.2, < 2.0.dev0",
+ "grpcio-status >= 1.49.1, < 2.0.dev0; python_version >= '3.11'",
+]
+grpcgcp = ["grpcio-gcp >= 0.2.2, < 1.0.dev0"]
+grpcio-gcp = ["grpcio-gcp >= 0.2.2, < 1.0.dev0"]
+
+[tool.setuptools.dynamic]
+version = { attr = "google.api_core.version.__version__" }
+
+[tool.setuptools.packages.find]
+# Only include packages under the 'google' namespace. Do not include tests,
+# benchmarks, etc.
+include = ["google*"]
+
+[tool.mypy]
+python_version = "3.7"
+namespace_packages = true
+ignore_missing_imports = true
+
+[tool.pytest]
+filterwarnings = [
+ # treat all warnings as errors
+ "error",
+ # Remove once https://github.com/pytest-dev/pytest-cov/issues/621 is fixed
+ "ignore:.*The --rsyncdir command line argument and rsyncdirs config variable are deprecated:DeprecationWarning",
+ # Remove once https://github.com/protocolbuffers/protobuf/issues/12186 is fixed
+ "ignore:.*custom tp_new.*in Python 3.14:DeprecationWarning",
+ # Remove once support for python 3.7 is dropped
+ # This warning only appears when using python 3.7
+ "ignore:.*Using or importing the ABCs from.*collections:DeprecationWarning",
+ # Remove once support for grpcio-gcp is deprecated
+ # See https://github.com/googleapis/python-api-core/blob/42e8b6e6f426cab749b34906529e8aaf3f133d75/google/api_core/grpc_helpers.py#L39-L45
+ "ignore:.*Support for grpcio-gcp is deprecated:DeprecationWarning",
+ "ignore: The `compression` argument is ignored for grpc_gcp.secure_channel creation:DeprecationWarning",
+ "ignore:The `attempt_direct_path` argument is ignored for grpc_gcp.secure_channel creation:DeprecationWarning",
+ # Remove once the minimum supported version of googleapis-common-protos is 1.62.0
+ "ignore:.*pkg_resources.declare_namespace:DeprecationWarning",
+ "ignore:.*pkg_resources is deprecated as an API:DeprecationWarning",
+ # Remove once https://github.com/grpc/grpc/issues/35086 is fixed (and version newer than 1.60.0 is published)
+ "ignore:There is no current event loop:DeprecationWarning",
+ # Remove after support for Python 3.7 is dropped
+ "ignore:After January 1, 2024, new releases of this library will drop support for Python 3.7:DeprecationWarning",
+]
diff --git a/pytest.ini b/pytest.ini
deleted file mode 100644
index 696548c..0000000
--- a/pytest.ini
+++ /dev/null
@@ -1,23 +0,0 @@
-[pytest]
-filterwarnings =
- # treat all warnings as errors
- error
- # Remove once https://github.com/pytest-dev/pytest-cov/issues/621 is fixed
- ignore:.*The --rsyncdir command line argument and rsyncdirs config variable are deprecated:DeprecationWarning
- # Remove once https://github.com/protocolbuffers/protobuf/issues/12186 is fixed
- ignore:.*custom tp_new.*in Python 3.14:DeprecationWarning
- # Remove once support for python 3.7 is dropped
- # This warning only appears when using python 3.7
- ignore:.*Using or importing the ABCs from.*collections:DeprecationWarning
- # Remove once support for grpcio-gcp is deprecated
- # See https://github.com/googleapis/python-api-core/blob/42e8b6e6f426cab749b34906529e8aaf3f133d75/google/api_core/grpc_helpers.py#L39-L45
- ignore:.*Support for grpcio-gcp is deprecated:DeprecationWarning
- ignore: The `compression` argument is ignored for grpc_gcp.secure_channel creation:DeprecationWarning
- ignore:The `attempt_direct_path` argument is ignored for grpc_gcp.secure_channel creation:DeprecationWarning
- # Remove once the minimum supported version of googleapis-common-protos is 1.62.0
- ignore:.*pkg_resources.declare_namespace:DeprecationWarning
- ignore:.*pkg_resources is deprecated as an API:DeprecationWarning
- # Remove once https://github.com/grpc/grpc/issues/35086 is fixed (and version newer than 1.60.0 is published)
- ignore:There is no current event loop:DeprecationWarning
- # Remove after support for Python 3.7 is dropped
- ignore:After January 1, 2024, new releases of this library will drop support for Python 3.7:DeprecationWarning
diff --git a/setup.py b/setup.py
index 2a9b3b3..168877f 100644
--- a/setup.py
+++ b/setup.py
@@ -12,97 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-import io
-import os
-
import setuptools
-# Package metadata.
-
-name = "google-api-core"
-description = "Google API client core library"
-
-# Should be one of:
-# 'Development Status :: 3 - Alpha'
-# 'Development Status :: 4 - Beta'
-# 'Development Status :: 5 - Production/Stable'
-release_status = "Development Status :: 5 - Production/Stable"
-dependencies = [
- "googleapis-common-protos >= 1.56.2, < 2.0.dev0",
- "protobuf>=3.19.5,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5",
- "proto-plus >= 1.22.3, < 2.0.0dev",
- "proto-plus >= 1.25.0, < 2.0.0dev; python_version >= '3.13'",
- "google-auth >= 2.14.1, < 3.0.dev0",
- "requests >= 2.18.0, < 3.0.0.dev0",
-]
-extras = {
- "async_rest": [
- "google-auth[aiohttp] >= 2.35.0, < 3.0.dev0",
- ],
- "grpc": [
- "grpcio >= 1.33.2, < 2.0dev",
- "grpcio >= 1.49.1, < 2.0dev; python_version>='3.11'",
- "grpcio-status >= 1.33.2, < 2.0.dev0",
- "grpcio-status >= 1.49.1, < 2.0.dev0; python_version>='3.11'",
- ],
- "grpcgcp": "grpcio-gcp >= 0.2.2, < 1.0.dev0",
- "grpcio-gcp": "grpcio-gcp >= 0.2.2, < 1.0.dev0",
-}
-
-
-# Setup boilerplate below this line.
-
-package_root = os.path.abspath(os.path.dirname(__file__))
-
-
-version = {}
-with open(os.path.join(package_root, "google/api_core/version.py")) as fp:
- exec(fp.read(), version)
-version = version["__version__"]
-
-readme_filename = os.path.join(package_root, "README.rst")
-with io.open(readme_filename, encoding="utf-8") as readme_file:
- readme = readme_file.read()
-
-# Only include packages under the 'google' namespace. Do not include tests,
-# benchmarks, etc.
-packages = [
- package
- for package in setuptools.find_namespace_packages()
- if package.startswith("google")
-]
-
-setuptools.setup(
- name=name,
- version=version,
- description=description,
- long_description=readme,
- author="Google LLC",
- author_email="googleapis-packages@google.com",
- license="Apache 2.0",
- url="https://github.com/googleapis/python-api-core",
- classifiers=[
- release_status,
- "Intended Audience :: Developers",
- "License :: OSI Approved :: Apache Software License",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.7",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- "Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.11",
- "Programming Language :: Python :: 3.12",
- "Programming Language :: Python :: 3.13",
- "Operating System :: OS Independent",
- "Topic :: Internet",
- ],
- platforms="Posix; MacOS X; Windows",
- packages=packages,
- install_requires=dependencies,
- extras_require=extras,
- python_requires=">=3.7",
- include_package_data=True,
- zip_safe=False,
-)
+setuptools.setup()