ddgs / pyproject.toml
motsobelal's picture
Upload 39 files
8628def verified
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "ddgs"
description = "Dux Distributed Global Search. A metasearch library that aggregates results from diverse web search services."
readme = "README.md"
requires-python = ">=3.10"
license = "MIT"
keywords = ["python", "search", "metasearch"]
authors = [
{name = "deedy5"}
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Internet :: WWW/HTTP :: Indexing/Search",
"Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = [
"click>=8.1.8",
"primp>=0.15.0",
"lxml>=4.9.4",
"httpx[http2,socks,brotli]>=0.28.1", # temporarily
"fake-useragent>=2.2.0",
]
dynamic = ["version"]
[project.urls] # Optional
"Homepage" = "https://github.com/deedy5/ddgs"
[project.scripts]
ddgs = "ddgs.cli:safe_entry_point"
[tool.setuptools.dynamic]
version = {attr = "ddgs.__version__"}
[tool.setuptools.packages.find]
include = ["ddgs*"]
exclude = ["api*"]
[project.optional-dependencies]
dev = [
"mypy>=1.17.1",
"pre-commit",
"pytest>=8.4.1",
"pytest-dependency>=0.6.0",
"ruff>=0.13.0",
# for mypy
"lxml-stubs",
"types-Pygments",
"types-pexpect",
"types-PyYAML",
"types-ujson"
]
api = [
"fastapi[standard]>=0.104.0",
"fastapi-mcp>=0.4.0",
]
[tool.ruff]
line-length = 120
exclude = ["tests"]
[tool.ruff.lint]
select = [
# Core rules
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
# Enhanced rules
"ERA", # eradicate
"YTT", # flake8-2020
"ANN", # flake8-annotations
"ASYNC", # flake8-async
"S", # flake8-bandit
"BLE", # flake8-blind-except
"FBT", # flake8-boolean-trap
"B", # flake8-bugbear
"A", # flake8-builtins
"COM", # flake8-commas
"C4", # flake8-comprehensions
"DTZ", # flake8-datetimez
"T10", # flake8-debugger
"EM", # flake8-errmsg
"FIX", # flake8-fixme
"FA", # flake8-future-annotations
"INT", # flake8-gettext
"ISC", # flake8-implicit-str-concat
"ICN", # flake8-import-conventions
"LOG", # flake8-logging
"G", # flake8-logging-format
"INP", # flake8-no-pep420
"PIE", # flake8-pie
"T20", # flake8-print
"PYI", # flake8-pyi
"PT", # flake8-pytest-style
"Q", # flake8-quotes
"RSE", # flake8-raise
"RET", # flake8-return
"SLF", # flake8-self
"SIM", # flake8-simplify
"SLOT", # flake8-slots
"TID", # flake8-tidy-imports
"TD", # flake8-todos
"TC", # flake8-type-checking
"ARG", # flake8-unused-arguments
"PTH", # flake8-use-pathlib
"FLY", # flynt
"C90", # mccabe
"N", # pep8-naming
"PERF", # perflint
"PGH", # pygrep-hooks
"PL", # Pylint
"UP", # pyupgrade
"FURB", # refurb
"RUF", # ruff-specific rules
"TRY", # tryceratops
# Documentation
"D", # pydocstyle
]
ignore = [
"COM812", # Missing trailing comma (handled by formatter)
"D107", # Missing docstring in `__init__`
"D203", # incorrect-blank-line-before-class
"D213", # multi-line-summary-second-line
"N818", # Exception name {name} should be named with an Error suffix
"PLR0913", # Too many arguments to function call
"PLR2004", # Magic value used in comparison
"SLF001", # Private member accessed
]
[tool.mypy]
python_version = "3.10"
strict = true
exclude = ["build/"]