[build-system] requires = ["setuptools>=77.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "pbi-cli-tool" version = "3.10.10" description = "CLI for Power BI semantic models and PBIR reports - direct .NET connection for token-efficient AI agent usage" readme = "README.pypi.md" license = "MIT AND LicenseRef-Microsoft-AS-Client-Libraries" license-files = ["LICENSE", "THIRD_PARTY_LICENSES.md", "NOTICE"] requires-python = ">=3.10" authors = [ {name = "pbi-cli contributors"}, ] keywords = ["power-bi", "cli", "semantic-model", "dax", "claude-code", "tom", "pbir", "report"] classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Database", "Topic :: Software Development :: Libraries", ] dependencies = [ "click>=8.0.0", "rich>=13.0.0", "prompt-toolkit>=3.0.0", "pythonnet==3.1.0rc0", "clr-loader>=0.2.6", ] [project.scripts] pbi = "pbi_cli.main:cli" pbi-cli = "pbi_cli.main_pbi_cli:cli" [project.urls] Homepage = "https://github.com/MinaSaad1/pbi-cli" Repository = "https://github.com/MinaSaad1/pbi-cli" Issues = "https://github.com/MinaSaad1/pbi-cli/issues" [project.optional-dependencies] dev = [ "pytest>=7.0", "pytest-cov>=4.0", "ruff>=0.4.0", "mypy>=1.10", ] reload = ["pywin32>=306"] preview = ["websockets>=12.0"] [tool.setuptools.packages.find] where = ["src"] [tool.setuptools.package-data] "pbi_cli.skills" = ["**/*.md"] "pbi_cli.dlls" = ["*.dll", "*.json", "README.md"] "pbi_cli.templates" = ["**/*.json"] [tool.ruff] target-version = "py310" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP"] [tool.ruff.lint.per-file-ignores] # .NET interop code uses CamelCase names to match the .NET API surface "src/pbi_cli/core/adomd_backend.py" = ["N806"] "src/pbi_cli/core/session.py" = ["N806"] "src/pbi_cli/core/tom_backend.py" = ["N806", "N814"] "src/pbi_cli/core/dotnet_loader.py" = ["N806", "N814"] # Win32 API constants use UPPER_CASE; PowerShell inline scripts are long "src/pbi_cli/utils/desktop_reload.py" = ["N806", "E501"] # HTML/SVG template strings are inherently long "src/pbi_cli/preview/renderer.py" = ["E501"] # Mock objects mirror .NET CamelCase API "tests/conftest.py" = ["N802", "N806"] [tool.pytest.ini_options] testpaths = ["tests"] markers = [ "e2e: end-to-end tests requiring running Power BI Desktop", ] [tool.mypy] python_version = "3.10" strict = true [[tool.mypy.overrides]] module = ["pythonnet", "clr", "clr_loader"] ignore_missing_imports = true [[tool.mypy.overrides]] module = ["win32gui", "win32con", "win32api", "win32process", "win32com.*"] ignore_missing_imports = true [[tool.mypy.overrides]] module = ["websockets", "websockets.*"] ignore_missing_imports = true