-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathpyproject.toml
More file actions
174 lines (165 loc) · 7.27 KB
/
Copy pathpyproject.toml
File metadata and controls
174 lines (165 loc) · 7.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
[build-system]
requires = ["setuptools==82.0.1"]
build-backend = "setuptools.build_meta"
[project]
name = "ccxt"
version = "4.5.66"
description = "A cryptocurrency trading API with more than 100 exchanges in JavaScript / TypeScript / Python / C# / PHP / Go"
readme = "python/README.md"
license = "MIT"
authors = [
{ name = "Igor Kroitor", email = "igor.kroitor@gmail.com" },
]
requires-python = ">=3.10"
keywords = [
"algorithmic", "algotrading", "altcoin", "altcoins", "api", "arbitrage", "backtest", "backtesting", "bitcoin", "bot",
"btc", "crypto", "cryptocurrency", "crypto currency", "crypto market", "currency", "currencies", "darkcoin",
"dash", "digital currency", "doge", "dogecoin", "e-commerce", "etc", "eth", "ether", "ethereum", "exchange",
"exchanges", "eur", "framework", "invest", "investing", "investor", "library", "light", "litecoin", "ltc",
"market", "market data", "markets", "merchandise", "merchant", "minimal", "ohlcv", "order", "orderbook",
"order book", "price", "price data", "pricefeed", "private", "public", "ripple", "strategy", "ticker",
"tickers", "toolkit", "trade", "trader", "trading", "usd", "volume", "websocket", "websockets",
"web socket", "web sockets", "ws", "xbt", "xrp", "zec", "zerocoin",
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Financial and Insurance Industry",
"Intended Audience :: Information Technology",
"Topic :: Software Development :: Build Tools",
"Topic :: Office/Business :: Financial :: Investment",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: JavaScript",
"Programming Language :: PHP",
"Operating System :: OS Independent",
"Environment :: Console",
]
# all dependencies are pinned to exact versions to protect against
# malicious or vulnerable releases of downstream dependencies
dependencies = [
"setuptools==82.0.1",
"certifi==2026.6.17",
"requests==2.34.2",
"cryptography==49.0.0",
"typing_extensions==4.16.0",
"aiohttp==3.14.1",
"yarl==1.24.2",
# fast zlib backend for aiohttp, enabled in ccxt.async_support.base.exchange
"aiohttp-fast-zlib==0.3.0",
"zlib-ng==1.0.0",
# event loop accelerator, installed where supported (no Windows/PyPy wheels);
# opt-in at the application entry point: uvloop.run(main())
"uvloop==0.22.1; platform_system != \"Windows\" and implementation_name == \"cpython\"",
# Windows counterpart of uvloop (same API, incl. winloop.run); wheels exist
# for CPython 3.8-3.14 on win_amd64/win_arm64 only - no win32, no sdist builds
"winloop==0.6.3; platform_system == \"Windows\" and implementation_name == \"cpython\" and python_version < \"3.15\" and platform_machine in \"AMD64 ARM64\"",
# fast JSON, installed only where orjson 3.11.9 ships a prebuilt wheel so that
# `pip install ccxt` never triggers a Rust source build. Allowlist mirrors the
# wheel matrix on PyPI (CPython 3.10-3.14 only, no PyPy, no free-threaded builds).
# NOTE: lowercase "arm64" matches macOS but intentionally NOT Windows "ARM64"
# (marker `in` is a case-sensitive substring match; cp310 has no win_arm64 wheel)
"orjson==3.11.9; implementation_name == \"cpython\" and python_version < \"3.15\" and platform_machine in \"x86_64 AMD64 aarch64 arm64 armv7l i686 ppc64le s390x\"",
# fast secp256k1 signing (libsecp256k1), installed only where coincurve 21.0.0
# ships a prebuilt wheel so that `pip install ccxt` never triggers a C source
# build. Allowlist mirrors the wheel matrix on PyPI (CPython 3.9-3.13 only,
# no PyPy, no cp314): manylinux/musllinux x86_64/aarch64/i686, macOS
# x86_64/arm64, Windows AMD64/ARM64. win32 (machine "x86") has no wheel and
# needs an explicit exclusion because "x86" is a substring of "x86_64" and
# the `in` marker operator does case-sensitive substring matching.
# ccxt falls back to the `cryptography` implementation when absent.
"coincurve==21.0.0; implementation_name == \"cpython\" and python_version < \"3.14\" and platform_machine in \"x86_64 AMD64 aarch64 arm64 ARM64 i686\" and platform_machine != \"x86\"",
# transitive dependencies of aiohttp
"aiohappyeyeballs==2.7.1",
"aiosignal==1.4.0",
"attrs==26.1.0",
"frozenlist==1.8.0",
"multidict==6.7.1",
"propcache==0.5.2",
# "aiodns==4.0.4",
# # transitive dependencies of aiodns
# "pycares==5.0.1",
# transitive dependencies of cryptography
"cffi==2.0.0",
"pycparser==3.0",
# transitive dependencies of requests
"charset_normalizer==3.4.7",
"idna==3.18",
"urllib3==2.7.0",
]
[project.optional-dependencies]
qa = [
"ruff==0.0.292",
"tox==4.56.1",
]
type = [
"mypy==1.6.1",
]
dev = [
"setuptools==82.0.1",
"certifi==2026.6.17",
"requests==2.34.2",
"cryptography==49.0.0",
"typing_extensions==4.16.0",
"aiohttp==3.14.1",
"aiodns==4.0.4",
"yarl==1.24.2",
"aiohttp-fast-zlib==0.3.0",
"zlib-ng==1.0.0",
"uvloop==0.22.1; platform_system != \"Windows\" and implementation_name == \"cpython\"",
"winloop==0.6.3; platform_system == \"Windows\" and implementation_name == \"cpython\" and python_version < \"3.15\" and platform_machine in \"AMD64 ARM64\"",
"orjson==3.11.9; implementation_name == \"cpython\" and python_version < \"3.15\" and platform_machine in \"x86_64 AMD64 aarch64 arm64 armv7l i686 ppc64le s390x\"",
"coincurve==21.0.0; implementation_name == \"cpython\" and python_version < \"3.14\" and platform_machine in \"x86_64 AMD64 aarch64 arm64 ARM64 i686\" and platform_machine != \"x86\"",
"ruff==0.0.292",
"tox==4.56.1",
"mypy==1.6.1",
]
[project.urls]
Homepage = "https://ccxt.com"
Documentation = "https://github.com/ccxt/ccxt/wiki"
Discord = "https://discord.gg/ccxt"
Twitter = "https://twitter.com/ccxt_official"
Funding = "https://opencollective.com/ccxt"
[tool.setuptools.packages.find]
where = ["python"]
[tool.setuptools.package-data]
ccxt = [
"static_dependencies/mnemonic/wordlist/**/*",
"static_dependencies/dydx_v4_client/**/*",
"static_dependencies/lighter_client/*",
]
# Redirect setuptools' intermediate build tree away from the repo-root `build/`
# directory (which holds the JS/TS build scripts). Without this, `python -m build`
# writes into `build/lib/ccxt/` by default, which collides with that tree and was
# once committed by the release workflow's `git add . -A`.
# Formerly setup.cfg [build] build_base; single source of truth is pyproject.toml.
[tool.distutils.build]
build_base = "python/build"
# Formerly setup.cfg [flake8]. Primary Python lint is Ruff ([tool.ruff] below);
# kept for any flake8 invocation that supports pyproject (e.g. flake8-pyproject).
[tool.flake8]
ignore = ["E501"]
exclude = [
".ropeproject",
".tox",
".eggs",
".git",
"__pycache__",
"node_modules",
".nyc_output",
"build",
"tmp",
"ccxt.py",
]
[tool.ruff]
preview = true
select = ["W", "F", "E"]
ignore = ["F722", "F841", "F821", "E402", "E501", "E902", "E713", "E741", "E714", "E275", "E721"]
exclude = [
"static_dependencies",
"protobuf",
]