[build-system] requires = ["setuptools", "setuptools-scm", "cython", "numpy>=1.24.0"] build-backend = "setuptools.build_meta" [project] classifiers = [ "Operating System :: POSIX :: Linux", "Operating System :: Microsoft :: Windows", "Operating System :: MacOS", "License :: OSI Approved :: MIT License", "Development Status :: 3 - Alpha", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", ] name = "pyqlib" dynamic = ["version"] description = "A Quantitative-research Platform" requires-python = ">=3.8.0" readme = {file = "README.md", content-type = "text/markdown"} license = { text = "MIT" } dependencies = [ "pyyaml", "numpy", # Since version 1.1.0, pandas supports the ffill and bfill methods. # Since version 2.1.0, pandas has deprecated the method parameter of the fillna method. # qlib has updated the fillna method in PR 1987 and limited the minimum version of pandas. "pandas>=1.1", # I encoutered an Error that the set_uri does not work when downloading artifacts in mlflow 3.1.1; # But earlier versions of mlflow does not have this problem. # But when I switch to 2.*.* version, another error occurs, which is even more strange... "mlflow", "filelock>=3.16.0", "redis", "dill", "fire", "ruamel.yaml>=0.17.38", "python-redis-lock", "tqdm", "pymongo", "loguru", "lightgbm", "gym", "cvxpy", "joblib", "matplotlib", "jupyter", "nbconvert", "pyarrow", "pydantic-settings", "setuptools-scm", ] [project.optional-dependencies] dev = [ "pytest", "statsmodels", ] # On macos-13 system, when using python version greater than or equal to 3.10, # pytorch can't fully support Numpy version above 2.0, so, when you want to install torch, # it will limit the version of Numpy less than 2.0. rl = [ "tianshou<=0.4.10", "torch", "numpy<2.0.0", ] lint = [ "black", "pylint", "mypy<1.5.0", "flake8", "nbqa", ] # snowballstemmer, a dependency of sphinx, was released on 2025-05-08 with version 3.0.0, # which causes errors in the build process. So we've limited the version for now. docs = [ # After upgrading scipy to version 1.16.0, # we encountered ImportError: cannot import name '_lazywhere', in the build documentation, # so we restricted the version of scipy to: 1.15.3 "scipy<=1.15.3", "sphinx", "sphinx_rtd_theme", "readthedocs_sphinx_ext", "snowballstemmer<3.0", ] package = [ "twine", "build", ] # test_pit dependency packages test = [ "yahooquery", "baostock", ] analysis = [ "plotly", "statsmodels", ] client = [ "python-socketio<6", "tables", ] # In the process of releasing a new version, when checking the manylinux package with twine, an error is reported: # InvalidDistribution: Invalid distribution metadata: unrecognized or malformed field 'license-file' # To solve this problem, we added license-files here. Refs: https://github.com/pypa/twine/issues/1216 [tool.setuptools] packages = [ "qlib", ] license-files = [] [project.scripts] qrun = "qlib.cli.run:run" [tool.setuptools_scm] local_scheme = "no-local-version" version_scheme = "guess-next-dev" write_to = "qlib/_version.py"