[build-system] requires = ["setuptools>=64", "wheel"] build-backend = "setuptools.build_meta" [project] name = "intelliscan" version = "1.0.0" description = "AI-Powered Web Vulnerability Scanner with Random Forest classification" readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } authors = [{ name = "SABKARI Mohamed", email = "sabkari.mohamed@example.com" }] keywords = [ "security", "vulnerability", "scanner", "web", "sqli", "xss", "lfi", "machine-learning", "random-forest", ] classifiers = [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Security", "Topic :: Software Development :: Testing", ] dependencies = [ "requests>=2.31.0", "beautifulsoup4>=4.12.0", "urllib3>=2.0.0", "lxml>=4.9.0", "scikit-learn>=1.4.0", "numpy>=1.24.0", "pandas>=2.0.0", "joblib>=1.3.0", "fpdf2>=2.7.0", "Flask>=3.0.0", "Flask-Cors>=4.0.0", "Jinja2>=3.1.0", "click>=8.1.0", "rich>=13.0.0", ] [project.optional-dependencies] dev = [ "pytest>=7.4.0", "pytest-cov>=4.1.0", "pytest-mock>=3.12.0", "black>=23.12.0", "ruff>=0.1.9", "mypy>=1.7.0", ] viz = ["matplotlib>=3.7.0", "Pillow>=10.0.0"] [project.urls] Homepage = "https://github.com/sabkari-mohamed/intelliscan" Repository = "https://github.com/sabkari-mohamed/intelliscan" [project.scripts] intelliscan = "intelliscan.__main__:cli" [tool.setuptools.packages.find] exclude = ["tests*", "docs*", "examples*"] [tool.setuptools.package-data] intelliscan = ["web/templates/*.html", "web/static/*"] [tool.black] line-length = 100 target-version = ["py310", "py311", "py312"] include = '\.pyi?$' [tool.ruff] line-length = 100 target-version = "py310" exclude = ["build/", "dist/", ".venv/", "venv/"] [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade "SIM", # flake8-simplify ] ignore = [ "E501", # line too long (handled by black) "B008", # function call in default argument ] [tool.ruff.lint.per-file-ignores] "tests/*" = ["B011", "F401", "F811"] "intelliscan/__main__.py" = ["B008"] [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] addopts = [ "-ra", "--strict-markers", "--strict-config", ] [tool.coverage.run] source = ["intelliscan"] omit = ["*/tests/*", "*/__main__.py"] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", ] [tool.mypy] python_version = "3.10" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = false ignore_missing_imports = true