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

[project]
name = "tg-ws-proxy"
dynamic=["version"]

description = "Telegram Desktop WebSocket Bridge Proxy"
readme = "docs/README.md"
requires-python = ">=3.8"

license = { name = "MIT", file = "LICENSE" }

authors = [
    { name = "Flowseal" }
]

keywords = [
    "telegram",
    "tdesktop",
    "proxy",
    "bypass",
    "websocket",
    "mtproto",
]
classifiers = [
  "Development Status :: 5 - Production/Stable",
  "Environment :: Console",
  "Intended Audience :: Customer Service",
  "Programming Language :: Python :: 3",
  "License :: OSI Approved :: MIT License",
  "Operating System :: OS Independent",
  "Topic :: System :: Networking :: Firewalls",
]

dependencies = [
    "pyperclip==1.9.0",
    "certifi",

    "psutil==5.9.8; platform_system == 'Windows' and python_version < '3.9'",
    "cryptography==41.0.7; platform_system == 'Windows' and python_version < '3.9'",
    "Pillow==10.4.0; platform_system == 'Windows' and python_version < '3.9'",

    "psutil==7.0.0; platform_system != 'Windows' or python_version >= '3.9'",
    "cryptography==46.0.5; platform_system != 'Windows' or python_version >= '3.9'",
    "Pillow==12.1.1; (platform_system != 'Windows' or python_version >= '3.9') and platform_system != 'Darwin'",

    "customtkinter==5.2.2",
    "pystray==0.19.5",
    "pyobjc-framework-Cocoa>=9.0; platform_system == 'Darwin'",
    "Pillow==12.1.0; platform_system == 'Darwin'",
]

[project.scripts]
tg-ws-proxy = "proxy.tg_ws_proxy:main"
tg-ws-proxy-tray-win = "windows:main"
tg-ws-proxy-tray-macos = "macos:main"
tg-ws-proxy-tray-linux = "linux:main"

[project.urls]
Source = "https://github.com/Flowseal/tg-ws-proxy"
Issues = "https://github.com/Flowseal/tg-ws-proxy/issues"

[tool.hatch.build.targets.wheel]
packages = ["proxy", "ui", "utils"]

[tool.hatch.build.force-include]
"windows.py" = "windows.py"
"macos.py" = "macos.py"
"linux.py" = "linux.py"

[tool.hatch.version]
path = "proxy/__init__.py"

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

[tool.ruff.lint]
select = ["E4", "E7", "E9", "F", "B", "C4"]
ignore = ["F403", "F405", "B023"]

[tool.ruff.lint.per-file-ignores]
"macos.py" = ["E402"]
