[project]
name = "earningscall-development"
version = "1.0.0"
description = "EarningsCall Development Dependencies"
readme = "README.md"
authors = [
    {name = "EarningsCall", email = "dev@earningscall.biz"},
]
requires-python = ">= 3.8"
dependencies = [
  "pytest",
  "pytest-cov",
]
license = { file = "LICENSE" }
keywords = [
]
classifiers = [
    # How mature is this project? Common values are
    #   3 - Alpha
    #   4 - Beta
    #   5 - Production/Stable
    "Development Status :: 3 - Alpha",

    # Indicate who your project is intended for
    "Intended Audience :: Developers",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Typing :: Typed",

    # Pick your license as you wish (see also "license" above)
    "License :: OSI Approved :: MIT License",

    # Specify the Python versions you support here.
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
]

[project.urls]
Homepage = "https://earningscall.biz"
Documentation = "https://github.com/EarningsCall/earningscall-python"
Repository = "https://github.com/EarningsCall/earningscall-python"
Issues = "https://github.com/EarningsCall/earningscall-python/issues"
Source = "https://github.com/EarningsCall/earningscall-python"
Changelog = "https://github.com/EarningsCall/earningscall-python/blob/master/CHANGELOG.md"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"


[tool.hatch.metadata]
allow-direct-references = true


[tool.hatch.build.targets.wheel]
packages = ["earningscall"]

[tool.hatch.version]
path = "hatch_init/__about__.py"

[tool.hatch.envs.default]
dependencies = [
    "pytest",
    "pytest-cov",
]
[tool.hatch.envs.default.scripts]
cov = "pytest --cov-report=term-missing --cov-config=pyproject.toml --cov=hatch_init --cov=tests"
no-cov = "cov --no-cov"

[[tool.hatch.envs.test.matrix]]
python = ["3.8", "3.9", "3.10", "3.11", "3.12"]


[tool.hatch.build.targets.wheel.hooks.mypyc]
enable-by-default = false
dependencies = ["hatch-mypyc>=0.14.1"]
require-runtime-dependencies = true
mypy-args = [
  "--no-warn-unused-ignores",
]

[tool.mypy]
disallow_untyped_defs = false
follow_imports = "normal"
ignore_missing_imports = true
pretty = true
show_column_numbers = true
warn_no_return = false
warn_unused_ignores = true


[tool.black]
target-version = ["py37"]
line-length = 120
skip-string-normalization = true

[tool.ruff]
target-version = "py37"

[tool.ruff.lint]
ignore = [
  # Allow non-abstract empty methods in abstract base classes
  "B027",
  # Allow boolean positional values in function calls, like `dict.get(... True)`
  "FBT003",
  # Ignore checks for possible passwords
  # Ignore complexity
  "C901", "PLR0911", "PLR0912", "PLR0913", "PLR0915",
  "PLC1901", # empty string comparisons
  "PLW2901", # `for` loop variable overwritten
  "SIM114", # Combine `if` branches using logical `or` operator
]
unfixable = [
  # Don't touch unused imports
  "F401",
]

[tool.ruff.lint.flake8-quotes]
inline-quotes = "single"

[tool.ruff.lint.isort]
known-first-party = ["earningscall"]


[tool.ruff.lint.flake8-tidy-imports]
ban-relative-imports = "all"

[tool.ruff.lint.per-file-ignores]
# Tests can use relative imports and assertions
"tests/**/*" = ["TID252", "S101"]

[tool.coverage.run]
source_pkgs = ["earningscall", "tests"]
branch = true
parallel = true
omit = []

[tool.coverage.paths]
earningscall = ["earningscall"]
tests = ["tests"]

[tool.coverage.report]
exclude_lines = [
    "no cov",
    "if __name__ == .__main__.:",
    "if TYPE_CHECKING:",
]

[tool.pytest.ini_options]
log_level = "DEBUG"
