/ pyproject.toml
pyproject.toml
1 [build-system] 2 requires = ["hatchling"] 3 build-backend = "hatchling.build" 4 5 [project] 6 name = "mureo" 7 version = "0.6.0" 8 description = "Local-first, safety-gated AI ad-ops framework for Claude Code, Codex, Cursor & Gemini" 9 requires-python = ">=3.10" 10 license = "Apache-2.0" 11 readme = "README.md" 12 authors = [{name = "Logly, Inc."}] 13 keywords = ["advertising", "google-ads", "meta-ads", "mcp", "cli", "ai-agent", "orchestration", "workflow", "strategy"] 14 classifiers = [ 15 "Development Status :: 3 - Alpha", 16 "Intended Audience :: Developers", 17 "License :: OSI Approved :: Apache Software License", 18 "Programming Language :: Python :: 3", 19 "Programming Language :: Python :: 3.10", 20 "Programming Language :: Python :: 3.11", 21 "Programming Language :: Python :: 3.12", 22 "Topic :: Software Development :: Libraries", 23 ] 24 25 dependencies = [ 26 "google-ads>=28.0,<30", 27 "google-auth>=2.28,<3", 28 "google-auth-oauthlib>=1.2,<2", 29 "facebook-business>=20.0,<22", 30 "httpx>=0.27,<1", 31 "beautifulsoup4>=4.12,<5", 32 "lxml>=6.1,<7", 33 "pydantic>=2.5,<3", 34 "typer>=0.12,<1", 35 "rich>=13.0,<14", 36 "simple-term-menu>=1.6,<2", 37 "mcp>=1.0,<2", 38 ] 39 40 [project.optional-dependencies] 41 dev = [ 42 "pytest>=7.4,<9", 43 "pytest-asyncio>=0.23,<1", 44 "pytest-cov>=4.1,<7", 45 "pytest-mock>=3.12,<4", 46 "black>=23.12,<25", 47 "ruff>=0.3,<1", 48 "mypy>=1.8,<2", 49 ] 50 51 [project.scripts] 52 mureo = "mureo.cli.main:app" 53 54 [project.urls] 55 Homepage = "https://github.com/logly/mureo" 56 Documentation = "https://github.com/logly/mureo/tree/main/docs" 57 Repository = "https://github.com/logly/mureo" 58 Issues = "https://github.com/logly/mureo/issues" 59 Changelog = "https://github.com/logly/mureo/blob/main/CHANGELOG.md" 60 61 [tool.hatch.build.targets.wheel] 62 packages = ["mureo"] 63 64 # NB: the previous ``[tool.hatch.build.targets.wheel.force-include]`` 65 # block that copied top-level ``.claude/commands/`` and ``skills/`` into 66 # ``mureo/_data/`` was removed because it duplicated files already 67 # included via ``packages = ["mureo"]``. The duplicate ZIP entries 68 # produced a wheel that PyPI rejects with 69 # ``400 Invalid distribution file. ZIP archive not accepted: 70 # Mis-matched data size.`` The bundled runtime data lives under 71 # ``mureo/_data/`` in the package tree and is sufficient on its own. 72 73 [tool.black] 74 line-length = 88 75 target-version = ["py310"] 76 77 [tool.ruff] 78 line-length = 88 79 target-version = "py310" 80 81 [tool.ruff.lint] 82 select = ["E", "F", "I", "N", "W", "UP", "B", "A", "SIM", "TCH"] 83 ignore = ["E501"] 84 85 [tool.ruff.lint.isort] 86 known-first-party = ["mureo"] 87 88 [tool.pytest.ini_options] 89 testpaths = ["tests"] 90 asyncio_mode = "auto" 91 markers = [ 92 "unit: Unit tests", 93 "integration: Integration tests", 94 ] 95 96 [tool.mypy] 97 python_version = "3.10" 98 strict = true 99 100 [[tool.mypy.overrides]] 101 module = "google.ads.googleads.*" 102 ignore_missing_imports = true 103 104 [tool.coverage.run] 105 source = ["mureo"] 106 omit = ["tests/*", "mureo/mcp/*"] 107 108 [tool.coverage.report] 109 fail_under = 80 110 show_missing = true