diff --git a/md2pdf/cli.py b/md2pdf/cli.py index 47d5fdc..058e243 100644 --- a/md2pdf/cli.py +++ b/md2pdf/cli.py @@ -6,7 +6,7 @@ import click -from md2pdf.core import md2pdf +from .core import md2pdf logger = logging.getLogger(__name__) diff --git a/md2pdf/conf.py b/md2pdf/conf.py index 581665c..282c611 100644 --- a/md2pdf/conf.py +++ b/md2pdf/conf.py @@ -1,3 +1,8 @@ """Configuration for md2pdf.""" -MARKDOWN_EXTRAS: list = ["cuddled-lists", "tables", "footnotes"] +MARKDOWN_EXTRAS: list = [ + "markdown.extensions.tables", + "pymdownx.magiclink", + "pymdownx.betterem", + "pymdownx.superfences", +] diff --git a/md2pdf/core.py b/md2pdf/core.py index 2cdeb8f..b5c8776 100644 --- a/md2pdf/core.py +++ b/md2pdf/core.py @@ -5,7 +5,7 @@ import frontmatter from jinja2 import Template -from markdown2 import markdown +from markdown import markdown from weasyprint import CSS, HTML from .conf import MARKDOWN_EXTRAS @@ -57,7 +57,7 @@ def md2pdf( # Render the template raw = Template(template).render(context) - raw_html = markdown(raw, extras=extras) + raw_html = markdown(raw, extensions=extras) # Weasyprint HTML object if base_url is None: diff --git a/poetry.lock b/poetry.lock index 5136bc2..afa65b6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -411,6 +411,25 @@ chardet = ["chardet (>=2.2)"] genshi = ["genshi"] lxml = ["lxml"] +[[package]] +name = "importlib-metadata" +version = "7.0.1" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -440,20 +459,22 @@ MarkupSafe = ">=2.0" i18n = ["Babel (>=2.7)"] [[package]] -name = "markdown2" -version = "2.4.12" -description = "A fast and complete Python implementation of Markdown" +name = "markdown" +version = "3.5.2" +description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.5, <4" +python-versions = ">=3.8" files = [ - {file = "markdown2-2.4.12-py2.py3-none-any.whl", hash = "sha256:98f47591006f0ace0644cbece03fed6f3845513286f6c6e9f8bcf6a575174e2c"}, - {file = "markdown2-2.4.12.tar.gz", hash = "sha256:1bc8692696954d597778e0e25713c14ca56d87992070dedd95c17eddaf709204"}, + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, ] +[package.dependencies] +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} + [package.extras] -all = ["pygments (>=2.7.3)", "wavedrom"] -code-syntax-highlighting = ["pygments (>=2.7.3)"] -wavedrom = ["wavedrom"] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" @@ -676,6 +697,24 @@ files = [ plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] +[[package]] +name = "pymdown-extensions" +version = "10.7" +description = "Extension pack for Python Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pymdown_extensions-10.7-py3-none-any.whl", hash = "sha256:6ca215bc57bc12bf32b414887a68b810637d039124ed9b2e5bd3325cbb2c050c"}, + {file = "pymdown_extensions-10.7.tar.gz", hash = "sha256:c0d64d5cf62566f59e6b2b690a4095c931107c250a8c8e1351c1de5f6b036deb"}, +] + +[package.dependencies] +markdown = ">=3.5" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.12)"] + [[package]] name = "pyphen" version = "0.14.0" @@ -911,6 +950,21 @@ files = [ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] +[[package]] +name = "zipp" +version = "3.17.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + [[package]] name = "zopfli" version = "0.2.3" @@ -987,4 +1041,4 @@ test = ["pytest"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "b357553eade0ab7208b7243e3f176488d35e065d230490cf7b9d17d4ee2eb5a7" +content-hash = "aa093dd4d5487cc82d3c8ded48e4f792d28d942ad6bf25efe6a577eb8f995c5d" diff --git a/pyproject.toml b/pyproject.toml index b49e529..8730afe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,11 +41,12 @@ md2pdf = "md2pdf.__main__:cli.cli" [tool.poetry.dependencies] python = "^3.8" weasyprint = "^60.2" -markdown2 = "^2.4.12" click = "^8.1.7" pygments = "^2.17.2" python-frontmatter = "^1.1.0" jinja2 = "^3.1.3" +markdown = "^3.5.2" +pymdown-extensions = "^10.7" [tool.poetry.group.dev.dependencies] pytest = "^7.4.4"