| import os | |
| import setuptools | |
| import setuptools.command.test | |
| import sys | |
| pkgdir = {"": "python%s" % sys.version_info[0]} | |
| VERSION = "0.18.1" | |
| # `python setup.py test` uses existing Python environment, no virtualenv, no pip. | |
| # Use case: Archlinux package. https://github.com/httplib2/httplib2/issues/103 | |
| # Otherwise, use `script/test` | |
| class TestCommand(setuptools.command.test.test): | |
| def run_tests(self): | |
| # pytest may be not installed yet | |
| import pytest | |
| args = ['--forked', '--fulltrace', '--no-cov', 'tests/'] | |
| if self.test_suite: | |
| args += ['-k', self.test_suite] | |
| sys.stderr.write('setup.py:test run pytest {}\n'.format(' '.join(args))) | |
| errno = pytest.main(args) | |
| sys.exit(errno) | |
| def read_requirements(name): | |
| project_root = os.path.dirname(os.path.abspath(__file__)) | |
| with open(os.path.join(project_root, name), 'rb') as f: | |
| # remove whitespace and comments | |
| g = (line.decode('utf-8').lstrip().split('#', 1)[0].rstrip() for line in f) | |
| return [l for l in g if l] | |
| setuptools.setup( | |
| name="httplib2", | |
| version=VERSION, | |
| author="Joe Gregorio", | |
| author_email="joe@bitworking.org", | |
| url="https://github.com/httplib2/httplib2", | |
| description="A comprehensive HTTP client library.", | |
| license="MIT", | |
| long_description=""" | |
| A comprehensive HTTP client library, ``httplib2`` supports many features left out of other HTTP libraries. | |
| **HTTP and HTTPS** | |
| HTTPS support is only available if the socket module was compiled with SSL support. | |
| **Keep-Alive** | |
| Supports HTTP 1.1 Keep-Alive, keeping the socket open and performing multiple requests over the same connection if possible. | |
| **Authentication** | |
| The following three types of HTTP Authentication are supported. These can be used over both HTTP and HTTPS. | |
| * Digest | |
| * Basic | |
| * WSSE | |
| **Caching** | |
| The module can optionally operate with a private cache that understands the Cache-Control: | |
| header and uses both the ETag and Last-Modified cache validators. Both file system | |
| and memcached based caches are supported. | |
| **All Methods** | |
| The module can handle any HTTP request method, not just GET and POST. | |
| **Redirects** | |
| Automatically follows 3XX redirects on GETs. | |
| **Compression** | |
| Handles both 'deflate' and 'gzip' types of compression. | |
| **Lost update support** | |
| Automatically adds back ETags into PUT requests to resources we have already cached. This implements Section 3.2 of Detecting the Lost Update Problem Using Unreserved Checkout | |
| **Unit Tested** | |
| A large and growing set of unit tests. | |
| """, | |
| package_dir=pkgdir, | |
| packages=["httplib2"], | |
| package_data={"httplib2": ["*.txt"]}, | |
| tests_require=read_requirements("requirements-test.txt"), | |
| cmdclass={"test": TestCommand}, | |
| classifiers=[ | |
| "Development Status :: 4 - Beta", | |
| "Environment :: Web Environment", | |
| "Intended Audience :: Developers", | |
| "License :: OSI Approved :: MIT 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", | |
| "Programming Language :: Python :: 3.7", | |
| "Topic :: Internet :: WWW/HTTP", | |
| "Topic :: Software Development :: Libraries", | |
| ], | |
| ) |