Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import sys
from pathlib import Path

# Ensure src/ package takes precedence over the legacy root-level governs_ai/ directory
_src = str(Path(__file__).parent / "src")
if _src not in sys.path:
sys.path.insert(0, _src)
2 changes: 2 additions & 0 deletions governs_ai/exceptions/precheck.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
Precheck-specific exceptions.
"""

from typing import Any, Dict, Optional

from .base import GovernsAIError


Expand Down
58 changes: 24 additions & 34 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,52 +1,42 @@
[build-system]
requires = ["setuptools>=45", "wheel"]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "governs-ai-sdk"
version = "1.0.0"
description = "Python SDK for GovernsAI - AI governance and compliance platform"
version = "0.1.0-alpha.1"
description = "GovernsAI Python SDK"
readme = "README.md"
requires-python = ">=3.8"
license = {text = "MIT"}
authors = [
{name = "GovernsAI", email = "support@governs.ai"},
]
license = { text = "Elastic-2.0" }
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"License :: Other/Proprietary License",
"Operating System :: OS Independent",
]
dependencies = [
"requests>=2.25.0",
"pydantic>=1.8.0",
"typing-extensions>=3.10.0",
"aiohttp>=3.8.0",
"asyncio-throttle>=1.0.0",
"httpx>=0.24.0",
"pydantic>=2.0.0",
]

[project.optional-dependencies]
dev = [
"pytest>=6.0",
"pytest-asyncio>=0.18.0",
"black>=22.0",
"flake8>=4.0",
"mypy>=0.950",
"pytest>=7.0.0",
"pytest-asyncio>=0.21.0",
"pytest-httpx>=0.21.0",
"black>=23.0.0",
"isort>=5.12.0",
"mypy>=1.0.0",
]

[tool.black]
line-length = 88
target-version = ['py38']
[tool.setuptools.packages.find]
where = ["src"]

[tool.mypy]
python_version = "3.8"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
pythonpath = ["src"]
addopts = "--import-mode=importlib"
markers = [
"integration: requires running local services (deselect with '-m not integration')",
]
10 changes: 10 additions & 0 deletions src/governs_ai/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from .client import GovernsAIClient, GovernsAIError, PrecheckError
from .types import BudgetResult, PrecheckResult

__all__ = [
"GovernsAIClient",
"GovernsAIError",
"PrecheckError",
"PrecheckResult",
"BudgetResult",
]
Loading
Loading