airtrain 0.1.57__py3-none-any.whl → 0.1.58__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
airtrain/__init__.py CHANGED
@@ -1,6 +1,8 @@
1
1
  """Airtrain - A platform for building and deploying AI agents with structured skills"""
2
2
 
3
- __version__ = "0.1.57"
3
+ __version__ = "0.1.58"
4
+
5
+ import sys
4
6
 
5
7
  # Core imports
6
8
  from .core.skills import Skill, ProcessingError
@@ -49,8 +51,9 @@ from .agents import (
49
51
  SharedMemory
50
52
  )
51
53
 
52
- # Telemetry import
54
+ # Telemetry import - must be imported after version is defined
53
55
  from .telemetry import telemetry
56
+ from .telemetry import PackageImportTelemetryEvent
54
57
 
55
58
 
56
59
  __all__ = [
@@ -98,3 +101,19 @@ __all__ = [
98
101
  # Telemetry - not directly exposed to users
99
102
  # but initialized at import time
100
103
  ]
104
+
105
+ # Capture import telemetry
106
+ try:
107
+ telemetry.capture(
108
+ PackageImportTelemetryEvent(
109
+ version=__version__,
110
+ python_version=(
111
+ f"{sys.version_info.major}."
112
+ f"{sys.version_info.minor}."
113
+ f"{sys.version_info.micro}"
114
+ )
115
+ )
116
+ )
117
+ except Exception:
118
+ # Silently continue if telemetry fails
119
+ pass
@@ -16,6 +16,8 @@ from airtrain.telemetry.views import (
16
16
  UserFeedbackTelemetryEvent,
17
17
  SkillInitTelemetryEvent,
18
18
  SkillProcessTelemetryEvent,
19
+ PackageInstallTelemetryEvent,
20
+ PackageImportTelemetryEvent,
19
21
  )
20
22
 
21
23
  __all__ = [
@@ -28,6 +30,8 @@ __all__ = [
28
30
  "UserFeedbackTelemetryEvent",
29
31
  "SkillInitTelemetryEvent",
30
32
  "SkillProcessTelemetryEvent",
33
+ "PackageInstallTelemetryEvent",
34
+ "PackageImportTelemetryEvent",
31
35
  ]
32
36
 
33
37
  # Create a singleton instance for easy import
@@ -170,4 +170,68 @@ class SkillProcessTelemetryEvent(BaseTelemetryEvent):
170
170
  input_data: Optional[Dict[str, Any]] = None
171
171
  duration_seconds: float = 0.0
172
172
  error: Optional[str] = None
173
- name: str = 'skill_process'
173
+ name: str = 'skill_process'
174
+
175
+
176
+ @dataclass
177
+ class PackageInstallTelemetryEvent(BaseTelemetryEvent):
178
+ """Event type to capture package installation"""
179
+ version: str
180
+ python_version: str
181
+ install_method: Optional[str] = None # pip, conda, source, etc.
182
+ platform: Optional[str] = None # Operating system
183
+ dependencies: Optional[Dict[str, str]] = None # Installed dependencies
184
+ name: str = 'package_install'
185
+
186
+ def __post_init__(self):
187
+ # Collect platform info if not provided
188
+ if self.platform is None:
189
+ import platform
190
+ self.platform = platform.platform()
191
+
192
+ # Collect dependency info if not provided
193
+ if self.dependencies is None:
194
+ # Try to get installed package versions for key dependencies
195
+ self.dependencies = {}
196
+ import importlib.metadata
197
+ try:
198
+ for package in ["openai", "anthropic", "groq", "together"]:
199
+ try:
200
+ self.dependencies[package] = importlib.metadata.version(package)
201
+ except importlib.metadata.PackageNotFoundError:
202
+ pass
203
+ except (ImportError, Exception):
204
+ pass
205
+
206
+
207
+ @dataclass
208
+ class PackageImportTelemetryEvent(BaseTelemetryEvent):
209
+ """Event type to capture package import"""
210
+ version: str
211
+ python_version: str
212
+ import_context: Optional[str] = None # Information about what imported the package
213
+ platform: Optional[str] = None # Operating system
214
+ name: str = 'package_import'
215
+
216
+ def __post_init__(self):
217
+ # Collect platform info if not provided
218
+ if self.platform is None:
219
+ import platform
220
+ self.platform = platform.platform()
221
+
222
+ # Try to get import context from traceback
223
+ if self.import_context is None:
224
+ try:
225
+ import inspect
226
+ frames = inspect.stack()
227
+ # Skip the first few frames which are inside our code
228
+ # Look for the first frame that's not in our module
229
+ import_frames = []
230
+ for frame in frames[3:10]: # Skip first 3, take up to 7 more
231
+ module = frame.frame.f_globals.get('__name__', '')
232
+ if not module.startswith('airtrain'):
233
+ import_frames.append(f"{module}:{frame.function}")
234
+ if import_frames:
235
+ self.import_context = " -> ".join(import_frames)
236
+ except Exception:
237
+ pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airtrain
3
- Version: 0.1.57
3
+ Version: 0.1.58
4
4
  Summary: A platform for building and deploying AI agents with structured skills
5
5
  Home-page: https://github.com/rosaboyle/airtrain.dev
6
6
  Author: Dheeraj Pai
@@ -1,5 +1,6 @@
1
- airtrain/__init__.py,sha256=jttOEv9X0ejW77bZrmIZJKCXTYcKR4RgO1VCsMRGQXQ,2816
1
+ airtrain/__init__.py,sha256=8g5IGtnihwqBfltBMs9vMLsTNsnhwiYSXlWBkIOpqC0,3312
2
2
  airtrain/__main__.py,sha256=EU8ffFmCdC1G-UcHHt0Oo3lB1PGqfC6kwzH39CnYSwU,72
3
+ airtrain/__pycache__/__init__.cpython-313.pyc,sha256=b5Xwx91d-BMvzIS-P4uZK8btsx2_mlxfUxvtoT4pVeA,3000
3
4
  airtrain/agents/__init__.py,sha256=r6v5_bblxamRgiaCT8CVhyzaDdWohGM7sSjLgIUpA5s,795
4
5
  airtrain/agents/example_agent.py,sha256=0dCS8QXIvUYYkxwyOEMLMdlQ4KgMAerQ56r7NcYGqTw,11681
5
6
  airtrain/agents/groq_agent.py,sha256=s-f-cGSrgsR4Jlrv6xzeg2Z0LAEHByhFMYVbTvu-Bkg,10558
@@ -18,6 +19,9 @@ airtrain/core/__init__.py,sha256=9h7iKwTzZocCPc9bU6j8bA02BokteWIOcO1uaqGMcrk,254
18
19
  airtrain/core/credentials.py,sha256=PgQotrQc46J5djidKnkK1znUv3fyNkUFDO-m2Kn_Gzo,4006
19
20
  airtrain/core/schemas.py,sha256=MMXrDviC4gRea_QaPpbjgO--B_UKxnD7YrxqZOLJZZU,7003
20
21
  airtrain/core/skills.py,sha256=kIkI1MwIzuAwyoxdnZ5MGOb70BOB-njbVb_csJEdVvc,9244
22
+ airtrain/core/__pycache__/__init__.cpython-313.pyc,sha256=DEcKhvQGoYLFbdtCs9Fqp8sKXh8xM_viOh0drOix1cY,534
23
+ airtrain/core/__pycache__/schemas.cpython-313.pyc,sha256=DX72FLcg5BWaj-xv6yjPFZvrhYhQY7jte89gIrNGEw0,8327
24
+ airtrain/core/__pycache__/skills.cpython-313.pyc,sha256=lKR7C-bY2uS4Ad12UNSO8MLVxU-52OLJPC-nzV4u79w,11839
21
25
  airtrain/integrations/__init__.py,sha256=Y0yJt6c6uKOkMXdGPELSc6NYiLrEYr_38acViNPXWNk,2046
22
26
  airtrain/integrations/anthropic/__init__.py,sha256=K741w3v7fWsCknTo38ARqDL0D3HPlwDIvDuuBao9Tto,800
23
27
  airtrain/integrations/anthropic/credentials.py,sha256=hlTSw9HX66kYNaeQUtn0JjdZQBMNkzzFOJOoLOOzvcY,1246
@@ -77,16 +81,16 @@ airtrain/integrations/together/rerank_skill.py,sha256=gjH24hLWCweWKPyyfKZMG3K_g9
77
81
  airtrain/integrations/together/schemas.py,sha256=pBMrbX67oxPCr-sg4K8_Xqu1DWbaC4uLCloVSascROg,1210
78
82
  airtrain/integrations/together/skills.py,sha256=PU2z9YtiavZ8-ODOIXCi0stymaCsvyackTT1g2TOxZ0,11565
79
83
  airtrain/integrations/together/vision_models_config.py,sha256=m28HwYDk2Kup_J-a1FtynIa2ZVcbl37kltfoHnK8zxs,1544
80
- airtrain/telemetry/__init__.py,sha256=338o1fYhEXGh5Sor-aotU_Lfp1z6GpjkZ8z6IIoCKuE,970
84
+ airtrain/telemetry/__init__.py,sha256=_xDHzSmQvRCqihT0QTmF7bS9yKEl2LaZ3Zq05hXaI3k,1108
81
85
  airtrain/telemetry/service.py,sha256=6IB2-FL3fGsYYgMIVQ9MNCp9UlSE5cVhLlB3VBYkAnY,5592
82
- airtrain/telemetry/views.py,sha256=r6E5GnhETmBFogNcKqfWOlpIWiWmK99bo6-Y6e7oRH8,5583
86
+ airtrain/telemetry/views.py,sha256=qob1swyLNEk_UIpDi5VTwMDsEsGZhJheFQrGbP8T5hw,8115
83
87
  airtrain/tools/__init__.py,sha256=RRqbnUqKorql5D1FDQArxpdwC5d8kUaeNzN9iZKY8V8,827
84
88
  airtrain/tools/command.py,sha256=-Qmto_PqivHQBasW8PtSYoTk_NR5Wl4zz4n7u71egMQ,6983
85
89
  airtrain/tools/filesystem.py,sha256=-YYdHj_KeSWPYXeRhWhIX9s_KujVA1R5tF3r93zRVTU,6324
86
90
  airtrain/tools/network.py,sha256=YR0AtMXDXkhCsXcx7_t2d12ItnKY8XXTmyP1kdj2M4c,3883
87
91
  airtrain/tools/registry.py,sha256=K-1H5EipYcDNDx2jdpsEY9gjfV4aNCGI1pY2UsgSpC0,10246
88
- airtrain-0.1.57.dist-info/METADATA,sha256=4r6uFows2tXs6mrVUblGy-wyzQdk9KmKs5D1bCo6HC8,6503
89
- airtrain-0.1.57.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
90
- airtrain-0.1.57.dist-info/entry_points.txt,sha256=rrJ36IUsyq6n1dSfTWXqVAgpQLPRWDfCqwd6_3B-G0U,52
91
- airtrain-0.1.57.dist-info/top_level.txt,sha256=cFWW1vY6VMCb3AGVdz6jBDpZ65xxBRSqlsPyySxTkxY,9
92
- airtrain-0.1.57.dist-info/RECORD,,
92
+ airtrain-0.1.58.dist-info/METADATA,sha256=3FCm8ujh-Lu1bEttg5i2GhsONwI5WwjQYAhSl2R10P0,6503
93
+ airtrain-0.1.58.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
94
+ airtrain-0.1.58.dist-info/entry_points.txt,sha256=rrJ36IUsyq6n1dSfTWXqVAgpQLPRWDfCqwd6_3B-G0U,52
95
+ airtrain-0.1.58.dist-info/top_level.txt,sha256=cFWW1vY6VMCb3AGVdz6jBDpZ65xxBRSqlsPyySxTkxY,9
96
+ airtrain-0.1.58.dist-info/RECORD,,