[tool.poetry]
name = "python-saml"
version = "2.13.0"
description = "Saml Python Toolkit. Add SAML support to your Python software using this library"
license = "Apache-2.0"
authors = ["SAML-Toolkits <contact@iamdigitalservices.com>"]
maintainers = ["Sixto Martin <sixto.martin.garcia@gmail.com>"]
readme = "README.md"
homepage = "https://saml.info"
repository = "https://github.com/SAML-Toolkits/python-saml"
keywords = [
    "saml",
    "saml2",
    "sso",
    "xmlsec",
    "federation",
    "identity",
]
classifiers = [
    "Topic :: Software Development :: Build Tools",
    "Topic :: Software Development :: Libraries :: Python Modules",
]
packages = [
    { include = "onelogin", from = "src" },
    { include = "onelogin/saml2", from = "src" },
]

include = [
    { path = "src/onelogin/saml2/schemas"},
    { path = "tests", format = "sdist" }
]

[tool.poetry.urls]
"Bug Tracker" = "https://github.com/SAML-Toolkits/python-saml/issues"

[tool.poetry.dependencies]
python = "2.7"
lxml = ">=4.6.5, !=4.7.0"
"dm.xmlsec.binding" = "1.3.7"
isodate = ">=0.6.1"
defusedxml = ">=0.7.1"

#[tool.poetry.group.dev]
#optional = true

#[tool.poetry.group.dev.dependencies]
#black = "*"
#isort = {version = "^5.10.1", extras = ["pyproject"]}
flake8 = { version = ">=3.6.0, <=4.0", optional = true}
#Flake8-pyproject = "^1.1.0.post0"
#flake8-bugbear = "^22.8.23"
#flake8-logging-format = "^0.7.5"
#ipdb = "^0.13.9"

#[tool.poetry.group.test.dependencies]
freezegun= { version = ">=0.3.11, <=0.4", optional = true}
pytest = { version = ">=4.6.11", optional = true}
coverage = { version = ">=4.5.0, <5.0", optional = true}
#pylint = ">=1.9.4"

[tool.poetry.extras]
test = ["flake8", "freezegun", "pytest", "coverage"]

#[tool.poetry.group.test]
#optional = true

#[tool.poetry.group.coverage]
#optional = true

#[tool.poetry.group.coverage.dependencies]
#coverage = ">=4.5.2"
#pytest-cov = "*"

#[tool.poetry.group.docs]
#optional = true

#[tool.poetry.group.docs.dependencies]
#sphinx = "*"

[build-system]
requires = [
  "poetry>=1.1.15",
  "setuptools >= 40.1.0",
  "wheel"
]
build-backend = "poetry.core.masonry.api"

[tool.pytest.ini_options]
minversion = "4.6.11"
addopts = "-ra -vvv"
testpaths = [
    "tests",
]
pythonpath = [
    "tests",
]

[tool.coverage.run]
branch = true
source = ["src/onelogin/saml2"]

[tool.coverage.report]
ignore_errors = true
exclude_lines = [
  "pragma: no cover",
  "def __repr__",
  "def __str__",
  "raise AssertionError",
  "raise NotImplementedError",
  "if __name__ == .__main__.:",
  "if TYPE_CHECKING:",
  "if typing.TYPE_CHECKING:",
]

[tool.coverage.html]
directory = "cov_html"

[tool.flake8]
max-line-length = 210
max-complexity = 22
count = true
show-source = true
statistics = true
disable-noqa = false
# 'ignore' defaults to: E121,E123,E126,E226,E24,E704,W503,W504
extend-ignore = [
    'B904',
    'B006',
    'B950',
    'B017',
    'C901',
    'E501',
    'E731',
]
per-file-ignores = [
    '__init__.py:F401',
]
# 'select' defaults to: E,F,W,C90
extend-select = [
    # * Default warnings reported by flake8-bugbear (B) -
    #   https://github.com/PyCQA/flake8-bugbear#list-of-warnings
    'B',
    # * The B950 flake8-bugbear opinionated warnings -
    #   https://github.com/PyCQA/flake8-bugbear#opinionated-warnings
    'B9',
]
extend-exclude = [
    '.github', '.gitlab',
    '.Python', '.*.pyc', '.*.pyo', '.*.pyd', '.*.py.class', '*.egg-info',
    'venv*', '.venv*', '.*_cache',
    'lib', 'lib64', '.*.so',
    'build', 'dist', 'sdist', 'wheels',
]

[tool.black]
line-length = 200
extend-exclude = '''
# A regex preceded with ^/ will apply only to files and directories
# in the root of the project.
(
    \.pytest_cache
)
'''

[tool.isort]
profile = 'black'
# The 'black' profile means:
#   multi_line_output = 3
#   include_trailing_comma = true
#   force_grid_wrap = 0
#   use_parentheses = true
#   ensure_newline_before_comments = true
#   line_length = 88
line_length = 200  # override black provile line_length
force_single_line = true  # override black profile multi_line_output
star_first = true
group_by_package = true
force_sort_within_sections = true
lines_after_imports = 2
honor_noqa = true
atomic = true
ignore_comments = true
skip_gitignore = true
src_paths = [
    'src',
    'tests',
]
