Comments (4)
I'm all for raising until a reasonable use case presents itself. At least as long as grumpy is in alpha/beta.
from grumpy.
Thanks for the report! This is something that I've fretted a bit about. The real trick is that you have to update the slot on all the subclasses. Here's how CPython does it. Unfortunately, whereas CPython holds the GIL while it does all this work, Grumpy must find some other way to synchronize it, or live with poor consistency guarantees around updating types.
Worse is when you assign to a type's __bases__
attribute. This is not something I can ever imagine a reasonable program doing, but CPython jumps through hoops to support it.
Personally I think it's crazy to support this kind of monkey patching and I'm inclined to raise an exception when people try things like this. But maybe there are legitimate use cases that I'm overlooking. Thoughts and opinions are welcome here.
from grumpy.
I would love to monkeypatch datetime.datetime.now() to be allowed to test time in my billing code...
https://bugs.python.org/issue9528
from grumpy.
You're right that tests are a potentially valid use case for that. Note that normal functions (ones that reside in type(obj).__dict__
) can be monkey patched perfectly well. The issue is just the slot functions that don't work quite right, like __add__
.
from grumpy.
Related Issues (20)
- expected 'IDENT', found 'INT' 7 HOT 2
- <unknown>:1:1-1:2: fatal: unexpected .: expected (, +, -, @, [, `, assert, break, class, complex, continue, def, del, exec, float, for, from, global, ident, if, import, int, lambda, newline, nonlocal, not, pass, print, raise, return, strbegin, try, while, with, yield, { or ~ ../third_party/stdlib/StringIO.py
- Implement __getattribuate__ HOT 2
- Build in windows
- js to golang ? HOT 2
- Should resolve ImportError on run time, not compile time HOT 1
- ZeroDivisionError
- conversion type not yet supported: c
- Asking HOT 2
- this is not working. because bool(AssertionError) is true
- Active fork of grumpy HOT 22
- How to import and call function(written in python and transferred into go by grumpc) in go? HOT 1
- Failed to import some python std libs(e.g. json) in python code and then called in go code
- question: is grumpy dead? HOT 1
- Rebuild tool for automated refactoring
- Fix simple typo: implementating -> implementing HOT 1
- Question : does grumpy supports only python2.7 codes? HOT 2
- Is this project abandoned? HOT 3
- make: *** No rule to make target 'run'. Stop. HOT 1
- Let's try it, python bindings cgo-less
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 grumpy.