Skip to content

Definitely typed. Type any object to any type as you wish.

License

Notifications You must be signed in to change notification settings

AWeirdDev/definitely

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

definitely

Typing tricks that make your type checker a little more quiet.

Key features:

  • definitely – Type everything as you wish.
  • asyncily – Run a function asynchronously.
  • asyncily_iterate – Iterate through an iterator asynchronously.
  • reversely – Reverse a dictionary.
pip install definitely-typed

I should all be responsible about this, admittedly. Sorry guys.

Methods

They just exist!

def definitely

Definitely typed.

person = "Charles"

# Transforms `person` into any type you desire
assert definitely(person, int)

reveal_type(person)
#           ^^^^^^
# runtime:     str
# typecheck:   int

The runtime type WILL NOT change, yet when TYPE_CHECKING, the variable acts just like the desired type (in this case, int).

def asyncily

Asynchronously run a function.

# You can use this as a decorator like so:
@asyncily
def buy_stuff(item: str):
    print("dad is going out!")
    time.sleep(2 << 40)
    print("came back with the %s!" % item)

await buy_stuff("milk")

# Or, you can use this as a "async function factory" like so:
def make(name: str):
    return f"Made product: {name!r}"

amake = asyncily(make)
await amake("milk")

def asyncily_iterate

Asynchronously iterate through an iterator.

def get_resources():
    yield from ["banana", "guava", "apple"]

async for resource in asyncily_iterate(get_resources()):
    print("-", resource)

# Output:
# - banana
# - guava
# - apple

def reversely

Reverse a dictionary.

metadata = {"password": 1234, "total_users": 100_000}
reversed_metadata = reversely(metadata)

assert reversed_metadata == {1234: "password", 100_000: "users"}

reveal_type(reversed_metadata)
#           ^^^^^^^^^^^^^^^^^
# runtime:     dict[int, str]
# typecheck:   dict[str, int]

(c) 2024 AWeirdDev, and other silly people

About

Definitely typed. Type any object to any type as you wish.

Topics

Resources

License

Stars

Watchers

Forks

Languages