| 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="[email protected]", |
| 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", |
| ], |
| ) |