-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
139 lines (120 loc) · 3.81 KB
/
pyproject.toml
File metadata and controls
139 lines (120 loc) · 3.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
[project]
name = "memorylayer-server"
version = "0.0.6"
description = "MemoryLayer.ai - API-first memory infrastructure for LLM-powered agents (open source core)"
readme = "README.md"
requires-python = ">=3.12"
license = { text = "Apache 2.0" }
authors = [
{ name = "Scitrera", email = "open-source-team@scitrera.com" }
]
keywords = ["ai", "memory", "agents", "llm", "vector-search", "rag"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
]
dependencies = [
"scitrera-app-framework>=0.0.69",
"scitrera-rt-data>=0.0.7",
"scitrera-ext-cachetools>=0.0.1",
"fastapi>=0.128.7",
"uvicorn[standard]>=0.30.0",
"pydantic>=2.12.5",
"pydantic-settings>=2.12.0",
"sqlalchemy[asyncio]>=2.0.46",
"aiosqlite>=0.22.1",
"sqlite-vec>=0.1.7a2", # NOTE: prerelease version required for proper arm64 support without custom rerelease
"numpy>2.0.0",
"httpx>=0.28.1",
"python-multipart>=0.0.22",
"click>=8.3.1",
]
[project.optional-dependencies]
# OpenAI API embeddings and LLM (bring your own key)
openai = [
"openai>=2.18.0",
"tiktoken>=0.12.0",
]
# Anthropic Claude LLM provider
anthropic = [
"anthropic>=0.79.0",
]
# Google GenAI (Gemini) LLM provider
google = [
"google-genai>=1.62.0",
]
# Local embedding providers (sentence-transformers)
local = [
"sentence-transformers>=5.2.2",
]
# Context environment sandbox executor
context = [
"smolagents>=1.0,<2.0",
]
# All embedding providers
embeddings = [
"memorylayer-server[openai,local,google]",
]
# Development dependencies
dev = [
"pytest>=9.0.2",
"pytest-asyncio>=1.3.0",
"pytest-cov>=7.0.0",
"respx>=0.22.0",
"ruff>=0.15.0",
"mypy>=1.19.1",
]
# LLM providers (bring your own key)
llm = [
"memorylayer-server[openai,anthropic,google]",
]
# Full installation with all features (excludes dev tools)
all = [
"memorylayer-server[embeddings,llm,context]",
]
[project.scripts]
memorylayer = "memorylayer_server.cli:cli"
[project.urls]
Homepage = "https://memorylayer.ai"
Documentation = "https://docs.memorylayer.ai"
Repository = "https://github.com/scitrera/memorylayer"
Issues = "https://github.com/scitrera/memorylayer/issues"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/memorylayer_server"]
[tool.hatch.build.targets.sdist]
include = ["src/memorylayer_server"]
[tool.ruff]
line-length = 140
target-version = "py312"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP"]
ignore = [
"E402", # module-level imports not at top — lazy imports used to avoid circular deps
"E501", # line too long — handled by formatter, some long strings intentional
"UP042", # str+Enum inheritance — StrEnum requires Python 3.11+ migration
"UP031", # printf-style formatting — used intentionally in logging
"F841", # unused variables — some intentional in batch/pipeline patterns
"F821", # undefined name — forward references and dynamic imports
"N806", # variable in function should be lowercase — established naming conventions
]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
markers = [
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
"integration: marks tests as integration tests (deselect with '-m \"not integration\"')",
"llm: marks tests requiring a live LLM provider (deselect with '-m \"not llm\"')",
"llm_quality: marks LLM output quality tests (deselect with '-m \"not llm_quality\"')",
]
[tool.mypy]
python_version = "3.12"
strict = false
warn_return_any = true
warn_unused_configs = true