[project] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "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", "Topic :: Scientific/Engineering :: Artificial Intelligence" ] dependencies = [ "numpy>=1.17.0", "scipy" ] description = "LightGBM Python Package" license = {file = "LICENSE"} maintainers = [ {name = "Yu Shi", email = "yushi@microsoft.com"} ] name = "lightgbm" readme = "README.rst" requires-python = ">=3.7" version = "4.5.0.99" [project.optional-dependencies] arrow = [ "cffi>=1.15.1", "pyarrow>=6.0.1" ] dask = [ "dask[array,dataframe,distributed]>=2.0.0", "pandas>=0.24.0" ] pandas = [ "pandas>=0.24.0" ] scikit-learn = [ "scikit-learn!=0.22.0" ] [project.urls] homepage = "https://github.com/microsoft/LightGBM" documentation = "https://lightgbm.readthedocs.io/en/latest/" repository = "https://github.com/microsoft/LightGBM.git" changelog = "https://github.com/microsoft/LightGBM/releases" # start:build-system [build-system] requires = ["scikit-build-core>=0.10.1"] build-backend = "scikit_build_core.build" # based on https://github.com/scikit-build/scikit-build-core#configuration [tool.scikit-build] cmake.version = "CMakeLists.txt" ninja.version = ">=1.11" ninja.make-fallback = true cmake.args = [ "-D__BUILD_FOR_PYTHON:BOOL=ON" ] build.verbose = false cmake.build-type = "Release" build.targets = ["_lightgbm"] # stripping binaries should be turned back on once this is fixed: # https://github.com/jameslamb/pydistcheck/issues/235 install.strip = false logging.level = "INFO" sdist.reproducible = true wheel.py-api = "py3" experimental = false strict-config = false minimum-version = "build-system.requires" # end:build-system [tool.isort] include_trailing_comma = true line_length = 120 # "vertical hanging indent", to match what ruff-format does # ref: https://pycqa.github.io/isort/docs/configuration/multi_line_output_modes.html#3-vertical-hanging-indent multi_line_output = 3 skip_glob = [ "*/external_libs/*", "*/lightgbm-python/*", ] [tool.mypy] disallow_untyped_defs = true exclude = 'build/*|compile/*|docs/*|examples/*|external_libs/*|lightgbm-python/*|tests/*' ignore_missing_imports = true [tool.ruff] exclude = [ "build", "compile", "external_libs", "lightgbm-python", ] line-length = 120 # this should be set to the oldest version of python LightGBM supports target-version = "py37" [tool.ruff.format] docstring-code-format = false exclude = [ "build/*.py", "compile/*.py", "external_libs/*.py", "lightgbm-python/*.py", ] indent-style = "space" quote-style = "double" skip-magic-trailing-comma = false [tool.ruff.lint] ignore = [ # (pydocstyle) Missing docstring in magic method "D105", # (pycodestyle) Line too long "E501", # (pylint) Too many branches "PLR0912", # (pylint) Too many arguments in function definition "PLR0913", # (pylint) Too many statements "PLR0915", # (pylint) Consider merging multiple comparisons "PLR1714", # (pylint) Magic value used in comparison "PLR2004", # (pylint) for loop veriable overwritten by assignment target "PLW2901", # (pylint) use 'elif' instead of 'else' then 'if', to reduce indentation "PLR5501" ] select = [ # flake8-bugbear "B", # flake8-comprehensions "C4", # pydocstyle "D", # pycodestyle "E", # pyflakes "F", # NumPy-specific rules "NPY", # pylint "PL", # flake8-return: unnecessary assignment before return "RET504", # flake8-simplify: use dict.get() instead of an if-else block "SIM401", # flake8-print "T", ] [tool.ruff.lint.per-file-ignores] "docs/conf.py" = [ # (flake8-bugbear) raise exceptions with "raise ... from errr" "B904", # (flake8-print) flake8-print "T" ] "examples/*" = [ # pydocstyle "D", # flake8-print "T" ] "python-package/lightgbm/basic.py" = [ # (pylint) Using the global statement is discouraged "PLW0603" ] "tests/*" = [ # (flake8-bugbear) Found useless expression "B018", # pydocstyle "D", # flake8-print "T" ] [tool.ruff.lint.pydocstyle] convention = "numpy"