Normalize all setup.py files (#4909)

diff --git a/setup.py b/setup.py
index 1d2d6db..269a662 100644
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,4 @@
-# Copyright 2016 Google LLC
+# Copyright 2018 Google LLC
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -12,68 +12,85 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import io
 import os
 
-from setuptools import find_packages
-from setuptools import setup
+import setuptools
 
 
-PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__))
+# Package metadata.
 
-with open(os.path.join(PACKAGE_ROOT, 'README.rst')) as file_obj:
-    README = file_obj.read()
+name = 'google-api-core'
+description = 'Google API client core library'
+version = '0.1.5.dev1'
+# Should be one of:
+# 'Development Status :: 3 - Alpha'
+# 'Development Status :: 4 - Beta'
+# 'Development Status :: 5 - Stable'
+release_status = 'Development Status :: 4 - Beta'
+dependencies = [
+    'googleapis-common-protos<2.0dev,>=1.5.3',
+    'protobuf>=3.0.0',
+    'google-auth<2.0.0dev,>=0.4.0',
+    'requests<3.0.0dev,>=2.18.0',
+    'setuptools>=34.0.0',
+    'six>=1.10.0',
+    'pytz',
+]
+extras = {
+    'grpc': 'grpcio>=1.8.2',
+    ':python_version < "3.2"': 'futures>=3.2.0',
+}
 
 
-SETUP_BASE = {
-    'author': 'Google Cloud Platform',
-    'author_email': 'googleapis-publisher@google.com',
-    'scripts': [],
-    'url': 'https://github.com/GoogleCloudPlatform/google-cloud-python',
-    'license': 'Apache 2.0',
-    'platforms': 'Posix; MacOS X; Windows',
-    'include_package_data': True,
-    'zip_safe': False,
-    'classifiers': [
-        'Development Status :: 4 - Beta',
+# Setup boilerplate below this line.
+
+package_root = os.path.abspath(os.path.dirname(__file__))
+
+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_packages()
+    if package.startswith('google')]
+
+# Determine which namespaces are needed.
+namespaces = ['google']
+if 'google.cloud' in packages:
+    namespaces.append('google.cloud')
+
+
+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/GoogleCloudPlatform/google-cloud-python',
+    classifiers=[
+        release_status,
         'Intended Audience :: Developers',
         'License :: OSI Approved :: Apache Software License',
-        'Operating System :: OS Independent',
+        'Programming Language :: Python',
         'Programming Language :: Python :: 2',
         'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3.4',
         'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: 3.6',
+        'Operating System :: OS Independent',
         'Topic :: Internet',
     ],
-}
-
-
-REQUIREMENTS = [
-    'googleapis-common-protos >= 1.5.3, < 2.0dev',
-    'protobuf >= 3.0.0',
-    'google-auth >= 0.4.0, < 2.0.0dev',
-    'requests >= 2.18.0, < 3.0.0dev',
-    'setuptools >= 34.0.0',
-    'six >= 1.10.0',
-    # pytz does not adhere to semver and uses a year.month based scheme.
-    # Any valid version of pytz should work for us.
-    'pytz',
-]
-
-EXTRAS_REQUIREMENTS = {
-    ':python_version<"3.2"': ['futures >= 3.2.0'],
-    'grpc': ['grpcio >= 1.8.2'],
-}
-
-setup(
-    name='google-api-core',
-    version='0.1.5.dev1',
-    description='Core Google API Client Library',
-    long_description=README,
-    namespace_packages=['google'],
-    packages=find_packages(exclude=('tests*',)),
-    install_requires=REQUIREMENTS,
-    extras_require=EXTRAS_REQUIREMENTS,
-    **SETUP_BASE
+    platforms='Posix; MacOS X; Windows',
+    packages=packages,
+    namespace_packages=namespaces,
+    install_requires=dependencies,
+    extras_require=extras,
+    include_package_data=True,
+    zip_safe=False,
 )