[tool.poetry] name = "chat_gpt_bot" version = "0.8.0" description = "Bot to integrated with chat-gpt" authors = ["Dmitry Afanasyev "] [tool.poetry.dependencies] python = "^3.11" fastapi = "^0.103.1" python-telegram-bot = {version = "^20.5", extras=["ext"]} python-dotenv = "^1.0" httpx = "^0.24" loguru = "^0.7" pydantic = "^2.4" pydantic-settings = "^2.0.3" gunicorn = "^21.2" uvicorn = "^0.23" wheel = "^0.41" orjson = "^3.9" sentry-sdk = "^1.31.0" SpeechRecognition = "^3.8" pydub = "^0.25" greenlet = "^2.0.2" [tool.poetry.dev-dependencies] ipython = "^8.14" factory-boy = "^3.3" Faker = "^19" safety = "^2.3.5" pip-audit = "^2.6" yamllint = "^1.32" tomlkit = "^0.12" bandit = "^1.7" pyupgrade = "^3.10" isort = "^5.12" black = "^23.3" mypy = "^1.5" types-PyMySQL = "^1.0" types-python-dateutil = "^2.8" pytest = "^7.4" pytest-asyncio = "^0.21" pytest-deadfixtures = "^2.2" pytest-repeat = "^0.9" pytest-testmon = "^2.0" pytest-mock = "^3.11" pytest-cov = "^4.1" pytest-timeout = "^2.1" pytest-timeouts = "^1.2" pytest-sugar = "^0.9" pytest-clarity = "^1.0" pytest-env = "^1.0.1" nest-asyncio = "^1.5" pytest-html = "^4.0" pytest-randomly = "^3.15" pytest-split = "^0.8" pytest-freezegun = "^0.4" pytest-socket = "^0.6" assertpy = "^1.1" coverage = "^7.3" autoflake = "^2.2" flake8 = "^6.1" flake8-logging-format = "^0.9" flake8-comprehensions = "^3.14" flake8-eradicate = "^1.5" flake8-deprecated = "^2.0" flake8-pytest-style = "^1.7" flake8-aaa = "^0.16" flake8-bugbear = "^23.7" flake8-warnings = "^0.4" flake8-debugger = "^4.1" flake8-annotations-complexity = "^0.0.8" flake8-fixme = "^1.1" flake8-simplify = "^0.20" flake8-variables-names = "^0.0.6" flake8-bandit = "^4.1" flake8-tidy-imports = "^4.10" flake8-noqa = "^1.3" flake8-useless-assert = "^0.4" flake8-mock = "^0.4" flake8-comments = "^0.1" flake8-newspaper-style = "^0.4" Flake8-pyproject = "^1.2.3" [tool.flake8] inline-quotes = "double" max-line-length = 120 max-expression-complexity = 10 max-complexity = 10 ban-relative-imports = true nested-classes-whitelist = ["Config", "Meta"] pytest-parametrize-names-type = "csv" exclude = [ "chat_gpt_microservice/*", ".cache/*", ".pytest_cache/*", "*/__pycache__/*", ] ignore = [ # use isort instead "I", # use black style "E203", "W", "G004", "VNE003" ] per-file-ignores = [ # too complex queries "bot_microservice/tests/*: S101", "bot_microservice/tests/integration/bot/conftest.py: NEW100", "bot_microservice/settings/config.py: S104" ] [tool.autoflake] in-place = true ignore-init-module-imports = true remove-unused-variables = true remove-all-unused-imports = true remove-duplicate-keys = true [tool.isort] profile = "black" multi_line_output = 3 src_paths = ["bot_microservice",] combine_as_imports = true [tool.mypy] allow_redefinition = false namespace_packages = true check_untyped_defs = true disallow_untyped_decorators = false disallow_any_explicit = false disallow_any_generics = true disallow_untyped_calls = true disallow_untyped_defs = true ignore_errors = false ignore_missing_imports = true implicit_reexport = false local_partial_types = true strict_optional = true strict_equality = true show_error_codes = true no_implicit_optional = true warn_unused_ignores = true warn_redundant_casts = true warn_unused_configs = true warn_unreachable = true warn_no_return = true exclude = [ "chat_gpt_microservice" ] [tool.black] line-length = 120 target-version = ['py311'] [tool.coverage.run] relative_files = true concurrency = ["greenlet", "thread"] [tool.coverage.report] sort = "cover" skip_covered = true [tool.pytest.ini_options] minversion = "7.0" testpaths = "tests" python_files = [ # tests declarations "test_*.py", # base test scenarios and helpers for tests "support.py", ] filterwarnings = [ "error", "ignore::DeprecationWarning", "ignore:_SixMetaPathImporter.*not found:ImportWarning", "ignore::telegram.warnings.PTBUserWarning" ] addopts = ''' --disable-socket --allow-unix-socket --allow-hosts=::1,127.0.0.1 --strict-markers --tb=short --cov=app --cov=settings --cov=tests --cov-branch --cov-fail-under=90 --cov-config=.coveragerc --cov-context=test --no-cov '''