# Based on documentation from 
# https://packaging.python.org/en/latest/guides/writing-pyproject-toml/
# and https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html

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

[project]
name = "planarity"

authors = [
    {name = "John M. Boyer", email = "john.boyer.phd@gmail.com"},
    {name = "Wanda B. K. Boyer", email = "wbkboyer@gmail.com"},
    {name = "Aric Hagberg", email = "aric.hagberg@gmail.com"},
]

# NOTE: Only one of authors and maintainers is required, per
# https://packaging.python.org/en/latest/specifications/pyproject-toml
# However, also having maintainers allows a different first maintainer
# to appear, since only the first entry shows on the package page 

maintainers = [
    {name = "Wanda B. K. Boyer", email = "wbkboyer@gmail.com"},
    {name = "John M. Boyer", email = "john.boyer.phd@gmail.com"},
    {name = "Aric Hagberg", email = "aric.hagberg@gmail.com"},
]

description = "Python Wrapper for the Edge Addition Planarity Suite and Graph Library"
readme = "README.md"
requires-python = ">=3.10"
keywords = [
    "Graph Theory",
    "Mathematics",
    "Discrete Mathematics",
    "Graph Algorithms",
    "graph",
    "algorithms",
    "math",
]
license = "BSD-3-Clause"
license-files = ["LICEN[CS]E*"]
classifiers = [
    "Development Status :: 5 - Production/Stable",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "Intended Audience :: Education",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3",
    "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",
    "Programming Language :: C",
    "Topic :: Software Development :: Libraries",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Scientific/Engineering",
    "Topic :: Scientific/Engineering :: Artificial Intelligence",
    "Topic :: Scientific/Engineering :: Bio-Informatics",
    "Topic :: Scientific/Engineering :: Chemistry",
    "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
    "Topic :: Scientific/Engineering :: Information Analysis",
    "Topic :: Scientific/Engineering :: Mathematics",
    "Topic :: Scientific/Engineering :: Physics",
    "Topic :: Scientific/Engineering :: Visualization"
]
dynamic = ["version"]

[tool.setuptools]
include-package-data = false
packages = [
    "planarity",
    "planarity.classic",
    "planarity.full",
]

# NOTE: This enables dynamic metadata, e.g. versioning, to be computed during 
# the build process; see:
# https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html#dynamic-metadata
# NOTE: In the future, we could automatically generate the version number by
# configuring setuptools-scm, but presently declaring a variable at the package
# level is simplest.
[tool.setuptools.dynamic]
version = {attr = "planarity.__version__"}

[project.urls]
Homepage = "https://github.com/graph-algorithms/planarity"
Documentation = "https://github.com/graph-algorithms/planarity/wiki"
Repository = "https://github.com/graph-algorithms/planarity.git"
Issues = "https://github.com/graph-algorithms/planarity/issues"
Download = "https://pypi.org/project/planarity/"
