[build-system] requires=["flit_core >=3.12,<4"] build-backend="flit_core.buildapi" [project] name="torch-geometric" version="2.9.0" authors=[ {name="Matthias Fey", email="matthias@pyg.org"}, ] description="Graph Neural Network Library for PyTorch" readme="README.md" requires-python=">=3.10" keywords=[ "deep-learning", "pytorch", "geometric-deep-learning", "graph-neural-networks", "graph-convolutional-networks", ] license = "MIT" license-files = ["LICENSE"] classifiers=[ "Development Status :: 5 - Production/Stable", "Programming Language :: Python", "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 :: 3 :: Only", ] dependencies=[ "aiohttp", "fsspec", "jinja2", "numpy", "psutil>=5.8.0", "pyparsing", "requests", "tqdm", "xxhash", ] [project.optional-dependencies] graphgym=[ "protobuf<4.21", "pytorch-lightning", "yacs", ] modelhub=[ "huggingface_hub" ] benchmark=[ "matplotlib", "networkx", "pandas", "protobuf<4.21", "wandb", ] rag=[ "faiss-cpu", "json-repair", "langgraph", "openai", "pcst_fast", "PyYAML", "datasets", "transformers", "pandas", "sentencepiece", "accelerate", "torchmetrics", "peft", ] test=[ "onnx", "onnxruntime", "onnxscript", "pytest", "pytest-cov", ] dev=[ "ipython", "matplotlib-inline", "pre-commit", "torch_geometric[test]", ] full = [ "scipy", "scikit-learn", "ase", "captum<0.7.0", "graphviz", "h5py", "matplotlib", "networkx", "numba<0.60.0", "opt_einsum", "pandas", # See https://github.com/pgmpy/pgmpy/issues/2360. # "pgmpy", "pynndescent", "pytorch-memlab", "rdflib", "rdkit", "scikit-image", "statsmodels", "sympy", "tabulate", "torch_geometric[graphgym, modelhub]", "torchmetrics", "trimesh", ] [project.urls] homepage="https://pyg.org" documentation="https://pytorch-geometric.readthedocs.io" repository="https://github.com/pyg-team/pytorch_geometric.git" changelog="https://github.com/pyg-team/pytorch_geometric/blob/master/CHANGELOG.md" [tool.flit.module] name="torch_geometric" [tool.uv] exclude-newer = "7 days" exclude-newer-package = { torch = "2099-01-01", torchvision = "2099-01-01" } [tool.yapf] based_on_style = "pep8" split_before_named_assigns = false blank_line_before_nested_class_or_def = false [tool.mypy] files = ["torch_geometric"] install_types = true non_interactive = true ignore_missing_imports = true show_error_codes = true warn_redundant_casts = true warn_unused_configs = true warn_unused_ignores = true disallow_untyped_defs = true disallow_incomplete_defs = true [[tool.mypy.overrides]] ignore_errors = true module = [ "torch_geometric.data.*", "torch_geometric.sampler.*", "torch_geometric.loader.*", "torch_geometric.nn.*", "torch_geometric.explain.*", "torch_geometric.profile.*", "torch_geometric.contrib.*", "torch_geometric.graphgym.*", "torch_geometric.distributed.*", "torch_geometric.llm.*", ] [tool.isort] multi_line_output = 3 include_trailing_comma = true skip = [".gitignore", "__init__.py"] [tool.ruff] # https://docs.astral.sh/ruff/rules src = ["torch_geometric"] line-length = 80 indent-width = 4 target-version = "py310" [tool.ruff.lint] select = [ "B", # flake8-bugbear "D", # pydocstyle ] ignore = [ "B905", # TODO Don't ignore "zip with strict=False" "D100", # TODO Don't ignore "Missing docstring in public module" "D101", # TODO Don't ignore "Missing docstring in public class" "D102", # TODO Don't ignore "Missing docstring in public method" "D103", # TODO Don't ignore "Missing docstring in public function" "D104", # TODO Don't ignore "Missing docstring in public package" "D105", # Ignore "Missing docstring in magic method" "D107", # Ignore "Missing docstring in __init__" "D205", # Ignore "blank line required between summary line and description" ] [tool.ruff.format] quote-style = "single" [tool.ruff.lint.pydocstyle] convention = "google" [tool.pytest.ini_options] addopts = [ "--capture=no", "--color=yes", "-vv", "-m", "not rag and not dataset", ] filterwarnings = [ "ignore:distutils:DeprecationWarning", "ignore:'torch_geometric.contrib' contains experimental code:UserWarning", # Filter `torch` warnings: "ignore:The PyTorch API of nested tensors is in prototype stage:UserWarning", "ignore:scatter_reduce():UserWarning", "ignore:Sparse CSR tensor support is in beta state:UserWarning", "ignore:Sparse CSC tensor support is in beta state:UserWarning", "ignore:torch.distributed._sharded_tensor will be deprecated:DeprecationWarning", # Filter `torch.compile` warnings: "ignore:pkg_resources is deprecated as an API", "ignore:Deprecated call to `pkg_resources.declare_namespace", # Filter `captum` warnings: "ignore:Setting backward hooks on ReLU activations:UserWarning", "ignore:.*did not already require gradients, required_grads has been set automatically:UserWarning", # Filter `pytorch_lightning` warnings: "ignore:GPU available but not used:UserWarning", "error:.*torch_geometric.*:DeprecationWarning", # TODO(rishipuri98): Remove usage of `torch_geometric.distributed` from `torch_geometric.llm` "ignore:.*torch_geometric.distributed.*:DeprecationWarning", # Filter `torch.jit.*` deprication warnings: "ignore:.*torch.jit.*:DeprecationWarning", ] markers = [ "rag: mark test as RAG test", "dataset: mark test as requiring dataset download (only runs when explicitly requested with -m dataset)", ] [tool.coverage.run] source = ["torch_geometric"] omit = [ "torch_geometric/distributed/*", "torch_geometric/datasets/*", "torch_geometric/data/extract.py", "torch_geometric/nn/data_parallel.py", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "pass", "raise NotImplementedError", "register_parameter", "torch.cuda.is_available", ] [tool.setuptools] py-modules = []