- Implement multi-format document support (PDF, XLSX, CSV, PPTX, TXT, Images) - Add S3-compatible storage service with tenant isolation - Create document organization service with hierarchical folders and tagging - Implement advanced document processing with table/chart extraction - Add batch upload capabilities (up to 50 files) - Create comprehensive document validation and security scanning - Implement automatic metadata extraction and categorization - Add document version control system - Update DEVELOPMENT_PLAN.md to mark Week 2 as completed - Add WEEK2_COMPLETION_SUMMARY.md with detailed implementation notes - All tests passing (6/6) - 100% success rate
170 lines
3.5 KiB
TOML
170 lines
3.5 KiB
TOML
[tool.poetry]
|
|
name = "virtual-board-member"
|
|
version = "0.1.0"
|
|
description = "Enterprise-grade AI assistant for board members and executives"
|
|
authors = ["Your Name <your.email@example.com>"]
|
|
readme = "README.md"
|
|
packages = [{include = "app"}]
|
|
|
|
[tool.poetry.dependencies]
|
|
python = "^3.11"
|
|
fastapi = "^0.104.1"
|
|
uvicorn = {extras = ["standard"], version = "^0.24.0"}
|
|
pydantic = "^2.5.0"
|
|
pydantic-settings = "^2.1.0"
|
|
sqlalchemy = "^2.0.23"
|
|
alembic = "^1.12.1"
|
|
psycopg2-binary = "^2.9.9"
|
|
redis = "^5.0.1"
|
|
qdrant-client = "^1.7.0"
|
|
langchain = "^0.1.0"
|
|
langchain-openai = "^0.0.2"
|
|
openai = "^1.3.7"
|
|
python-multipart = "^0.0.6"
|
|
python-jose = {extras = ["cryptography"], version = "^3.3.0"}
|
|
passlib = {extras = ["bcrypt"], version = "^1.7.4"}
|
|
python-dotenv = "^1.0.0"
|
|
redis = "^5.0.1"
|
|
httpx = "^0.25.2"
|
|
aiofiles = "^23.2.1"
|
|
pdfplumber = "^0.10.3"
|
|
openpyxl = "^3.1.2"
|
|
python-pptx = "^0.6.23"
|
|
pandas = "^2.1.4"
|
|
numpy = "^1.25.2"
|
|
pillow = "^10.1.0"
|
|
pytesseract = "^0.3.10"
|
|
PyMuPDF = "^1.23.8"
|
|
opencv-python = "^4.8.1.78"
|
|
tabula-py = "^2.8.2"
|
|
camelot-py = "^0.11.0"
|
|
sentence-transformers = "^2.2.2"
|
|
prometheus-client = "^0.19.0"
|
|
structlog = "^23.2.0"
|
|
celery = "^5.3.4"
|
|
kafka-python = "^2.0.2"
|
|
boto3 = "^1.34.0"
|
|
minio = "^7.2.0"
|
|
|
|
[tool.poetry.group.dev.dependencies]
|
|
pytest = "^7.4.3"
|
|
pytest-asyncio = "^0.21.1"
|
|
pytest-cov = "^4.1.0"
|
|
pytest-mock = "^3.12.0"
|
|
black = "^23.11.0"
|
|
isort = "^5.12.0"
|
|
mypy = "^1.7.1"
|
|
bandit = "^1.7.5"
|
|
safety = "^2.3.5"
|
|
pre-commit = "^3.6.0"
|
|
faker = "^20.1.0"
|
|
factory-boy = "^3.3.0"
|
|
flake8 = "^6.1.0"
|
|
|
|
[tool.poetry.group.test.dependencies]
|
|
pytest = "^7.4.3"
|
|
pytest-asyncio = "^0.21.1"
|
|
pytest-cov = "^4.1.0"
|
|
pytest-mock = "^3.12.0"
|
|
faker = "^20.1.0"
|
|
factory-boy = "^3.3.0"
|
|
|
|
[build-system]
|
|
requires = ["poetry-core"]
|
|
build-backend = "poetry.core.masonry.api"
|
|
|
|
[tool.black]
|
|
line-length = 88
|
|
target-version = ['py311']
|
|
include = '\.pyi?$'
|
|
extend-exclude = '''
|
|
/(
|
|
# directories
|
|
\.eggs
|
|
| \.git
|
|
| \.hg
|
|
| \.mypy_cache
|
|
| \.tox
|
|
| \.venv
|
|
| build
|
|
| dist
|
|
)/
|
|
'''
|
|
|
|
[tool.isort]
|
|
profile = "black"
|
|
multi_line_output = 3
|
|
line_length = 88
|
|
known_first_party = ["app"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.11"
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
disallow_untyped_defs = true
|
|
disallow_incomplete_defs = true
|
|
check_untyped_defs = true
|
|
disallow_untyped_decorators = true
|
|
no_implicit_optional = true
|
|
warn_redundant_casts = true
|
|
warn_unused_ignores = true
|
|
warn_no_return = true
|
|
warn_unreachable = true
|
|
strict_equality = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = [
|
|
"boto3.*",
|
|
"botocore.*",
|
|
"celery.*",
|
|
"kafka.*",
|
|
"minio.*",
|
|
"pytesseract.*",
|
|
"redis.*",
|
|
"qdrant_client.*",
|
|
]
|
|
ignore_missing_imports = true
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
python_files = ["test_*.py", "*_test.py"]
|
|
python_classes = ["Test*"]
|
|
python_functions = ["test_*"]
|
|
addopts = [
|
|
"--strict-markers",
|
|
"--strict-config",
|
|
"--cov=app",
|
|
"--cov-report=term-missing",
|
|
"--cov-report=html",
|
|
"--cov-fail-under=80",
|
|
]
|
|
markers = [
|
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
"integration: marks tests as integration tests",
|
|
"unit: marks tests as unit tests",
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
source = ["app"]
|
|
omit = [
|
|
"*/tests/*",
|
|
"*/migrations/*",
|
|
"*/__pycache__/*",
|
|
"*/venv/*",
|
|
"*/env/*",
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"pragma: no cover",
|
|
"def __repr__",
|
|
"if self.debug:",
|
|
"if settings.DEBUG",
|
|
"raise AssertionError",
|
|
"raise NotImplementedError",
|
|
"if 0:",
|
|
"if __name__ == .__main__.:",
|
|
"class .*\\bProtocol\\):",
|
|
"@(abc\\.)?abstractmethod",
|
|
]
|