python-threatexchange/setup.py (60 lines of code) (raw):
#!/usr/bin/env python
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
from codecs import open
from os import path
from setuptools import find_packages, setup
here = path.abspath(path.dirname(__file__))
with open(path.join(here, "README.md"), encoding="utf-8") as f:
long_description = f.read()
with open(path.join(here, "DESCRIPTION.rst"), encoding="utf-8") as f:
description = f.read()
with open(path.join(here, "version.txt"), encoding="utf-8") as f:
version = f.read().strip()
extras_require = {
"faiss": ["faiss-cpu>=1.6.3", "numpy"],
"pdq_hasher": [
"numpy",
"pdqhash>=0.2.2",
"Pillow",
],
"ocr": [
"pytesseract",
],
"pdf": [
"py-tlsh",
"pdfminer.six",
],
}
all_extras = set(sum(extras_require.values(), []))
extras_require["test"] = sorted({"pytest"} | all_extras)
extras_require["package"] = ["wheel"]
extras_require["lint"] = ["black"]
extras_require["types"] = ["mypy", "types-python-dateutil", "types-requests"]
extras_require["all"] = sorted(set(sum(extras_require.values(), [])))
setup(
name="threatexchange",
version=version,
description="Python Library for Facebook ThreatExchange",
long_description=long_description,
long_description_content_type="text/markdown",
author="Facebook",
author_email="threatexchange@fb.com",
license="BSD",
classifiers=[
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python :: 3.6",
],
keywords="facebook threatexchange",
url="https://www.github.com/facebook/ThreatExchange",
packages=find_packages(exclude=["tests*"]),
install_requires=[
"python-Levenshtein",
"requests>=2.26.0",
"urllib3>=1.26.0", # For allow_methods
"dataclasses",
"python-dateutil",
"dacite",
],
extras_require=extras_require,
entry_points={"console_scripts": ["threatexchange = threatexchange.cli.main:main"]},
)