Skip to content

3.0.0

Compare
Choose a tag to compare
@eigenein eigenein released this 07 Nov 17:01
· 83 commits to main since this release

Notable changes

  • Response markers allow transforming response payload before validating it with a model. This release includes the basic built-in Map and StatusCodeMixin markers as a proof-of-concept. More response markers will be added before 3.0.0 to restore similar functionality from 2.x
  • Preparation work to reduce coupling to Pydantic. Simple response types, which are not data classes or models, are already supported without a need to wrap them into BaseModel
  • Fixed the critical bug when Combadge failed on non-dict responses
  • Re-organized documentation

Migrating Protocol classes from 2.x

  • Replace Json and JsonField markers with Payload and Field, correspondingly
  • Replace StatusCode, Content, and Reason pseudo-fields with response markers

All changes

💥 Breaking changes

  • BREAK: refactor BaseBackendRequest by @eigenein in #66
  • BREAK: refactor request mixins and markers by @eigenein in #67
  • BREAK: get rid of the marker shortcuts 🧚 by @eigenein in #72
  • BREAK: redesign response markers by @eigenein in #84
  • BREAK: make marker interfaces more consistent with each other by @eigenein in #85

⚡️ Improvements

  • OPT: group request preparers by their corresponding parameters by @eigenein in #71
  • NEW: support response markers on HTTPX and Zeep by @eigenein in #73
  • NEW: implement the basic response markers by @eigenein in #74
  • OPT: re-organize the docs by @eigenein in #75
  • NEW: support Python 3.12 by @eigenein in #78
  • NEW: test on PyPy 3.10 by @eigenein in #79
  • BREAK: add the Map core response marker by @eigenein in #80
  • NEW: markers GetItem, Drop, ReasonPhraseMixin, TextMixin, and StatusCode by @eigenein in #83

🐛 Fixes

🎨 Other changes

  • OPT: Update all non-major dependencies ⬆️ by @renovate in #63
  • OPT: extract combadge.core.BaseRequest by @eigenein in #65
  • OPT: refactor Signature by @eigenein in #69
  • OPT: missing return type does not need to be wrapped into RootModel by @eigenein in #70
  • OPT: replace RootModel with TypeAdapter by @eigenein in #76
  • OPT: remove RootModel where it is unnecessary by @eigenein in #82
  • OPT: add @override decorators and fix pytest imports by @eigenein in #86
  • OPT: Update all non-major dependencies ⬆️ by @renovate in #87

Full Changelog: 2.0.1...3.0.0