You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+9-1Lines changed: 9 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,19 +35,23 @@ We [keep a changelog.](http://keepachangelog.com/)
35
35
36
36
### Changed
37
37
38
+
-**Performance:** Optimized dynamic routing by introducing an instance-level `_endpoint_cache`, resulting in a ~50x speedup for endpoint resolution.
39
+
-**Performance:** Reduced RAM footprint and garbage collection overhead by implementing `__slots__` across core `Client`, `Config`, and `Endpoint` classes.
40
+
-**Performance:** Optimized API call overhead by replacing dynamic header generation with `types.MappingProxyType` (`_JSON_HEADERS`, `_TEXT_HEADERS`) and moving the retry configuration to a `ClassVar`.
41
+
-**Performance:** Improved cold boot initialization time by replacing regex (`re.match`) with native string manipulation (`.split()`) in `mailjet_rest/utils/version.py`.
38
42
- Test Suite Modernization: Migrated from legacy `unittest` monolith to `pytest`, segregated into `tests/unit/` (offline) and `tests/integration/` (live network), adhering to the AAA (Arrange, Act, Assert) pattern.
39
43
- CI/CD Optimization: Drastically improved GitHub Actions speed and reliability by implementing native pip dependency caching (`cache: 'pip'`) and isolated wheel installation tests.
40
44
- Refactored `Client` and `Config` using `@dataclass` and `requests.Session` for robust connection pooling on multiple sequential requests.
41
45
- Refactored `Endpoint._build_url` cyclomatic complexity by extracting pure `@staticmethod` helpers (`_build_csv_url`, `_check_dx_guardrails`) to satisfy strict static analysis.
42
46
- Expanded `pre-commit` hooks for robust security and formatting (ruff, mypy, pyright, typos, bandit, semgrep).
43
47
- Defined explicit public module interfaces using `__all__` to prevent namespace pollution.
44
-
- Fixed `statcounters` required filters (explicitly added the `CounterTiming` parameter).
45
48
- Cleaned up local development environments (`environment-dev.yaml`) and pinned sub-dependencies for stable CI pipelines.
46
49
- Tooling Consolidation: Completely migrated to Ruff as the single source of truth for linting and formatting, purging legacy tools (Black, Flake8, Pylint, Pydocstyle) from `pyproject.toml` and Conda environments.
47
50
- Documentation: Rewrote `README.md` to highlight modern DX configurations, including Context Managers, robust Error Handling, and Smart Telemetry.
48
51
49
52
### Deprecated
50
53
54
+
- Passing `timeout=None` to allow infinite socket blocking is deprecated to mitigate CWE-400. Explicit timeouts will be strictly enforced in v2.0.
51
55
- Legacy HTTP exception classes (`AuthorizationError`, `ApiRateLimitError`, `DoesNotExistError`, `ValidationError`, `ActionDeniedError`). The SDK natively returns the `requests.Response` object for standard HTTP status codes.
52
56
- The legacy `ensure_ascii` and `data_encoding` arguments in the `create` and `update` method signatures. The underlying `requests` library handles UTF-8 serialization natively.
53
57
- The `parse_response` and `logging_handler` utility functions. Logging is now integrated cleanly and automatically via Python's standard `logging` library. See the `README` for the new 2-line setup.
@@ -57,6 +61,10 @@ We [keep a changelog.](http://keepachangelog.com/)
57
61
- Root `test.py` monolith (replaced by a modular `test/` directory structure).
58
62
- Redundant class constants (`API_REF`, `DEFAULT_API_URL`).
59
63
64
+
### Fixed
65
+
66
+
- Fixed `statcounters` required filters (explicitly added the `CounterTiming` parameter).
0 commit comments