|
|
[tool.poetry] |
|
|
name = "folio" |
|
|
version = "0.1.0" |
|
|
description = "Portfolio analysis and visualization tools" |
|
|
authors = ["Dong Ming <d3ming@gmail.com>"] |
|
|
readme = "README.md" |
|
|
packages = [{include = "src"}] |
|
|
|
|
|
[tool.poetry.dependencies] |
|
|
python = "^3.9" |
|
|
pandas = "2.2.1" |
|
|
numpy = "1.26.4" |
|
|
quantlib = ">=1.30" |
|
|
requests = ">=2.32.0" |
|
|
pyyaml = "6.0.1" |
|
|
yfinance = ">=0.2.37" |
|
|
dash = ">=2.14.2" |
|
|
dash-bootstrap-components = ">=1.5.0" |
|
|
dash-bootstrap-templates = ">=1.1.1" |
|
|
gunicorn = ">=21.2.0" |
|
|
google-generativeai = ">=0.3.0" |
|
|
|
|
|
|
|
|
|
|
|
[tool.poetry.group.dev.dependencies] |
|
|
ruff = "^0.11.7" |
|
|
pytest = "^8.3.5" |
|
|
pytest-mock = "^3.14.0" |
|
|
rich = ">=13.9.0" |
|
|
prompt-toolkit = ">=3.0.43" |
|
|
pre-commit = "^4.2.0" |
|
|
|
|
|
[build-system] |
|
|
requires = ["poetry-core"] |
|
|
build-backend = "poetry.core.masonry.api" |
|
|
|
|
|
[tool.mypy] |
|
|
python_version = "3.11" |
|
|
warn_return_any = true |
|
|
warn_unused_configs = true |
|
|
disallow_untyped_defs = true |
|
|
disallow_incomplete_defs = true |
|
|
check_untyped_defs = true |
|
|
disallow_untyped_decorators = true |
|
|
no_implicit_optional = true |
|
|
warn_redundant_casts = true |
|
|
warn_unused_ignores = true |
|
|
warn_no_return = true |
|
|
warn_unreachable = true |
|
|
strict_optional = true |
|
|
plugins = ["numpy.typing.mypy_plugin"] |
|
|
|
|
|
[[tool.mypy.overrides]] |
|
|
module = "dash.*" |
|
|
ignore_missing_imports = true |
|
|
|
|
|
[[tool.mypy.overrides]] |
|
|
module = "pandas.*" |
|
|
ignore_missing_imports = true |
|
|
|
|
|
[tool.ruff] |
|
|
|
|
|
line-length = 88 |
|
|
target-version = "py311" |
|
|
|
|
|
[tool.ruff.lint] |
|
|
|
|
|
select = [ |
|
|
"E", |
|
|
"F", |
|
|
"I", |
|
|
"N", |
|
|
"UP", |
|
|
"PL", |
|
|
"RUF", |
|
|
"W", |
|
|
"F401", |
|
|
"F841", |
|
|
"F821", |
|
|
"F811", |
|
|
"F822", |
|
|
"PLC0414", |
|
|
"PLE0101", |
|
|
"PLE0604", |
|
|
"PLE0605", |
|
|
"A", |
|
|
"ARG001", |
|
|
"ARG002", |
|
|
"B", |
|
|
"ERA", |
|
|
"F", |
|
|
"T201", |
|
|
] |
|
|
|
|
|
|
|
|
ignore = [ |
|
|
"E501", |
|
|
"N803", |
|
|
"N806", |
|
|
"PLR0913", |
|
|
"PLR0912", |
|
|
"PLR0915", |
|
|
"PLR2004", |
|
|
] |
|
|
|
|
|
|
|
|
fixable = ["ALL"] |
|
|
|
|
|
|
|
|
exclude = [ |
|
|
".git", |
|
|
".venv", |
|
|
"venv", |
|
|
"__pycache__", |
|
|
"build", |
|
|
"dist", |
|
|
"mlruns", |
|
|
".pytest_cache", |
|
|
".archive", |
|
|
] |
|
|
|
|
|
|
|
|
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" |
|
|
|
|
|
[tool.ruff.lint.per-file-ignores] |
|
|
|
|
|
"__init__.py" = ["F401"] |
|
|
|
|
|
[tool.ruff.lint.isort] |
|
|
known-first-party = ["src"] |
|
|
|