content: [tool.poetry]
  name = "RecTools"
  version = "0.17.0"
  description = "An easy-to-use Python library for building recommendation systems"
  license = "Apache-2.0"
  authors = [
      "Emiliy Feldman <feldlime@yandex.ru>",
      "Daria Tikhonovich <daria.m.tikhonovich@gmail.com>",
      "Daniil Potapov <sharth23@gmail.com>",
      "Ildar Safilo <irsafilo@gmail.com>",
      "Alexander Butenko <a.butenko.o@gmail.com>",
      "Julia Karamnova <juliakaramnova@yandex.ru>",
      "Artem Senin <artemseninhse@gmail.com>",
      "Mikhail Khasykov <mkhasykov@gmail.com>",
      "Mike Sokolov <mikesokolovv@gmail.com>",
      "Andrey Semenov <in48semenov@yandex.ru>",
      "Maxim Lukin <maximlukin1@gmail.com>"
  ]
  maintainers = [
      "Emiliy Feldman <feldlime@yandex.ru>",
      "Daria Tikhonovich <daria.m.tikhonovich@gmail.com>",
  ]
  readme = "README.md"
  homepage = "https://github.com/MobileTeleSystems/RecTools"
  repository = "https://github.com/MobileTeleSystems/RecTools"
  documentation = "https://rectools.readthedocs.io"
  keywords = [
      "recsys",
      "recommendation systems",
      "machine learning",
      "AI",
      "personalization",
  ]
  classifiers = [
      "Development Status :: 3 - Alpha",
      "Topic :: Scientific/Engineering :: Artificial Intelligence",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Programming Language :: Python :: 3",
      "Topic :: Software Development :: Libraries :: Python Modules",
      "Intended Audience :: Science/Research",
      "Intended Audience :: Education",
      "Operating System :: Unix",
      "Operating System :: MacOS",
      "Operating System :: Microsoft :: Windows",
  ]
  packages = [
      { include = "rectools", from = "." },
  ]
  
  
  [tool.poetry.dependencies]
  python = ">=3.9, <3.14"
  numpy = [
      {version = ">=1.22, <2.0.0", python = "<3.12"},
      {version = ">=1.26, <2.0.0", python = "3.12"},  # numpy <1.26 fails to install on Python 3.12
      {version = ">=2.1.0, <3.0.0", python = ">=3.13"}  # numpy <2.1 fails to install on Python 3.13
  ]
  pandas = [
      {version = ">=1.5.0, <3.0.0", python = "<3.13"},
      {version = ">=2.2.3, <3.0.0", python = ">=3.13"}  # pandas <2.2.3 fails to install on Python 3.13
  ]
  scipy = [
      {version = "^1.10.1, <1.13", python = "<3.10"},  # there is a bug in 1.13* https://github.com/scipy/scipy/issues/20670
      {version = ">=1.14.1, <2.0.0", python = ">=3.10"}  # scipy >=1.14.1 fails to install on Python 3.9
  ]
  tqdm = "^4.27.0"
  implicit = "^0.7.1"
  attrs = ">=19.1.0,<24.0.0"
  typeguard = "^4.1.0"
  pydantic = "^2.8.2"
  pydantic-core = "^2.20.1"
  typing-extensions = "^4.12.2"
  
  # The latest released version of lightfm is 1.17 and it's not compatible with PEP-517 installers (like latest poetry versions).
  rectools-lightfm = {version = "^1.17.3", optional = true}
  
  nmslib = {version = "^2.0.4", python = "<3.11", optional = true}
  # nmslib officialy doens't support Python 3.11 and 3.12. Use https://github.com/metabrainz/nmslib-metabrainz instead
  nmslib-metabrainz = {version = "^2.1.3", python = ">=3.11, <3.13", optional = true}
  
  # The latest torch version available for macOS + x86_64 is 2.2.2
  torch = [
      {version = ">=1.6.0, <2.3.0", python = "<3.13", markers = "sys_platform == 'darwin' and platform_machine == 'x86_64'", optional = true},
      {version = ">=1.6.0, <3.0.0", python = "<3.13", optional = true},
      {version = ">=2.6.0, <3.0.0", python = ">=3.13", optional = true},
  ]
  pytorch-lightning = [
      {version = ">=1.6.0, <3.0.0", python = "<3.13", optional = true},
      {version = ">=2.5.1, <3.0.0", python = ">=3.13", optional = true},
  ]
  
  ipywidgets = {version = ">=7.7,<8.2", optional = true}
  plotly = {version="^5.22.0", optional = true}
  nbformat = {version = ">=4.2.0", optional = true}
  
  # cupy-cuda12x is incompatible with macOS.
  # It's possible to install pure `cupy` and it will be fully compatible
  # but it will work only with CPU and will be slower than `numpy`.
  # That's why we don't install cupy at all on macOS and handle it during the import.
  cupy-cuda12x = [
      {version = "^13.3.0", python = "<3.13", markers = "sys_platform != 'darwin'", optional = true},
      {version = "^13.4.0", python = ">=3.13", markers = "sys_platform != 'darwin'", optional = true},
  ]
  # This is a dependency of cupy-cuda12x
  # poetry can't resolve appropriate version of fastrlock for Python 3.13
  # and cupy-cuda12x, so we add the version restriction here manually to avoid
  # installing older version of fastrlock which is incompatible with Python 3.13
  fastrlock = {version = "^0.8.3", markers = "sys_platform != 'darwin'", optional = true}
  
  [tool.poetry.extras]
  lightfm = ["rectools-lightfm"]
  nmslib = ["nmslib", "nmslib-metabrainz"]
  torch = ["torch", "pytorch-lightning"]
  visuals = ["ipywidgets", "plotly", "nbformat"]
  cupy = ["cupy-cuda12x"]
  all = [
      "rectools-lightfm",
      "nmslib", "nmslib-metabrainz",
      "torch", "pytorch-lightning",
      "ipywidgets", "plotly", "nbformat",
      "cupy-cuda12x",
  ]
  
  
  [tool.poetry.group.dev.dependencies]
  black = "24.10.0"
  isort = "5.13.2"
  pylint = "3.1.0"
  mypy = "1.13.0"
  flake8 = "7.0.0"
  bandit = "1.7.8"
  pytest = "8.3.3"
  radon = "6.0.1"
  coverage = "7.5.0"
  autopep8 = "2.1.0"
  codespell = "2.2.6"
  pytest-subtests = "0.12.1"
  flake8-docstrings = "1.7.0"
  pep8-naming = "0.13.3"
  pytest-cov = "5.0.0"
  pytest-mock = "3.14.0"
  click = "8.1.7"
  gitpython = "3.1.43"
  
  [tool.poetry.group.docs]
  optional = true
  
  [tool.poetry.group.docs.dependencies]
  sphinx = "5.1.1"
  nbsphinx = "0.8.9"
  sphinx-rtd-theme = "1.0.0"
  
  [tool.black]
  line-length = 120
  target-version = ["py39", "py310", "py311", "py312", "py313"]
  
  
  [build-system]
  requires = ["poetry-core"]
  build-backend = "poetry.core.masonry.api"
  