content: [project]
  name = "mostlyai"
  version = "5.3.2"
  description = "Synthetic Data SDK"
  authors = [{ name = "MOSTLY AI", email = "dev@mostly.ai" }]
  requires-python = ">=3.10,<3.14"
  readme = "README.md"
  license = "Apache-2.0"
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Intended Audience :: Developers",
      "Intended Audience :: Science/Research",
      "Intended Audience :: Information Technology",
      "Intended Audience :: Financial and Insurance Industry",
      "Intended Audience :: Healthcare Industry",
      "Intended Audience :: Telecommunications Industry",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "License :: OSI Approved :: Apache Software License",
      "Operating System :: OS Independent",
      "Topic :: Software Development :: Libraries",
      "Typing :: Typed",
  ]
  dependencies = [
      "pydantic>=2.4.2,<3",
      "httpx>=0.25.0",
      "pandas>=2.0.0",
      "pyarrow>=16.0.0",
      "smart_open>=6.0.0",
      "rich>=13.7.0",
      "psutil>=5.9.5",
      "requests>=2.31.0",
      "typer>=0.9.0",
      "semantic-version>=2.10.0",
      "gunicorn>=23.0.0",
      "environs>=9.5.0",
      "schema>=0.7.5",
      "xxhash>=3.2.0",
      "greenlet>=3.1.1",
      "pycryptodomex>=3.10.0",
      "ipywidgets>=8.1.0",
      "duckdb>=1.2.1",
      "sqlparse>=0.5.3",
  ]
  
  [project.optional-dependencies]
  local = [
      # "mostlyai-engine @ git+https://github.com/mostly-ai/mostlyai-engine.git@main",  # for development
      # "mostlyai-qa @ git+https://github.com/mostly-ai/mostlyai-qa.git@main",  # for development
      "mostlyai-engine==1.5.8",  # for release
      "mostlyai-qa==1.9.8",  # for release
      "fastapi>=0.115.6,<0.116",
      "uvicorn>=0.34.0,<0.35",
      "python-multipart>=0.0.20",
      "torch>=2.8.0,<2.8.1",
      "torchaudio>=2.8.0,<2.8.1",
      "torchvision>=0.23.0,<0.23.1",
      "joblib>=1.4.2",
      "sqlalchemy>=2.0.0",
      "sshtunnel>=0.4.0,<0.5",
      "networkx>=3.0,<4",
      "xlsxwriter>=3.1.9,<4",
      "openpyxl>=3.1.5",
      "filelock>=3.16.1",
      # cloud-based connectors
      "s3fs>=2023.1.0",
      "gcsfs>=2023.1.0",
      "cloudpathlib[gs, s3, azure]>=0.17.0",
      "smart-open[gcs, s3, azure]>=6.3.0",
      "azure-storage-blob>=12.16.0",
      "adlfs>=2023.4.0",
  ]
  local-gpu = [
      # "mostlyai-engine[gpu] @ git+https://github.com/mostly-ai/mostlyai-engine.git@main",  # for development
      # "mostlyai-qa @ git+https://github.com/mostly-ai/mostlyai-qa.git@main",  # for development
      "mostlyai-engine[gpu]==1.5.8",  # for release
      "mostlyai-qa==1.9.8",  # for release
      "fastapi>=0.115.6,<0.116",
      "uvicorn>=0.34.0,<0.35",
      "python-multipart>=0.0.20",
      "torch>=2.8.0,<2.8.1",
      "torchaudio>=2.8.0,<2.8.1",
      "torchvision>=0.23.0,<0.23.1",
      "joblib>=1.4.2",
      "sqlalchemy>=2.0.0",
      "sshtunnel>=0.4.0,<0.5",
      "networkx>=3.0,<4",
      "xlsxwriter>=3.1.9,<4",
      "openpyxl>=3.1.5",
      "filelock>=3.16.1",
      # cloud-based connectors
      "s3fs>=2023.1.0",
      "gcsfs>=2023.1.0",
      "cloudpathlib[gs, s3, azure]>=0.17.0",
      "smart-open[gcs, s3, azure]>=6.3.0",
      "azure-storage-blob>=12.16.0",
      "adlfs>=2023.4.0",
  ]
  # connectors
  databricks = [
      "databricks-sql-connector>=3.2.0,<4",
  ]
  googlebigquery = [
      "sqlalchemy-bigquery>=1.6.1,<2",
  ]
  hive = [
      "pyhive[hive-pure-sasl]>=0.7.0,<0.8",
      "kerberos>=1.3.1,<2",
      "impyla>=0.19.0,<0.20",
  ]
  mssql = [
      "pyodbc>=5.1.0,<6",
  ]
  mysql = [
      "mysql-connector-python>=9.1.0,<10",
  ]
  oracle = [
      "oracledb>=2.2.1,<3"
  ]
  postgres = [
      "psycopg2>=2.9.4,<3"
  ]
  redshift = [
      "redshift-connector>=2.1.8",
  ]
  snowflake = [
      "snowflake-sqlalchemy>=1.6.1,<2"
  ]
  
  [dependency-groups]
  dev = [
      "pytest>=8.0",
      "ruff>=0.11",  # sync'ed with .pre-commit-config
      "pre-commit>=4.0",
      "twine>=6.1",
      "ipykernel>=6.25",
      "datamodel-code-generator[http]>=0.26.3",
      "respx>=0.20",
      "poetry-bumpversion>=0.3.2",
      "httpx>=0.27",
      "python-dotenv>=1.0.0",
  ]
  docs = [
      "mkdocs>=1.6",
      "mkdocstrings[crystal, python]>=0.29",
      "mkdocs-material>=9.0",
      "mkdocs-llmstxt>=0.2",
      "griffe>=1.0",
      "pymdown-extensions>=10.0",
      "griffe-fieldz>=0.2",
      "black>=25.0",
  ]
  
  [project.urls]
  homepage = "https://app.mostly.ai/"
  repository = "https://github.com/mostly-ai/mostlyai"
  documentation = "https://mostly-ai.github.io/mostlyai/"
  
  [tool.uv]
  default-groups = ["dev", "docs"]
  
  [tool.hatch.build.targets.sdist]
  include = ["mostlyai/sdk"]
  exclude = [
      "tools/",
      "tools/**/*",
  ]
  
  [tool.hatch.build.targets.wheel]
  include = ["mostlyai/sdk"]
  exclude = [
      "tools/",
      "tools/**/*",
  ]
  
  [tool.hatch.metadata]
  allow-direct-references = true
  
  [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [[tool.poetry_bumpversion.replacements]]
  files = ["mostlyai/sdk/__init__.py"]
  search = '__version__ = "{current_version}"'
  replace = '__version__ = "{new_version}"'
  
  [tool.ruff]
  target-version = "py310"
  line-length = 120
  
  [tool.ruff.lint]
  extend-select = ["I"]
  
  [tool.ruff.lint.per-file-ignores]
  "*.ipynb" = ["E402"]
  