Skip to content

lolord/dependencies

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dependencies

Introduce

dependencies is a python library for resolving parameter dependency

Feature

  • Parameter dependency parsing
  • Support class and pydantic.BaseModel dependencies
  • Sub dependency
  • Asynchronous

Requirements

Python 3.11 or above.

Installation

pip install git+https://github.com/lolord/dependencies.git

Usage

from typing import Annotated, Dict, List

from pydantic import BaseModel

from dependencies import Depends, decorator


class User(BaseModel):
    name: str
    score: int


@decorator
def create_user(user:Annotated[ User, Depends()]) -> User:
    return user


async def get_users(users: List[Dict]) -> List[User]:
    results: List[User] = []
    for user in users:
        results.append(await create_user(**user))
    return results


async def length(users: Annotated[List[User] , Depends(get_users, use_cache=True)]):
    return len(users) or 1


async def sum_score(users: Annotated[List[User], Depends(get_users, use_cache=True)]):
    return sum(user.score for user in users)


@decorator
async def avg(sum:Annotated[int, Depends(sum_score)], length: Annotated[int, Depends(length)]):
    return sum / length


async def main():
    user = await create_user(name="Tom", score=90)
    assert user.name == "Tom"
    assert user.score == 90

    users = [{"name": "Tom", "score": 90}, {"name": "Bob", "score": 80}]
    assert await avg(users=users) == 85

About

A python library for resolving parameter dependency

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors