Comments (6)
Super happy to be getting real typing via
mypy-zope
, by the way. It's great. And thanks for the quick replies to these tickets.
Thanks! I'm glad mypy exists and it was possible to marry zope with it. Interfaces become so much more meaningful with it! :)
from mypy-zope.
I think the actual issue is that @provider
isn't handled, unlike @implementer
.
from mypy-zope.
Yes, mypy-zope doesn't know anything about @provider
. That said, I think your declaration is not quite correct? If instance of RequestURL
implements IDependencyInjector
, as registerInjector
suggests, shouldn't RequestURL
be declared with @implementer
instead?
from mypy-zope.
Heh… I had to ask @glyph about this also. @implementer
says that instances of the class will provide the interface. @provider
says that the class itself does so. (Note that the methods are all class methods.)
from mypy-zope.
Super happy to be getting real typing via mypy-zope
, by the way. It's great. And thanks for the quick replies to these tickets.
from mypy-zope.
Heh… I had to ask @glyph about this also.
@implementer
says that instances of the class will provide the interface.@provider
says that the class itself does so. (Note that the methods are all class methods.)
Right, but registerInjector
returns an instance of RequestURL
. So, in order for registerInjector
return type to be correct, an instance of RequestURL
must provide the IDependencyInjector
. However, it does not provide that interface. Only the class itself does, according to @provider
declaration.
So, even though @provider
is currently not supported by mypy-zope
, I suspect the type hint on registerInjector
is not entirely correct. I'd say registerInjector
has to return cls
, not cls()
. Or, alterntively, RequestURL
must implement IDependencyInjector
, not provide it.
from mypy-zope.
Related Issues (20)
- Is there a way to declare Interface intersections? HOT 7
- release a wheel HOT 1
- some way to define self types HOT 2
- convert a protocol to an interface HOT 3
- Interfaces don't play well with @overload HOT 2
- Subclasses of Twisted's amp fail to be determined by mypy-zope
- Doesn't quite understand that dynamically created classes are classes HOT 1
- Types for zope.component
- A way to express "A type which implements these N interfaces" HOT 3
- Error importing plugin "mypy_zope": cannot import name 'SemanticAnalyzerPass2' from 'mypy.semanal' HOT 2
- release that works with current mypy (==0.961) HOT 2
- Potential issue with mypy==0.970-dev HOT 1
- Caching errors with latest version of mypy HOT 1
- adaptation callable ought to return a union type with its second argument
- Regression in upcoming mypy 0.990 HOT 3
- Caching error (Metaclass conflict) with mypy 0.991 HOT 4
- Mypy's `--warn-unreachable` option erroneously considers some `isinstance` calls to be always False with mypy-zope 0.9.0 HOT 6
- make it possible to define a generic interface
- Follow semantic versioning in mypy version pins HOT 4
- mypy 1.3 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 mypy-zope.