adriangb / xpresso

A composable Python ASGI web framework
https://xpresso-api.dev/
MIT License
176 stars 4 forks source link

doc: binder example for msgspec #106

Open adriangb opened 1 year ago

adriangb commented 1 year ago

cc @jcrist

I'm not covering a bunch of edge cases and additional features (empty bodies, include_in_schema=False, descriptions, etc.) nor am I covering doing the same thing for query/path/etc. params. I think it would be interesting as a 3rd party package though!

adriangb commented 1 year ago

TODO: write the docs

codecov-commenter commented 1 year ago

Codecov Report

Merging #106 (333d195) into main (a292301) will increase coverage by 0.00%. The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #106   +/-   ##
=======================================
  Coverage   98.44%   98.44%           
=======================================
  Files         127      128    +1     
  Lines        4231     4237    +6     
  Branches      598      598           
=======================================
+ Hits         4165     4171    +6     
  Misses         32       32           
  Partials       34       34           
Impacted Files Coverage Δ
tests/test_docs/advanced/binders/test_msgspec.py 100.00% <100.00%> (ø)
adriangb commented 1 year ago

In the medium- to long-term do you see msgspec support living in the docs like this? Or would you pull the functionality defined here into xpresso itself (or a plugin package)?

For now I think it will just live in the docs. To be honest, I only have bandwidth to support one version of Xpresso. Even it is very pluggable, there is a non-trivial amount of work required to support something like xpresso-msgspec, especially if there was support for using msgspec to parse complex query params, get good integration into the returning msgspec.Structs directly like you mention above, etc. I do think it would be really interesting to explore at least short term, I just am afraid to commit to maintaining something like that long term. Do you think it would be an interesting experiment to try and build something more in-depth and see how it goes without committing to long-term maintenance?