Skip to content

Revert "get type from function annotation" #209

Description

@sobolevn

Ok, I really thought that this is a good idea. But, now it seems to me that I was wrong.

Why?

  1. First of all, it is very limited. For example, you cannot write def a(instance: Union[str, bytes]). We can only work with Instance types because of the limited runtime-dispatch capabilities
  2. It makes our code much more complex. And I mean it! With this feature we now have to typecheck a whole other set of cases. Let's see some examples:
def ex():
   ...

some.instance(ex)  # will typecheck, because we allow callables, but should not.
# So, we need a plugin support for this - and it is really complex, because it has lots of corner cases
  1. It makes our code much less type-safe. There are cases when Callable should not be allowed into first .instance() call
  2. Runtime algorithm is not perfect as well, it is now focused on getattr(arg, '__annotations__') and the thing is arg might have __annotations__ even if it is not a function. So, I need to figure out another solution. But, probably the best way to solve this is to remove this feature

So, I have decided to remove this. Yes, it is a breaking changed, but there are just several users, and upgrade is really easy.

Reverts #136

Activity

  1. self-assigned this
    on Jun 7, 2021
  2. added a commit that references this issue on Jun 7, 2021
    37c99d8
  3. added a commit that references this issue on Jun 11, 2021
    2894b6c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions