[tool.poetry]
name = "gridstatus"
version = "0.29.1"
readme = "README.md"
description = "API to access energy data"
classifiers = [
    "Programming Language :: Python",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
]
authors = [
    "Max Kanter <kmax12@gmail.com>"
]
maintainers = [
    "Max Kanter <kmax12@gmail.com>"
]
keywords = ["energy", "independent system operator"]
license = "LICENSE"

[tool.poetry.urls]
"Source Code" = "https://github.com/gridstatus/gridstatus/"
"Changes" = "https://github.com/gridstatus/gridstatus/blob/main/CHANGELOG.md"
"Issue Tracker" = "https://github.com/gridstatus/gridstatus/issues"

[tool.poetry.dependencies]
python = "^3.9"
requests = "^2.32.2"
pandas = "^2.2.1"
beautifulsoup4 = "^4.8.13"
tabulate = "^0.9.0"
tqdm = "^4.64.1"
openpyxl = "^3.1.0"
tabula-py = "^2.5.1"
lxml = "^5.3.0"
plotly = "^5.11.0"
termcolor = "^2.2.0"
xlrd = "^2.0.1"
xmltodict = "^0.14.2"

# Below pins are for Dependabot security updates
zipp = "^3.19.1"
certifi = "^2024.7.4"
setuptools = "^70.0.0"
cryptography = "^43.0.1"
urllib3 = "^2.2.2"
tornado = "^6.4.1"


[tool.poetry.group.dev.dependencies]
pytest = "^7.1.2"
pytest-xdist = "^3.0.2"
pytest-rerunfailures = "^10.3"
pytest-cov = "^4.0.0"
ruff = "^0.3.4"
pre-commit = "^2.21.0"
ipython = "^8.4.0"
jupyter = "^1.0.0"
matplotlib = "^3.5.2"
myst-nb = "^1.0.0rc0"
sphinx = "^6.2.1"
sphinx-book-theme = "^1.0.1"
sphinx-copybutton = "0.5.2"
sphinx-inline-tabs = "^2022.1.2b11"
sphinx_design = "0.5.0"
sphinxext-opengraph = "0.9.1"
sphinx-thebe = "0.3.0"
sphinx_togglebutton = "^0.3.2"
sphinx-favicon = "1.0.1"
sphinx-autoapi = "^3.0.0"
kaleido = "0.2.1"
poetry-dotenv-plugin = "^0.2.0"
# Below pins are for Dependabot security updates
notebook = "^7.2.2"
jupyterlab = "^4.2.5"
mypy = "^1.8.0"
time-machine = "^2.16.0"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

[tool.pytest.ini_options]
testpaths = ["gridstatus/tests/*"]
markers = [
    "slow: marks tests as slow (deselect with '-m \"not slow\"')",
    "integration: marks tests as integration tests that pull from an external API (deselect with '-m \"not integration\"')",
]

[tool.ruff]
line-length = 88
src = ["gridstatus"]

[tool.ruff.lint]
ignore = ["E501"]
select = ["F", "E", "W", "Q", "I001"]

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

[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401", "E402", "F403", "F405", "E501", "I001"]

[tool.ruff.format]
quote-style = "double"

[tool.coverage.run]
source = ["gridstatus"]

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

[tool.mypy]
ignore_missing_imports = true
strict = true
