[project]

name = "user_agent"
version = "0.1.10"
description = "Library to build content for User-Agent HTTP header"
readme = "README.md"
requires-python = ">=3.8"
license = {"file" = "LICENSE"}
keywords = ["user agent", "browser", "web crawling", "web scraping", "web crawler", "web scraper"]
authors = [
    {name = "Gregory Petukhov", email = "lorien@lorien.name"}
]
# https://pypi.org/pypi?%3Aaction=list_classifiers
classifiers = [
    "Typing :: Typed",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3",
    "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",
    "Programming Language :: Python :: 3.12",
    "License :: OSI Approved :: MIT License",
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Operating System :: OS Independent",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Internet :: WWW/HTTP",
]
dependencies = []

[project.optional-dependencies]

[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

[project.urls]
homepage = "http://github.com/lorien/user_agent"

[project.scripts]
ua = "user_agent.cli:script_ua"

[tool.setuptools]
packages=["user_agent", "user_agent.data"]

[tool.setuptools.package-data]
"*" = ["py.typed"]
"user_agent.data" = ["*.json"]

[tool.isort]
profile = "black"
line_length = 88
# skip_gitignore = true # throws errors in stderr when ".git" dir does not exist

[tool.pylint.main]
jobs=4
extension-pkg-whitelist="lxml"
disable="missing-docstring,broad-except,too-few-public-methods,consider-using-f-string,fixme"
variable-rgx="[a-z_][a-z0-9_]{1,30}$"
attr-rgx="[a-z_][a-z0-9_]{1,30}$"
argument-rgx="[a-z_][a-z0-9_]{1,30}$"
max-line-length=88
max-args=9
load-plugins=[
    "pylint.extensions.check_elif",
    "pylint.extensions.comparison_placement",
    "pylint.extensions.consider_ternary_expression",
    "pylint.extensions.docstyle",
    "pylint.extensions.for_any_all",
    "pylint.extensions.overlapping_exceptions",
    "pylint.extensions.redefined_loop_name",
    "pylint.extensions.redefined_variable_type",
    "pylint.extensions.set_membership",
    "pylint.extensions.typing",
]

[tool.pytest.ini_options]
testpaths = ["tests"]


[tool.ruff]
lint.select = ["ALL"]
lint.ignore = [
    "A003", # Class attribute `type` is shadowing a python builtin
    "ANN101", # Missing type annotation for `self` in method
    "ANN401", # Dynamically typed expressions (typing.Any) are disallowed
    "BLE001", # Do not catch blind exception: `Exception`
    "COM812", # Trailing comma missing
    "D100", # Missing docstring in public module
    "D101", # Missing docstring in public class
    "D102", # Missing docstring in public method1
    "D103", # Missing docstring in public function
    "D104", # Missing docstring in public package
    "D105", # Missing docstring in magic method,
    "D107", # Missing docstring in `__init__`
    "D203", # 1 blank line required before class docstring
    "D213", # Multi-line docstring summary should start at the second line
    "EM101", # Check for raw usage of a string literal in Exception raising
    "EM102", # Check for raw usage of an f-string literal in Exception raising
    "EM103", # Check for raw usage of .format on a string literal in Exception raising
    "F401", # Imported but unused
    "FBT", # Boolean arg/value in function definition
    "PTH", # A plugin finding use of functions that can be replaced by pathlib module
    "S101", # Use of `assert` detected
    "T201", # print found	
    "T203", # pprint found
    "TCH", # Move import into a type-checking block
    "TRY003", # Avoid specifying long messages outside the exception class
    "UP032", # Use f-string instead of format call
    "ERA001", # Found commented-out code
    "RUF001", # String contains ambiguous unicode character
    "ANN102", # Missing type annotation for `cls` in classmethod
    "TD002", # Missing author in TODO
    "TD003", # Missing issue link on the line following this TODO
    "FIX002", # Line contains TODO
    "RUF003", # Comment contains ambiguous
    "RUF012", # Mutable class attributes should be annotated
    "TRY400", #  Use `logging.exception` instead of `logging.error`
    "PERF401", # Use a list comprehension to create a transformed list
    "RUF100", # [*] Unused `noqa` directive
]
lint.pylint.max-args=9
target-version = "py38"
extend-exclude = ["var"]