1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
import os
import setuptools
import setuptools.command.test
import sys
pkgdir = {"": "python%s" % sys.version_info[0]}
VERSION = "0.22.0"
# `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"],
install_requires=read_requirements("requirements.txt"),
tests_require=read_requirements("requirements-test.txt"),
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
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",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Software Development :: Libraries",
],
)
|