4 ms·
Pydantic-resolve, a hierarchical solution for data fetching and processing
- tangkikodo 3y agoA powerful tool to build nested view data. based on pydantic, pydantic-resolve uses declaretive way to define and resolve (fetch) data from top to bottom and provides post-process hooks from bottom to top (friendly for aggregation & calculation) it also provides visibility control over all fields. concept diagram: https://raw.githubusercontent.com/allmonday/pydantic-resolve/master/doc/imgs/concept.png https://raw.githubusercontent.com/allmonday/pydantic-resolve...
- tangkikodo 3y agoinspired by graphql (define schema in declaretive way) however gql itself only walks from top to bottom, which lack the ability to change data after it's descdenants are resolved. pydantic-resolve is progressive, this means you don't need to introduce a big framework to build a nested view data, all you need to do is just: - simpilify your query of root data (no complex sql any more, then you can reuse it) - define the related data you wanted, and then let resolver to fetch it. that's all~
- dlahoda 3y agoThere was COM/Corba like this. It was hanging/freezing. So somebody will have to refactor it back to normal.
- deleted 3y ago[deleted]
- navbaker 3y agoI’ve used Pydantic with FastAPI, but can’t really get a solid feel for what this is doing. Can someone explain this to me like I’m 5?
- thornewolf 3y agosay you have a model with two attributes profile_image_url: str and profile_image: bytes it's expensive to fetch profile_image since it will involve a http call to profile_image_url. right now, i would resolve this by using the @property decorator this library offers an alternative method for populating profile_image by explicitly giving the user a hook for when they want to resolve this dependency. they might want to do it before access time, they might want to batch requests to this external profile_image service to reduce roundtrip latency this pattern has potential to become more powerful if we only have user_id in context initially. we might want to fetch the product_image_url from the database then fetch the actual product_image after. this dependency graph might be simplified/optimized using this tool the repo provides its own concrete example of this form with batch_person_age_loader
- navbaker 3y agoThanks!
- Gimpei 3y agoI too was confused. If the authors are reading this, the readme could do with a little bit more of an intro.
- tangkikodo 3y agomy fault lol. here is a step by step tutorial, building various kinds of views data you need, and keep service layer simple and clear at the same time. https://github.com/allmonday/composition-oriented-development-pattern https://github.com/allmonday/composition-oriented-developmen... code is ready, documents of english version is still wip.
- codetrotter 3y agoThat sounds pretty useful. Anyone know of a library to do the same in Rust?
- 3y ago
- malcolmgreaves 3y agoIs this more-or-less functional reactive programming (FRP) using Pydantic?
- tangkikodo 3y agonot really, it only traversal (with resolving descendants at the same time) once from top to bottom and then back.
- canadiantim 3y agoCould this be used to efficiently model an hierichical comment thread for example, like HN or reddit?
- lucky_cloud 3y agoThe modeling could be done in pure Pydantic. This project might be helpful in fetching the actual content from a database in an efficient way.