mirror of
https://github.com/freqtrade/freqtrade.git
synced 2024-11-10 02:12:01 +00:00
209 lines
5.2 KiB
TOML
209 lines
5.2 KiB
TOML
[build-system]
|
|
requires = ["setuptools >= 64.0.0", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "freqtrade"
|
|
dynamic = ["version", "dependencies", "optional-dependencies"]
|
|
|
|
authors = [
|
|
{name = "Freqtrade Team"},
|
|
{name = "Freqtrade Team", email = "freqtrade@protonmail.com"},
|
|
]
|
|
|
|
description = "Freqtrade - Crypto Trading Bot"
|
|
readme = "README.md"
|
|
requires-python = ">=3.9"
|
|
license = {text = "GPLv3"}
|
|
# license = "GPLv3"
|
|
classifiers = [
|
|
"Environment :: Console",
|
|
"Intended Audience :: Science/Research",
|
|
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Operating System :: MacOS",
|
|
"Operating System :: Unix",
|
|
"Topic :: Office/Business :: Financial :: Investment",
|
|
]
|
|
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/freqtrade/freqtrade"
|
|
Documentation = "https://freqtrade.io"
|
|
"Bug Tracker" = "https://github.com/freqtrade/freqtrade/issues"
|
|
|
|
|
|
[project.scripts]
|
|
freqtrade = "freqtrade.main:main"
|
|
|
|
[tool.setuptools]
|
|
include-package-data = true
|
|
zip-safe = false
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["freqtrade*"]
|
|
exclude = ["tests", "tests.*", "user_data", "user_data*"]
|
|
namespaces = true
|
|
|
|
[tool.setuptools.dynamic]
|
|
version = {attr = "freqtrade.__version__"}
|
|
|
|
[tool.black]
|
|
line-length = 100
|
|
exclude = '''
|
|
(
|
|
/(
|
|
\.eggs # exclude a few common directories in the
|
|
| \.git # root of the project
|
|
| \.hg
|
|
| \.mypy_cache
|
|
| \.tox
|
|
| \.venv
|
|
| _build
|
|
| buck-out
|
|
| build
|
|
| dist
|
|
)/
|
|
# Exclude vendor directory
|
|
| vendor
|
|
)
|
|
'''
|
|
|
|
[tool.isort]
|
|
line_length = 100
|
|
profile = "black"
|
|
# multi_line_output=3
|
|
lines_after_imports=2
|
|
skip_glob = ["**/.env*", "**/env/*", "**/.venv/*", "**/docs/*", "**/user_data/*"]
|
|
known_first_party = ["freqtrade_client"]
|
|
|
|
[tool.pytest.ini_options]
|
|
log_format = "%(asctime)s %(levelname)s %(message)s"
|
|
log_date_format = "%Y-%m-%d %H:%M:%S"
|
|
|
|
asyncio_mode = "auto"
|
|
addopts = "--dist loadscope"
|
|
|
|
[tool.mypy]
|
|
ignore_missing_imports = true
|
|
namespace_packages = false
|
|
warn_unused_ignores = true
|
|
exclude = [
|
|
'^build_helpers\.py$',
|
|
'^ft_client/build/.*$',
|
|
]
|
|
plugins = [
|
|
"sqlalchemy.ext.mypy.plugin"
|
|
]
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = "tests.*"
|
|
ignore_errors = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
# Telegram does not use implicit_optional = false in the current version.
|
|
module = "telegram.*"
|
|
implicit_optional = true
|
|
|
|
[tool.pyright]
|
|
include = ["freqtrade"]
|
|
exclude = [
|
|
"**/__pycache__",
|
|
"build_helpers/*.py",
|
|
]
|
|
ignore = ["freqtrade/vendor/**"]
|
|
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
extend-exclude = [".env", ".venv"]
|
|
target-version = "py38"
|
|
|
|
[tool.ruff.lint]
|
|
# Exclude UP036 as it's causing the "exit if < 3.9" to fail.
|
|
extend-select = [
|
|
"C90", # mccabe
|
|
# "B", # bugbear
|
|
# "N", # pep8-naming
|
|
"F", # pyflakes
|
|
"E", # pycodestyle
|
|
"W", # pycodestyle
|
|
"UP", # pyupgrade
|
|
"I", # isort
|
|
"A", # flake8-builtins
|
|
"TID", # flake8-tidy-imports
|
|
# "EXE", # flake8-executable
|
|
# "C4", # flake8-comprehensions
|
|
"YTT", # flake8-2020
|
|
"S", # flake8-bandit
|
|
# "DTZ", # flake8-datetimez
|
|
# "RSE", # flake8-raise
|
|
# "TCH", # flake8-type-checking
|
|
"PTH", # flake8-use-pathlib
|
|
# "RUF", # ruff
|
|
"ASYNC", # flake8-async
|
|
"NPY", # numpy
|
|
]
|
|
|
|
extend-ignore = [
|
|
"E241", # Multiple spaces after comma
|
|
"E272", # Multiple spaces before keyword
|
|
"E221", # Multiple spaces before operator
|
|
"B007", # Loop control variable not used
|
|
"S603", # `subprocess` call: check for execution of untrusted input
|
|
"S607", # Starting a process with a partial executable path
|
|
"S608", # Possible SQL injection vector through string-based query construction
|
|
"NPY002", # Numpy legacy random generator
|
|
]
|
|
|
|
[tool.ruff.lint.mccabe]
|
|
max-complexity = 12
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"freqtrade/freqai/**/*.py" = [
|
|
"S311" # Standard pseudo-random generators are not suitable for cryptographic purposes
|
|
]
|
|
"tests/**/*.py" = [
|
|
"S101", # allow assert in tests
|
|
"S104", # Possible binding to all interfaces
|
|
"S311", # Standard pseudo-random generators are not suitable for cryptographic purposes
|
|
"S105", # Possible hardcoded password assigned to: "secret"
|
|
"S106", # Possible hardcoded password assigned to argument: "token_type"
|
|
"S110", # `try`-`except`-`pass` detected, consider logging the exception
|
|
]
|
|
|
|
"ft_client/test_client/**/*.py" = [
|
|
"S101", # allow assert in tests
|
|
]
|
|
|
|
[tool.ruff.lint.flake8-bugbear]
|
|
# Allow default arguments like, e.g., `data: List[str] = fastapi.Query(None)`.
|
|
extend-immutable-calls = ["fastapi.Depends", "fastapi.Query"]
|
|
|
|
[tool.ruff.lint.isort]
|
|
lines-after-imports = 2
|
|
known-first-party = ["freqtrade_client"]
|
|
|
|
[tool.flake8]
|
|
# Default from https://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-ignore
|
|
# minus E226
|
|
ignore = ["E121","E123","E126","E24", "E203","E704","W503","W504"]
|
|
max-line-length = 100
|
|
max-complexity = 12
|
|
exclude = [
|
|
".git",
|
|
"__pycache__",
|
|
".eggs",
|
|
"user_data",
|
|
".venv",
|
|
".env",
|
|
]
|
|
|
|
[tool.codespell]
|
|
ignore-words-list = "coo,fo,strat,zar,selectin"
|
|
skip="*.svg,./user_data,freqtrade/rpc/api_server/ui/installed,freqtrade/exchange/*.json"
|