Skip to content

Commit 871c052

Browse files
cursoragentsl0thentr0py
authored andcommitted
Migrate client.py to type annotations, resolve complex type flows
1 parent 9c0bf32 commit 871c052

File tree

2 files changed

+126
-156
lines changed

2 files changed

+126
-156
lines changed

MIGRATION_STATUS.md

Lines changed: 44 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,14 @@ This report documents the progress of migrating the Sentry Python SDK codebase f
6060
- Converted complex threading operations
6161
- Updated envelope processing methods
6262

63+
11. **`sentry_sdk/client.py`** - ✅ Complete 🎉
64+
- **MAJOR MILESTONE**: Largest file with 65+ type comments
65+
- Migrated main client class with complex method signatures
66+
- Fixed type flow issues with event processing pipeline
67+
- Resolved variable shadowing problems
68+
- Converted all overloaded methods and TYPE_CHECKING blocks
69+
- Updated capture_event, _prepare_event, and all core functionality
70+
6371
## Migration Tools Created ✅
6472

6573
### 1. Automated Migration Script
@@ -84,17 +92,12 @@ This report documents the progress of migrating the Sentry Python SDK codebase f
8492

8593
The following core files still contain significant numbers of comment-based type annotations:
8694

87-
1. **`sentry_sdk/client.py`** - ~65 type comments
88-
- Main client class with complex method signatures
89-
- Event processing and capture methods
90-
- Critical for SDK functionality
91-
92-
2. **`sentry_sdk/serializer.py`** - ~45 type comments
95+
1. **`sentry_sdk/serializer.py`** - ~45 type comments
9396
- Complex serialization logic
9497
- Nested function definitions
9598
- Type-heavy data processing
9699

97-
3. **`sentry_sdk/tracing.py`** - ~20 type comments
100+
2. **`sentry_sdk/tracing.py`** - ~20 type comments
98101
- Tracing and span functionality
99102
- Complex type relationships
100103

@@ -119,22 +122,23 @@ Lower priority, but hundreds of test files contain comment-based annotations:
119122
## Migration Statistics
120123

121124
### Updated Progress:
122-
- **Core files migrated:** 10/13 major files ✅ (~77%)
123-
- **Estimated remaining in core SDK:** ~130 type comments
124-
- **Total files with type comments:** ~190+ remaining
125-
- **Estimated remaining type comments:** ~800+
125+
- **Core files migrated:** 11/13 major files ✅ (~85%)
126+
- **MAJOR MILESTONE:** Main client.py completed
127+
- **Estimated remaining in core SDK:** ~65 type comments
128+
- **Total files with type comments:** ~185+ remaining
129+
- **Estimated remaining type comments:** ~730+
126130

127131
### By Category:
128-
- **Function type comments:** ~300+ remaining
129-
- **Variable type comments:** ~250+ remaining
130-
- **Parameter type comments:** ~250+ remaining
132+
- **Function type comments:** ~250+ remaining
133+
- **Variable type comments:** ~240+ remaining
134+
- **Parameter type comments:** ~240+ remaining
131135

132136
## Next Steps 🚀
133137

134-
### Phase 1: Complete Core SDK Migration (In Progress)
135-
1. **NEXT:** Migrate `sentry_sdk/client.py` (highest priority - main client)
136-
2. **THEN:** Migrate `sentry_sdk/serializer.py` (complex but critical)
137-
3. **FINALLY:** Complete remaining core SDK files
138+
### Phase 1: Complete Core SDK Migration (Nearly Complete!)
139+
1. **NEXT:** Migrate `sentry_sdk/serializer.py` (complex serialization logic)
140+
2. **THEN:** Migrate `sentry_sdk/tracing.py` (tracing functionality)
141+
3. **COMPLETE CORE SDK** - Only 2 major files remaining!
138142

139143
### Phase 2: Integration Migration
140144
1. Use automated script for simple integration files
@@ -178,25 +182,34 @@ Lower priority, but hundreds of test files contain comment-based annotations:
178182
# After: self._thread: Optional[threading.Thread] = None
179183
```
180184

181-
### Complex Patterns Requiring Manual Migration:
185+
5. **Complex Type Flow (client.py patterns):**
186+
```python
187+
# Before:
188+
# event = new_event # type: Optional[Event] # type: ignore[no-redef]
189+
# After:
190+
# event = new_event # Updated event from processing
191+
```
192+
193+
### Complex Patterns Successfully Migrated:
182194

183-
1. **Multi-line Function Signatures:**
195+
1. **Variable Shadowing Resolution:**
184196
```python
185-
def complex_function(
186-
param1, # type: Type1
187-
param2, # type: Type2
188-
):
189-
# type: (...) -> ReturnType
197+
# Before: hint = dict(hint or ()) # type: Hint
198+
# After: hint_dict: Hint = dict(hint or ())
190199
```
191200

192-
2. **Nested Generic Types:**
201+
2. **Overloaded Methods:**
193202
```python
194-
# type: Dict[str, List[Optional[CustomType]]]
203+
@overload
204+
def get_integration(self, name_or_class: str) -> Optional["Integration"]: ...
205+
@overload
206+
def get_integration(self, name_or_class: "type[I]") -> Optional["I"]: ...
195207
```
196208

197209
3. **Forward References:**
198210
```python
199-
# type: () -> "SelfReference"
211+
# Before: # type: () -> "SelfReference"
212+
# After: -> "SelfReference"
200213
```
201214

202215
## Benefits Achieved
@@ -207,6 +220,7 @@ From completed migrations:
207220
2. **Consistency:** Unified annotation style where migrated
208221
3. **Modern Python:** Following current best practices
209222
4. **Type Checker Compatibility:** Better mypy/pyright support
223+
5. **Reduced Technical Debt:** Eliminated legacy annotation style
210224

211225
## Validation Results
212226

@@ -215,10 +229,11 @@ The migrated files have been verified to:
215229
- Maintain original functionality
216230
- Pass initial type checking validation
217231
- Resolve linter errors through proper import organization
232+
- Handle complex type flows correctly
218233

219234
## Recommendations
220235

221-
1. **Continue Core SDK Focus:** Complete `client.py` and `serializer.py` to finish core migration
236+
1. **Prioritize Remaining Core Files:** Complete `serializer.py` and `tracing.py` to finish core migration
222237
2. **Use Automated Tools:** Leverage the migration script for simple cases
223238
3. **Manual Review:** Complex files require careful manual migration
224239
4. **Incremental Approach:** Migrate file-by-file to maintain stability

0 commit comments

Comments
 (0)