[build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" [project] name = "bertopic" version = "0.17.3" description = "BERTopic performs topic Modeling with state-of-the-art transformer models." readme = "README.md" license = {file = "LICENSE"} requires-python = ">=3.9" authors = [ { name = "Maarten P. Grootendorst", email = "maartengrootendorst@gmail.com" }, ] keywords = [ "nlp", "bert", "topic", "modeling", "embeddings", ] classifiers = [ "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "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", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "hdbscan>=0.8.29", "umap-learn>=0.5.0", "numpy>=1.20.0", "pandas>=1.1.5", "plotly>=4.7.0", "scikit-learn>=1.0", "sentence-transformers>=0.4.1", "tqdm>=4.41.1", "llvmlite>0.36.0" # To prevent conflicts with `uv` dependency manager ] [project.optional-dependencies] datamap = [ "datamapplot>=0.1", "matplotlib>=3.8", ] dev = [ "bertopic[docs,test]", ] docs = [ "mkdocs==1.5.3", "mkdocs-material==9.5.18", "mkdocstrings-python==1.10.0", "mkdocstrings==0.24.3", ] fastembed = [ "fastembed>=0.6.0", ] flair = [ "flair>=0.7", "torch>=1.4.0", "transformers>=3.5.1", ] gensim = [ "gensim>=4.0.0", ] spacy = [ "spacy>=3.0.1", ] test = [ "pytest>=5.4.3", "pytest-cov>=2.6.1", "ruff~=0.4.7", ] use = [ "tensorflow", "tensorflow_hub", "tensorflow_text", ] vision = [ "accelerate>=0.19.0", # To prevent "cannot import name 'PartialState' from 'accelerate'" "Pillow>=9.2.0", ] [project.urls] Documentation = "https://maartengr.github.io/BERTopic/" Homepage = "https://github.com/MaartenGr/BERTopic" Issues = "https://github.com/MaartenGr/BERTopic/issues" Repository = "https://github.com/MaartenGr/BERTopic.git" [tool.setuptools.packages.find] include = ["bertopic*"] exclude = ["tests"] [tool.ruff] line-length = 120 [tool.ruff.lint] select = [ "E4", # Ruff Defaults "E7", "E9", "F", # End Ruff Defaults, "D" ] ignore = [ "D100", # Missing docstring in public module "D104", # Missing docstring in public package "D205", # 1 blank line required between summary line and description "E731", # Do not assign a lambda expression, use a def ] [tool.ruff.lint.per-file-ignores] "**/tests/*" = ["D"] # Ignore all docstring errors in tests [tool.ruff.lint.pydocstyle] convention = "google"