[build-system]
requires = ["flit_core >=3.4,<4"]
build-backend = "flit_core.buildapi"

[project]
name = "myst-parser"
dynamic = ["version", "description"]
authors = [{name = "Chris Sewell", email = "chrisj_sewell@hotmail.com"}]
readme = "README.md"
license = {file = "LICENSE"}
classifiers = [
    "Development Status :: 4 - Beta",
    "Framework :: Sphinx :: Extension",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.7",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: Implementation :: CPython",
    "Programming Language :: Python :: Implementation :: PyPy",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Text Processing :: Markup",
]
keywords = [
    "markdown",
    "lexer",
    "parser",
    "development",
    "docutils",
    "sphinx",
]
requires-python = ">=3.7"
dependencies = [
    "docutils>=0.15,<0.20",
    "jinja2", # required for substitutions, but let sphinx choose version
    "markdown-it-py>=1.0.0,<3.0.0",
    "mdit-py-plugins~=0.3.1",
    "pyyaml",
    "sphinx>=4,<6",
    "typing-extensions",
]

[project.urls]
Homepage = "https://github.com/executablebooks/MyST-Parser"
Documentation = "https://myst-parser.readthedocs.io"

[project.optional-dependencies]
code_style = ["pre-commit~=2.12"]
# for use with "linkify" extension
linkify = ["linkify-it-py~=1.0"]
# Note: This is only required for internal use
rtd = [
    "ipython",
    "sphinx-book-theme",
    "sphinx-design",
    "sphinxext-rediraffe~=0.2.7",
    "sphinxcontrib.mermaid~=0.7.1",
    "sphinxext-opengraph~=0.6.3",
]
testing = [
    "beautifulsoup4",
    "coverage[toml]",
    "pytest>=6,<7",
    "pytest-cov",
    "pytest-regressions",
    "pytest-param-files~=0.3.4",
    "sphinx-pytest",
    "sphinx<5.2",  # TODO 5.2 changes the attributes of desc/desc_signature nodes
]

[project.scripts]
myst-anchors = "myst_parser.cli:print_anchors"
myst-docutils-html = "myst_parser.parsers.docutils_:cli_html"
myst-docutils-html5 = "myst_parser.parsers.docutils_:cli_html5"
myst-docutils-latex = "myst_parser.parsers.docutils_:cli_latex"
myst-docutils-xml = "myst_parser.parsers.docutils_:cli_xml"
myst-docutils-pseudoxml = "myst_parser.parsers.docutils_:cli_pseudoxml"

[tool.flit.module]
name = "myst_parser"

[tool.flit.sdist]
exclude = [
    "docs/",
    "tests/",
]

[tool.isort]
profile = "black"
known_first_party = ["myst_parser", "tests"]
known_third_party = ["docutils", "markdown_it", "sphinx"]
# Group first party and local folder imports together
no_lines_before = "LOCALFOLDER"

[tool.mypy]
show_error_codes = true
check_untyped_defs = true
strict_equality = true
no_implicit_optional = true
warn_unused_ignores = true

[[tool.mypy.overrides]]
module = ["docutils.*", "yaml.*"]
ignore_missing_imports = true

[tool.coverage.run]
omit = ["*/_docs.py"]
