Comments (5)
Regarding this article http://wphomes.soic.indiana.edu/jsiek/what-is-gradual-typing/, what would ?
be? Any
or T
?
I'm not sure I ever considered unbound type variables as an explicitly valid use case for is_subtype
. I think I handled them to allow checking of partly bound types.
That said, if is_consistent_with
only differs from is_subtype
by additional rules for Any
that feature would be trivial to add and I'd happily do. (Implementing a proper is_subtype
is the highly non-trivial thing here.) As you observed, for is_subtype
Any
is never a subtype except of itself.
from pytypes.
?
in the article you mentioned would be Any
in my example.
I believe that the only difference between the is_consistent_with
and is_subtype
relationships is that is_consistent_with
has that special rule for Any
that always returns true regardless if it's on the LHS or RHS.
from pytypes.
If you like, write a PR for this. It shouldn't be too difficult, would safe me some work and you would be appropriately credited in the project history. Otherwise I'll see when I can add this...
from pytypes.
I can write the PR, no problem. I've already hacked my local copy of pytypes and it seems to work.
However, I am still investigating typing module types in Python 3.x to see if they can be used in our project. (Today's wrinkle is pickling, which seems to be broken for 3.5 and 3.6. python/typing#511)
from pytypes.
Regarding pickling, maybe a solution by pytypes on this front is type_str
. It creates a string representation of a type such that the type can be trivially reconstructed using eval. There are some pitfalls though: Imports must be sufficient and of course using eval
requires a trusted source. Also, it might not support every type yet.
from pytypes.
Related Issues (20)
- Utility to validate stubfile signatures against .py implementations HOT 4
- pytypes is_of_type: counter-intuitive result on semi-primitive types like list and dict HOT 5
- is_of_type does not work as expected with Annotated[Generic[T], ...] HOT 1
- Some differences between Python 3.6 and 3.8 HOT 3
- New release HOT 1
- please improve error messages when functions decorated with @typechecked are called with incorrect types
- pytypes breaks @autoreload in a somewhat dangerous way HOT 8
- `is_subtype` fails with `List[TypeVar]`
- Infer return type of generic functions based on input
- Support Python 3.10 HOT 7
- @typechecked fails to correctly parse functions with PEP 3102
- Incorrect collections imports in type_util.py HOT 1
- VSCode incorrect decorated func hint HOT 7
- AttributeError: 'NoneType' object has no attribute '__bound__' HOT 5
- Partially-annotated functions with default parameter values result in errors. HOT 12
- Error in @typechecked with List[Dict[str, str]] HOT 1
- Remove backports.typing usage
- _check_caller_type can be broken by removing a blank line in typechecker_testhelper_py3.py
- typechecked(string) should have more consistent return type HOT 1
- Python 3.8 Compatibility HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pytypes.