[build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.poetry] name = "textoutpc" version = "0.3" description = "textout() equivalent from Planète Casio" keywords = ["planète casio", "textout", "bbcode", "translator", "parser"] readme = "README.rst" homepage = "https://textout.touhey.pro/" repository = "https://forge.touhey.org/pc/textout.git" authors = ["Thomas Touhey "] classifiers = [ "Development Status :: 2 - Pre-Alpha", "License :: OSI Approved :: MIT License", "Natural Language :: French", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Intended Audience :: Developers", "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries", "Topic :: Text Processing :: Markup :: HTML" ] [tool.poetry.dependencies] python = "^3.8" cssmin = "^0.2.0" docutils = "^0.20.1" flask = "^3.0.0" flask-assets = "^2.1.0" jsmin = "^3.0.1" regex = "^2023.10.3" scss = "^0.8.73" thcolor = "^0.4" typing-extensions = "^4.8.0" [tool.poetry.group.dev.dependencies] pre-commit = "^3.3.3" pytest = "^7.4.3" pytest-cov = "^4.1.0" sphinx-autobuild = "^2021.3.14" [tool.poetry.group.deployment.dependencies] gunicorn = "^21.2.0" [tool.poetry.group.docs.dependencies] furo = "^2023.9.10" sphinx = "^7.1.2" sphinxcontrib-mermaid = "^0.9.2" toml = "^0.10.2" [tool.black] target_version = ['py38', 'py39', 'py310', 'py311'] line-length = 79 [tool.commitizen] name = "cz_conventional_commits" tag_format = "$version" update_changelog_on_bump = true version = "0.1.4" version_files = [ "pyproject.toml:version", ] [tool.coverage.report] exclude_lines = [ "@abstractmethod", "pragma: no cover" ] [tool.flake8] application-import-names = "textoutpc" ignore = [ "ANN002", # No type annotations for *args "ANN003", # No type annotations for **kwargs "ANN101", # No type annotations for self in method "ANN102", # No type annotations for cls in classmethod "ANN204", # No return type for special method "ANN401", # We allow typing.Any in certain annoying cases "D105", # No need for docstrings in magic __methods__ "D107", # No need for docstrings in __init__ "E203", # flake8 and black disagree on this. "FI58", # We use future annotations. "S410", # We use lxml for parsing HTML, so we're fine. "S413", # We use pycryptodome, not pycrypto "W503", # Line breaks are before binary operators, not after ] exclude = ["try*.py"] per-file-ignores = [ # ANN001: We use fixtures for most callables in tests. # ANN201: No type annotations for return values for test functions. # D400,D205: First sentences in test docstrings can be longer than a line. # S101: Yes, we use assert in tests run by pytest, and it's by design. "tests/*:ANN001,ANN201,D400,D205,S101" ] rst-roles = [ "py:class", "py:attr", "py:data", "py:meth", "py:exc", "py:mod", "ref", ] rst-directives = ["py:data", "doctest"] [tool.isort] add_imports = ["from __future__ import annotations"] ensure_newline_before_comments = true force_grid_wrap = 0 force_sort_within_sections = true group_by_package = true include_trailing_comma = true line_length = 79 lines_after_imports = 2 multi_line_output = 3 no_inline_sort = true profile = "black" py_version = 38 use_parentheses = true combine_as_imports = true [tool.mypy] ignore_missing_imports = true mypy_path = "." warn_unused_ignores = true show_error_codes = true plugins = ["sqlalchemy.ext.mypy.plugin"] [tool.pytest.ini_options] addopts = """ --cov=textoutpc --cov-report term --doctest-modules --ignore=docs --ignore=migrations """