Comments (4)
not sure if it's related but I also have applied the types and it generated NoneType
as a parameter, which is unknown to standard python and not getting added to the import (the only option would be to import it from monkeytype but I actually don't want monkeytype imports in my business code).
from monkeytype.
@carljm can i take this one
from monkeytype.
@m1schka Yeah, that's this bug. We have
MonkeyType/monkeytype/stubs.py
Line 327 in d36c344
NoneType
at all in an annotation, it should always be translated to None
.
@iamrajhans Sure, thank you!
from monkeytype.
I wrote a test case for this. It happens when types like Optional[str, NoneType] or even more complex occur.
My example:
def test_union_nonetype_annotation(self):
"""NoneType should always be rendered as None"""
sig = Signature.from_callable(UpdateSignatureHelper.has_annos)
sig = update_signature_args(sig, {'a': Dict[str, Dict[str, Union[str, NoneType]]]}, has_self=False,
ignore_existing_annotations=True)
stub = FunctionStub('test', sig, FunctionKind.MODULE)
expected = 'def test(a: Dict[str, Dict[str, Union[str, None]]], b) -> int: ...'
assert stub.render() == expected
All the magic happens in render_annotations():
https://github.com/Instagram/MonkeyType/blob/master/monkeytype/stubs.py#L333
I'll submit a PR since this keeps biting me.
from monkeytype.
Related Issues (20)
- ValueError: source code string cannot contain null bytes
- New release HOT 2
- Compare observed types to existing type annotations HOT 1
- Empty lists result in overly broad types HOT 1
- Issue with Callable type for < Python 3.9 HOT 3
- Better documentation for how to use MonkeyType with multiple processes/threads HOT 3
- Collect types for non-module functions HOT 1
- provide a type rewriter to find common base class HOT 5
- how open Instagram without password
- Adding an index to monkeytype.sqlite3 speeds up stub generation HOT 1
- Keyword-only arguments are not captured in traces
- Calls to locally defined functions are not captured
- `*args` and `**kwargs` are not captured in traces HOT 1
- Add pre-commit support HOT 1
- `AttributeError: 'ellipsis' object has no attribute '__qualname__'` HOT 1
- pep_563 flag creates imports that don't match the usage of the name HOT 4
- Support PEP 585 - list[int] instead of typing.List[int]
- Stubs with positional-only args output too many slashes and cause a SyntaxError
- Error when parameter in external file is class defined in `__main__` HOT 1
- Return type not traced when returning constant (Python ≥ 3.12)
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 monkeytype.