Commit Graph
52 Commits
Author SHA1 Message Date
ShantanuGitHubhauntsaninja <>
e3889c776e pep 484: explicit reexport as intended (#4586)
See discussion on typing-sig.
This doesn't take care of some third_party libraries, will follow up on
those.

Co-authored-by: hauntsaninja <>
2020-09-30 10:04:23 -07:00
CebtenzzreandGitHub 1334840323 Make os.fchdir, os.fsync, and os.fdatasync accept FileDescriptorLike (#4544)
For the fd passed to these functions, CPython accepts not just an int,
but also anything with a fileno() method.

Fixes #4539
2020-09-15 16:30:34 -07:00
Jelle ZijlstraandGitHub 0142a87da8 adjust isort config (#4290)
Fixes #4288.

- Default imports to THIRD_PARTY, so in effect we merge the FIRST_PARTY and THIRD_PARTY stubs. This means import order is no longer affected by whether typing_extensions is installed locally.
- Treat typing_extensions, _typeshed and some others as standard library modules.

Note that isort master is very different from the latest release; we'll have to do something
different if and when the next isort release comes out.
2020-06-29 00:00:21 -07:00
Jelle ZijlstraandGitHub 5d553c9584 apply black and isort (#4287)
* apply black and isort

* move some type ignores
2020-06-28 13:31:00 -07:00
Jelle ZijlstraandGitHub 43e93f803f use _typeshed's Path aliases (#4214) 2020-06-10 20:57:09 -07:00
ShantanuGitHubhauntsaninja <>
de2c2947fe windows: fix splitunc param name (#4143)
Co-authored-by: hauntsaninja <>
2020-05-29 20:37:19 -04:00
Rune TynanandGitHub 5e80ca9e44 Fix stubtest failures for path files on windows (#4096) 2020-05-27 09:39:26 +02:00
Rebecca ChenandGitHub 037377f502 Mark the arguments to os.killpg as positional-only in Python 2. (#4033)
This was already done in Python 3. In Python 2 as well, this method does
not take keyword arguments.
2020-05-17 18:06:35 -07:00
Debjyoti BiswasandGitHub f4a646d43c Add PathLike to genericpath.exists and re-export (#3897)
Closes#3492
2020-04-02 09:51:59 +02:00
ShantanuandGitHub a19caac361 os.path: fix arg names (#3748) 2020-02-21 11:55:21 +01:00
Sebastian RittauandGitHub ec7960a8cb Convert namedtuples to class syntax (#3321) 2019-10-20 10:37:33 +02:00
Sebastian RittauandJelle Zijlstra 256b3ce8ab Remove a bunch of unused imports (#3323) 2019-10-08 07:59:32 -07:00
Rebecca ChenandSebastian Rittau 3f8c2169d1 Define listdir in posix and import it in os. (#3258) 2019-09-23 23:41:05 +02:00
Benjamin PetersonandJelle Zijlstra baea5a7bc3 Widen the annotation of os.write to include buffer. (#3109) 2019-08-10 13:15:46 -07:00
Michael J. SullivanandJelle Zijlstra f06f2e97bb Make os.altsep Optional on non-win32 platforms (#2918)
Keep it str on win32 to avoid breaking win32-specific code that relies
on it.
2019-04-12 23:00:19 -07:00
Rebecca ChenandJelle Zijlstra d275e73e1f Remove pytype workaround in os/__init__.pyi. (#2797)
Pytype release 2019.02.13 fixed the bug that
necessitated this workaround.
2019-02-14 12:29:19 -08:00
Michael J. SullivanandSebastian Rittau 95afb86022 Move posix.stat_result to os.stat_result on python 3 (#2683)
In python 3, posix.stat_result is a re-export of os.stat_result, while
in python 2 it was the reverse. Update typeshed to reflect this.
2018-12-13 19:20:42 +01:00
Sebastian RittauandJelle Zijlstra 517d2b6012 Remove unneeded ignores (#2624) 2018-11-23 09:51:44 -08:00
Sebastian RittauandJelle Zijlstra ea2122741f os.path.exists (Py 3) accepts a file descriptor (#2451)
Closes #1653
2018-09-24 07:53:44 -07:00
Yusuke MiyazakiandJelle Zijlstra 1ae2ba0fbe Use sys.platform instead of comments (#2286) 2018-07-03 08:13:04 -07:00
Jelle ZijlstraandIvan Levkivskyi 8084dc1c1f Fix abstract classes in 2.7 (#2247)
Part of #1476.
2018-06-17 17:21:17 +01:00
Anthony SottileandJelle Zijlstra 56c93c85c0 Add NoReturn to execv* family of functions (#2226) 2018-06-15 07:55:45 -07:00
Michael J. SullivanandGitHub db1316d26b os.path.relpath can use a default argument and still use str (#2159) 2018-05-24 13:23:17 -07:00
Jelle ZijlstraandGuido van Rossum b89f9553e9 keep os.path in 2 and 3 consistent (#2152)
We can't merge these because os/__init__ is still different.

Also slight refactor of tests/check_consistent.py to avoid `from os import path`.
2018-05-22 07:14:13 -07:00
Michael LeeandJelle Zijlstra 709b193416 Rearrange overloads to account for optional arguments (#2150)
Basically, the same thing as [my previous pull request][0], except the
fixes are now focusing on functions with overlapping argument counts.

  [0]: https://github.com/python/typeshed/pull/2138
2018-05-19 09:20:16 -07:00
Michael LeeandJelle Zijlstra 97d9f2eb2c Ensures overloads are ordered from narrow to broad (#2138)
This commit reorders any overloads where the first overload was
"shadowing" the second, preventing it from ever being matched by type
checkers that work by selecting the first matching overload alternative.

For example, the first overload alternative below is strictly broader
then the second, preventing it from ever being selected:

    class Parent: pass
    class Child(Parent): pass

    @overload
    def foo(x: *int) -> Parent: ...
    @overload
    def foo(x: int, y: int) -> Child: ...

The correct thing to do is to either delete the second overload or
rearrange them to look like this:

    @overload
    def foo(x: int, y: int) -> Child: ...
    @overload
    def foo(x: *int) -> Parent: ...

Rationale: I'm currently [working on a proposal][0] that would amend
PEP 484 to (a) mandate type checkers check overloads in order and
(b) prohibit overloads where an earlier alternative completely shadows
a later one.

  [0]: https://github.com/python/typing/issues/253#issuecomment-389262904

This would prohibit overloads that look like the example below, where
the first alternative completely shadows the second.

I figured it would be a good idea to make these changes ahead of time:
if my proposal is accepted, it'd make the transition smoother. If not,
this is hopefully a relatively harmless change.

Note: I think some of these overloads could be simplified (e.g.
`reversed(...)`), but I mostly stuck with rearranging them in case I was
wrong. The only overload I actually changed was `hmac.compare_digest` --
I believe the Python 2 version actually accepts unicode.
2018-05-17 09:45:33 -04:00
Jelle ZijlstraandGitHub 55be42f6d6 add __fspath__ support to os.path (#2053)
Fixes #1997, #2068.

This is tricky because we need to get the return values right (see #1960 for
prior attempts) and we often run into python/mypy#3644. I found that I
could express most signatures correctly using a series of overloads.

A few other changes in here:
- Added splitunc, which according to https://docs.python.org/3/library/os.path.html
  should exist in both Unix and Windows.
- Made the second argument to os.path.curdir Optional to match the implementation.
- Fixed os.path.split, whose previous Path-aware signature triggered python/mypy#3644.
2018-05-15 10:31:40 -04:00
rchen152andMatthias Kramm 38dc8f5a6a Switch usages of mypy_extensions.NoReturn over to typing.NoReturn. (#1942)
* Change mypy_extensions.NoReturn to typing.NoReturn everywhere.
2018-03-05 12:42:29 -08:00
rchen152andMatthias Kramm 76c733dc5b Fix the return type of os.popen() (#1820) 2018-01-10 05:57:29 -08:00
Guido van RossumandJelle Zijlstra 76685480e0 Misc fixes found by running mypy against Dropbox internal codebase "C". (#1575) 2017-08-25 20:34:13 -07:00
Jelle ZijlstraandMatthias Kramm 318cada66c os: merge the top and bottom of os/__init__.pyi (#1458)
* os: merge the top and bottom of os/__init__.pyi

Part of #1427. In preparation for merging the two stubs, I'm making the files
identical as much as possible. This PR merges the top of the file, down to
but not including the definition of statvfs_result, and the bottom up to
and including os.utime.

This PR mostly adds more "if sys.version_info" block. Until the merger
completes, we'll have some Python 2 blocks in the Python 3 stub and vice versa.
I also add a few missing constants and arguments.

In followup PRs I'll merge the rest of the file. I'll put the trickiest part
(the return values of functions like os.stat) in its own PR.

* back out DirEntry from py2

It relies on stat_result which we don't have yet in py2.
2017-07-04 19:30:55 -07:00
Jelle ZijlstraandMatthias Kramm a419b696d4 make os.path identical in Python 2 and 3 (#1459)
Part of #1427. I don't think we can actually merge these until we merge
os/__init__.pyi too, which will take a few more PRs.
2017-07-04 19:27:27 -07:00
Jelle ZijlstraandMatthias Kramm 4a5ff0bb11 use PEP 526-style annotations in os stubs (#1428)
And fix some TODOs.

This will help me check these stubs with my stubcheck tool, and is better
for consistency anyway.
2017-06-22 05:49:23 -07:00
Matthias KrammandGuido van Rossum 6f07424246 fix types in os.path (#1363)
In Python 2, doing
    os.path.join(u"foo", "bar")
is actually legal, and returns a unicode string.
Also os.path.relpath always returns the type of its first argument.

(The solution is not perfect -- e.g.
    os.path.join("a", "b", "c", "d", u"e")
will still result in a type error. )
2017-05-31 10:43:26 -07:00
elmar bucherandJelle Zijlstra 579f25896b fix posix and win32 specific realpath path.pyi definition (PR 2) (#1345)
Fixes #1335.
2017-05-24 18:54:50 -07:00
David EurestiandJelle Zijlstra 26360e821b Merge stdlib/{2,3}/os/path.pyi (#1150)
* Merge stdlib/{2,3}/os/path.pyi

To be renamed into stdlib/2and3/os/path.pyi later.

Also fixes #50

* CR fixes
2017-04-09 19:27:25 -07:00
David EurestiandJelle Zijlstra b03e79886e Fix os.getenv and friends to have consistent types (#1131) 2017-04-03 21:21:35 -07:00
Guido van RossumandGitHub 6a06dd40e1 Revert "Make os.stat_result and friends NamedTuples" (#1113)
* Revert "Added missing attributes of typing.Generator and typing.AsyncGenerator (#886)"

This reverts commit 8b26422b95.
2017-03-29 12:03:50 -07:00
David EurestiandJelle Zijlstra 6c3e175c8d Make os.stat_result and friends NamedTuples (#1103) 2017-03-29 10:36:04 -07:00
David EurestiandJelle Zijlstra ec83ed90eb Fix some type errors in os module. (#1101)
* Fix some type errors in os module.

Found these because they were different between Python 2 and 3.

* Code Review changes

* Make it __arg0
2017-03-26 16:39:07 -07:00
David EurestiandJelle Zijlstra 2888b53924 Merge comments between stdlib/{2,3}/os/__init__.pyi to make diffing easier (#1099) 2017-03-25 20:50:21 -07:00
David EurestiandJelle Zijlstra ce3a76bb97 Fix arg types for os.execv* (#1075) 2017-03-22 10:50:15 -07:00
David Euresti b362177cc4 Fix typo 2017-03-20 22:36:44 -07:00
David Euresti 2804788efa Bring some things back to Union types 2017-03-20 22:29:43 -07:00
David Euresti a4d70e5b01 Bring some things back to Union types 2017-03-20 22:26:06 -07:00
David Euresti 66fbb26aec Use Union[bytes, Text] in os.pyi
In order to unify these two versions I'm making all paths be _PathType = Union[bytes, Text]
Fixes #439
2017-03-20 21:56:14 -07:00
David EurestiandŁukasz Langa d57bce361f Reorder 2/os/__init__.py for combining
This was a simple reordering of the lines in the file so that it looks like 3/os/__init__.py.
This should let us more easily combine the files
2017-03-20 12:06:20 -07:00
David FisherandŁukasz Langa 2cb8e184cc Add NoReturn (#811)
* Add NoReturn
2017-01-04 13:38:05 -08:00
Lukasz Langa c0c982ada5 Add missing Dict imports. 2016-12-21 01:15:26 -08:00
Lukasz Langa 147772950f Fixing flake8 E265 errors 2016-12-20 00:16:44 -08:00