Comments (4)
Thanks for trying it out!
It is an interesting problem. As it turns out, this is a problem with blindly attempting to enforce runtime type safety on every attribute of a given class (especially if it inherits from an inbuilt class).
It will be possible to use named tuples as a type hint in the functions. However, it will be slightly harder to make named tuples truly typed.
I have some ideas how it can be done. I will look at it over the coming weekend and will keep you updated.
from enforce.
As I don't consider myself a power user yet, I'll wait for some sort of pypi release. But thanks for implementing this!
from enforce.
I am sorry for the long delay but the pypi version of Enforce.py was just updated to 0.3.2. This version includes all the fixes for the NamedTuples and adds a support for Python 3.5.3 and 3.6.0.
Please have a look if you are still interested.
from enforce.
OK, I just pushed a patch into 'dev' branch enabling your specific use case of NamedTuples. Full support for named tuples (i.e. named tuple as a type hint) will be coming a bit later.
from enforce.
Related Issues (20)
- License file
- enforce on static methods HOT 1
- runtime_validation yields a false positive when inheritance is involved HOT 2
- enforce is not transparent for Callable types - EnforceProxy HOT 2
- Typing error HOT 1
- It's impossible to install v 0.3.5 (`dev` branch) HOT 1
- Enable `runtime_validation` package/module-wide
- TypeError: 'NoneType' object is not iterable when using Optional[Tuple[str, str]]
- __init__ signature is not preserved for Generic classes HOT 1
- "User defined generic does not accept provided constraints" error when 'Type' is used in hint HOT 4
- Type check mypy TypedDict
- enforce ignore default values
- not compatible with python 3.7 HOT 9
- Forward references on classes
- @runtime_validation leaks refcounts and therefore causes memory leaks
- New enforce fork for Python 3.5.10, 3.6, 3.7, 3.8, 3.9 HOT 10
- `AttributeError: can't set attribute` with namedtuple HOT 1
- Python 3.8 AttributeError: module 'typing' has no attribute 'TupleMeta' HOT 1
- Data validation via `typing.Annotated`
- Support for `@overload`ed callables
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 enforce.