This patch:
* Adds some constants that although undocumented are exposed by the
module
* Modifies the signature of fcntl() to match reality
* Adds missing function stubs
* Modifies few existing constant declarations to match the repository
conventions
I believe the stub is complete now (and if it's not there isn't much
missing).
This is follow-up to a similar commit improving Python 2.7 inspect stub[1].
Similarly, this commit consists of:
* Splitting and reordering the content into sections corresponding
to the module's documentation sections
* Implementing missing functions, classes etc.
* Adding TODOs for things that are either difficult to get or I can't
figure them out right now
* Making the existing code consistent with the newly added things
As suggested in pull request #108 I'm modifying the generic Python 3
stub even though some things changed and were added in various Python
3.x releases - the changes seem to be backwards compatible and the
additions, well, they should not break much except for some false
positives on older Python 3 versions.
Some of the types in this stub were not obvious so I either read the
source code or used my judgment.
[1] 630f718376
This was missing for some reason while the Python 2.7 stubs have it.
Sample test code:
% cat testtype.py
A = type('A', (), {})
print(A.__name__)
Results before:
% python -m mypy --py2 testtype.py
% python -m mypy testtype.py
testtype.py:1: error: Too many arguments for "type"
%
Results after: type checking passes in both modes.
Py3's `shelve` is more restrictive, requiring keys to be `str`, whereas
Py2 allows any hashable type.
E.g.:
s = Shelf({})
s[1] = 'one' # raises AttributeError in py3, but it's OK in Py2