[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "wikijs-python-sdk" description = "A professional Python SDK for Wiki.js API integration" authors = [{name = "leomiranda", email = "lmiranda@hotserv.cloud"}] license = {text = "MIT"} readme = "README.md" requires-python = ">=3.8" classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "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", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Documentation", "Typing :: Typed", ] dependencies = [ "requests>=2.28.0", "pydantic>=1.10.0", "typing-extensions>=4.0.0", ] dynamic = ["version"] keywords = ["wiki", "wikijs", "api", "sdk", "client", "http", "rest"] [project.optional-dependencies] dev = [ "pytest>=7.0.0", "pytest-cov>=4.0.0", "pytest-asyncio>=0.21.0", "black>=22.0.0", "isort>=5.10.0", "flake8>=5.0.0", "mypy>=0.991", "pre-commit>=2.20.0", "bandit[toml]>=1.7.0", "responses>=0.20.0", "ipython>=8.0.0", ] async = [ "aiohttp>=3.8.0", ] cli = [ "click>=8.0.0", "rich>=12.0.0", ] all = [ "aiohttp>=3.8.0", "click>=8.0.0", "rich>=12.0.0", ] [project.urls] Homepage = "https://gitea.hotserv.cloud/lmiranda/wikijs-sdk-python" "Bug Reports" = "https://gitea.hotserv.cloud/lmiranda/wikijs-sdk-python/issues" Source = "https://gitea.hotserv.cloud/lmiranda/wikijs-sdk-python" Documentation = "https://gitea.hotserv.cloud/lmiranda/wikijs-sdk-python/src/branch/main/docs" [tool.setuptools.dynamic] version = {attr = "wikijs.version.__version__"} [tool.black] line-length = 88 target-version = ['py38'] include = '\.pyi?$' extend-exclude = ''' /( # directories \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | build | dist )/ ''' [tool.isort] profile = "black" multi_line_output = 3 line_length = 88 known_first_party = ["wikijs"] known_third_party = ["pytest", "requests", "pydantic"] [tool.mypy] python_version = "3.12" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true disallow_untyped_decorators = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true warn_unreachable = true strict_equality = true [[tool.mypy.overrides]] module = [ "requests.*", "aiohttp.*", ] ignore_missing_imports = true [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = [ "--strict-markers", "--strict-config", "--cov=wikijs", "--cov-report=term-missing", "--cov-report=html", "--cov-report=xml", "--cov-fail-under=85", ] markers = [ "unit: Unit tests", "integration: Integration tests", "slow: Slow tests", "network: Tests requiring network access", ] [tool.coverage.run] source = ["wikijs"] omit = [ "*/tests/*", "*/test_*", "wikijs/cli/*", # CLI tested separately initially ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", ] [tool.coverage.html] directory = "tests/htmlcov" [tool.bandit] exclude_dirs = ["tests"] skips = ["B101"] # Skip assert_used test [tool.flake8] max-line-length = 88 select = ["E", "W", "F", "C", "N"] ignore = [ "E203", # whitespace before ':' (conflicts with black) "E501", # line too long (handled by black) "W503", # line break before binary operator (conflicts with black) ] exclude = [ ".git", "__pycache__", "build", "dist", ".eggs", "*.egg-info", ".venv", "venv", ".tox" ] per-file-ignores = [ "tests/*:F401,F811", # Allow unused imports in tests "__init__.py:F401", # Allow unused imports in __init__.py ] max-complexity = 10