# Copyright 2014 Google Inc. All Rights Reserved.
#
# 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.

"""Setup script for Google API Python client.

Also installs included versions of third party libraries, if those libraries
are not already installed.
"""
from __future__ import print_function

import sys

if sys.version_info < (2, 6):
  print('google-api-python-client requires python version >= 2.6.',
        file=sys.stderr)
  sys.exit(1)
if (3, 1) <= sys.version_info < (3, 3):
  print('google-api-python-client requires python3 version >= 3.3.',
        file=sys.stderr)
  sys.exit(1)

from setuptools import setup
import pkg_resources

def _DetectBadness():
  import os
  if 'SKIP_GOOGLEAPICLIENT_COMPAT_CHECK' in os.environ:
    return
  o2c_pkg = None
  try:
    o2c_pkg = pkg_resources.get_distribution('oauth2client')
  except pkg_resources.DistributionNotFound:
    pass
  oauth2client = None
  try:
    import oauth2client
  except ImportError:
    pass
  if o2c_pkg is None and oauth2client is not None:
    raise RuntimeError(
        'Previous version of google-api-python-client detected; due to a '
        'packaging issue, we cannot perform an in-place upgrade. Please remove '
        'the old version and re-install this package.'
    )

_DetectBadness()

packages = [
    'apiclient',
    'googleapiclient',
]

install_requires = [
    'httplib2>=0.8',
    'oauth2client>=1.4.6',
    'six>=1.6.1',
    'uritemplate>=0.6',
]

if sys.version_info < (2, 7):
  install_requires.append('argparse')

long_desc = """The Google API Client for Python is a client library for
accessing the Plus, Moderator, and many other Google APIs."""

import googleapiclient
version = googleapiclient.__version__

setup(
    name="google-api-python-client",
    version=version,
    description="Google API Client Library for Python",
    long_description=long_desc,
    author="Google Inc.",
    url="http://github.com/google/google-api-python-client/",
    install_requires=install_requires,
    packages=packages,
    package_data={},
    license="Apache 2.0",
    keywords="google api client",
    classifiers=[
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Development Status :: 5 - Production/Stable',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: Apache Software License',
        'Operating System :: OS Independent',
        'Topic :: Internet :: WWW/HTTP',
    ],
)

setup.py
# Copyright 2014 Google Inc. All Rights Reserved.
#
# 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.

"""Setup script for Google API Python client.

Also installs included versions of third party libraries, if those libraries
are not already installed.
"""
from __future__ import print_function

import sys

if sys.version_info < (2, 6):
  print('google-api-python-client requires python version >= 2.6.',
        file=sys.stderr)
  sys.exit(1)
if (3, 1) <= sys.version_info < (3, 3):
  print('google-api-python-client requires python3 version >= 3.3.',
        file=sys.stderr)
  sys.exit(1)

from setuptools import setup
import pkg_resources

def _DetectBadness():
  import os
  if 'SKIP_GOOGLEAPICLIENT_COMPAT_CHECK' in os.environ:
    return
  o2c_pkg = None
  try:
    o2c_pkg = pkg_resources.get_distribution('oauth2client')
  except pkg_resources.DistributionNotFound:
    pass
  oauth2client = None
  try:
    import oauth2client
  except ImportError:
    pass
  if o2c_pkg is None and oauth2client is not None:
    raise RuntimeError(
        'Previous version of google-api-python-client detected; due to a '
        'packaging issue, we cannot perform an in-place upgrade. Please remove '
        'the old version and re-install this package.'
    )

_DetectBadness()

packages = [
    'apiclient',
    'googleapiclient',
    'googleapiclient/discovery_cache',
]

install_requires = [
    'httplib2>=0.8',
    'oauth2client>=1.4.6',
    'six>=1.6.1',
    'uritemplate>=0.6',
]

if sys.version_info < (2, 7):
  install_requires.append('argparse')

long_desc = """The Google API Client for Python is a client library for
accessing the Plus, Moderator, and many other Google APIs."""

import googleapiclient
version = googleapiclient.__version__

setup(
    name="google-api-python-client",
    version=version,
    description="Google API Client Library for Python",
    long_description=long_desc,
    author="Google Inc.",
    url="http://github.com/google/google-api-python-client/",
    install_requires=install_requires,
    packages=packages,
    package_data={},
    license="Apache 2.0",
    keywords="google api client",
    classifiers=[
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Development Status :: 5 - Production/Stable',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: Apache Software License',
        'Operating System :: OS Independent',
        'Topic :: Internet :: WWW/HTTP',
    ],
)

setup.py
diff --git a/setup.py b/setup.py
index 95df365765c..2f2b164860e 100644
--- a/setup.py
+++ b/setup.py
@@ -59,6 +59,7 @@ def _DetectBadness():
 packages = [
     'apiclient',
     'googleapiclient',
+    'googleapiclient/discovery_cache',
 ]
 
 install_requires = [

discovery_cache module not packaged during installation.
I've installed `google-api-python-client` from source, but when at some point my application was failing with this message:

```
  ...
  ...
  File "build/bdist.linux-x86_64/egg/oauth2client/util.py", line 142, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "build/bdist.linux-x86_64/egg/googleapiclient/discovery.py", line 193, in build
    content = _retrieve_discovery_doc(requested_url, http, cache_discovery, cache)
  File "build/bdist.linux-x86_64/egg/googleapiclient/discovery.py", line 215, in _retrieve_discovery_doc
    from . import discovery_cache
ImportError: cannot import name discovery_cache
```

I've checked if `discovery_cache` module was actually part of the `egg`, and unfortunately it was not:

```
[root@e42fb97ce657 unit]# python
Python 2.7.5 (default, Jun 24 2015, 00:41:19) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import googleapiclient.discovery_cache
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named discovery_cache
>>> 
```

Here are all the files in `egg`

```
[root@e42fb97ce657 ~]# unzip -l /usr/lib/python2.7/site-packages/google_api_python_client-1.4.1-py2.7.egg 
Archive:  /usr/lib/python2.7/site-packages/google_api_python_client-1.4.1-py2.7.egg
  Length      Date    Time    Name
---------  ---------- -----   ----
     1169  09-03-2015 16:09   apiclient/__init__.py
     1301  09-03-2015 16:09   apiclient/__init__.pyc
        1  09-03-2015 16:09   EGG-INFO/dependency_links.txt
       62  09-03-2015 16:09   EGG-INFO/requires.txt
       26  09-03-2015 16:09   EGG-INFO/top_level.txt
      969  09-03-2015 16:09   EGG-INFO/PKG-INFO
        1  09-03-2015 16:09   EGG-INFO/zip-safe
      545  09-03-2015 16:09   EGG-INFO/SOURCES.txt
    53575  09-03-2015 16:09   googleapiclient/http.py
     9910  09-03-2015 16:09   googleapiclient/channel.py
    40890  09-03-2015 16:09   googleapiclient/discovery.py
     9907  09-03-2015 16:09   googleapiclient/schema.pyc
      620  09-03-2015 16:09   googleapiclient/__init__.py
     9317  09-03-2015 16:09   googleapiclient/schema.py
    11830  09-03-2015 16:09   googleapiclient/model.py
     4047  09-03-2015 16:09   googleapiclient/sample_tools.py
     6552  09-03-2015 16:09   googleapiclient/mimeparse.py
    53976  09-03-2015 16:09   googleapiclient/http.pyc
     7043  09-03-2015 16:09   googleapiclient/mimeparse.pyc
     6333  09-03-2015 16:09   googleapiclient/errors.pyc
     3131  09-03-2015 16:09   googleapiclient/sample_tools.pyc
     3622  09-03-2015 16:09   googleapiclient/errors.py
    35534  09-03-2015 16:09   googleapiclient/discovery.pyc
    14028  09-03-2015 16:09   googleapiclient/model.pyc
      175  09-03-2015 16:09   googleapiclient/__init__.pyc
    10690  09-03-2015 16:09   googleapiclient/channel.pyc
---------                     -------
   285254                     26 files
[root@e42fb97ce657 ~]# 
```

As a workaround I had to add `googleapiclient/discovery_cache` to the `packages` in `setup.py` so it looked like that:

```
[root@e42fb97ce657 google-api-python-client]# more setup.py | grep packages -A 4 -m1
packages = [
    'apiclient',
    'googleapiclient',
    'googleapiclient/discovery_cache'
]
```

Then installed and everything magically started working.

```
[root@e42fb97ce657 google-api-python-client]# python
Python 2.7.5 (default, Jun 24 2015, 00:41:19) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import googleapiclient.discovery_cache
>>> 
```

Here is a quick sample that looks similar to my environment using `Docker`:

```
FROM centos:centos7

RUN yum install -y git python-devel python-setuptools unzip
RUN easy_install pip
RUN cd /tmp ;\
    git clone https://github.com/google/google-api-python-client && \
    cd google-api-python-client && \
    python setup.py install 
```

I've also tried to follow preferred suggestion from the `README.md` and install it from `pip` but it ended up in the same situation.

Please advice on how to proceed without making "manual" modifications to the official package?

