@@ -9,13 +9,20 @@ authors = [
99 {
name =
" Alex Reibman" ,
email =
" [email protected] " },
1010 {
name =
" Shawn Qiu" ,
email =
" [email protected] " },
1111 {
name =
" Braelyn Boynton" ,
email =
" [email protected] " },
12- {
name =
" Howard Gil" ,
email =
" [email protected] " }
12+ {
name =
" Howard Gil" ,
email =
" [email protected] " },
13+ {
name =
" Constantin Teodorescu" ,
email =
" [email protected] " },
14+ {
name =
" Pratyush Shukla" ,
email =
" [email protected] " }
1315]
1416description = " Observability and DevTool Platform for AI Agents"
1517readme = " README.md"
16- requires-python = " >=3.7 "
18+ requires-python = " >=3.9,<3.14 "
1719classifiers = [
1820 " Programming Language :: Python :: 3" ,
21+ " Programming Language :: Python :: 3.9" ,
22+ " Programming Language :: Python :: 3.10" ,
23+ " Programming Language :: Python :: 3.11" ,
24+ " Programming Language :: Python :: 3.12" ,
25+ " Programming Language :: Python :: 3.13" ,
1926 " License :: OSI Approved :: MIT License" ,
2027 " Operating System :: OS Independent" ,
2128]
@@ -24,52 +31,69 @@ dependencies = [
2431 " psutil>=5.9.8,<6.1.0" ,
2532 " termcolor>=2.3.0,<2.5.0" ,
2633 " PyYAML>=5.3,<7.0" ,
27- " opentelemetry-api>=1.22.0,<2.0.0" , # API for interfaces
28- " opentelemetry-sdk>=1.22.0,<2.0.0" , # SDK for implementation
29- " opentelemetry-exporter-otlp-proto-http>=1.22.0,<2.0.0" , # For OTLPSpanExporter
34+ " opentelemetry-api>=1.22.0,<2.0.0" ,
35+ " opentelemetry-sdk>=1.22.0,<2.0.0" ,
36+ " opentelemetry-exporter-otlp-proto-http>=1.22.0,<2.0.0" ,
37+ # "typing-extensions>=4.9.0; python_version >= '3.8'",
38+ # "pydantic>=2.7.4,<3.0.0; python_version < '3.13'",
39+ # "pydantic-core>=2.23.4; python_version >= '3.8' and python_version < '3.13'"
3040]
3141
3242[dependency-groups ]
33- dev = [
34- " pytest==7.4.0" ,
35- " pytest-depends" ,
36- " pytest-asyncio" ,
37- " pytest-vcr" ,
38- " pytest-mock" ,
39- " pyfakefs" ,
40- " requests_mock==1.11.0" ,
41- " ruff" ,
42- " vcrpy>=6.0.0; python_version >= '3.8'" ,
43- " python-dotenv"
44- ]
45- ci = [
46- " tach~=0.9" ,
43+ test = [
44+ " openai>=1.0.0,<2.0.0" ,
45+ " langchain" ,
46+ " pytest-cov" ,
4747]
4848
49- [project .optional-dependencies ]
50- langchain = [
51- " langchain==0.2.14; python_version >= '3.8.1'"
49+ dev = [
50+ # Testing essentials
51+ " pytest>=7.4.0,<8.0.0" , # Testing framework with good async support
52+ " pytest-depends" , # For testing complex agent workflows
53+ " pytest-asyncio" , # Async test support for testing concurrent agent operations
54+ " pytest-mock" , # Mocking capabilities for isolating agent components
55+ " pyfakefs" , # File system testing
56+ " pytest-recording" , # Alternative to pytest-vcr with better Python 3.x support
57+ " vcrpy @ git+https://github.com/kevin1024/vcrpy.git@81978659f1b18bbb7040ceb324a19114e4a4f328" ,
58+ # Code quality and type checking
59+ " ruff" , # Fast Python linter for maintaining code quality
60+ " mypy" , # Static type checking for better reliability
61+ " types-requests" , # Type stubs for requests library
62+
63+ # HTTP mocking and environment
64+ " requests_mock>=1.11.0" , # Mock HTTP requests for testing agent external communications
65+ " python-dotenv" , # Environment management for secure testing
66+
67+ # Agent integration testing
5268]
5369
70+ # CI dependencies
71+ ci = [
72+ " tach~=0.9" # Task runner for CI/CD pipelines
73+ ]
5474
5575[project .urls ]
5676Homepage = " https://github.com/AgentOps-AI/agentops"
5777Issues = " https://github.com/AgentOps-AI/agentops/issues"
5878
79+ [tool .uv ]
80+ compile-bytecode = true # Enable bytecode compilation for better performance
81+ default-groups = [" test" , " dev" ] # Default groups to install for development
82+
5983[tool .autopep8 ]
6084max_line_length = 120
6185
62- [project .scripts ]
63- agentops = " agentops.cli:main"
64-
6586[tool .pytest .ini_options ]
66- asyncio_mode = " strict "
67- asyncio_default_fixture_loop_scope = " function"
87+ asyncio_mode = " auto "
88+ asyncio_default_fixture_loop_scope = " function" # WARNING: Changing this may break tests. A `module`-scoped session might be faster, but also unstable.
6889test_paths = [
6990 " tests" ,
7091]
71- addopts = " --import-mode=importlib -- tb=short -p no:warnings"
92+ addopts = " --tb=short -p no:warnings"
7293pythonpath = [" ." ]
94+ faulthandler_timeout = 30 # Reduced from 60
95+ timeout = 60 # Reduced from 300
96+ disable_socket = true # Add this to prevent hanging on socket cleanup
7397
7498[tool .ruff ]
7599line-length = 120
0 commit comments