Commit Graph
100 Commits
Author SHA1 Message Date
Shantanuandhauntsaninja 9796b9ed69 Improve open overloads when mode is a literal union (#7428)
As pointed out by @gvanrossum in https://github.com/python/typing/issues/1096

Improves type inference in cases when we know that mode is
OpenBinaryMode, but don't know anything more specific:
```
def my_open(name: str, write: bool):
    mode: Literal['rb', 'wb'] = 'wb' if write else 'rb'
    with open(name, mode) as f:
        reveal_type(f)  # previously typing.IO[Any], now typing.BinaryIO
```

You may be tempted into thinking this is some limitation of type
checkers. mypy does in fact have logic for detecting if we match
multiple overloads and union-ing up the return types of matched
overloads. The problem is the last overload interferes with this logic.
That is, if you remove the fallback overload (prior to this PR), you'd get
"Union[io.BufferedReader, io.BufferedWriter]" in the above example.

Co-authored-by: hauntsaninja <>
2022-03-06 15:45:34 -08:00
Shantanuandhauntsaninja 6cdecae6f9 Rename Github workflow (#7445)
Calling this "stubtest.yml" is a little confusing, since most of the
time stubtest is actually run out of "tests.yml". I renamed the workflow
in #7306 and this gets the filename to match.

Co-authored-by: hauntsaninja <>
2022-03-06 15:24:18 -08:00
Shantanu 77e5a2d468 Upgrade to stubtest with dunder pos only reverted (#7442) 2022-03-05 18:38:08 -08:00
Shantanuandhauntsaninja a5ec3c69b2 bs4: expose several other classes (#7420)
On the same lines as #7419

These are all imports that are not used within bs4/__init__.py
My main interest here is in exposing NavigableString

Co-authored-by: hauntsaninja <>
2022-03-01 17:59:11 -08:00
Shantanuandhauntsaninja 2f27eaab44 bs4: expose bs4.PageElement (#7419)
This is generally useful. It's also imported in the source without being
used in bs4/__init__.py which in well maintained packages is a pretty
good marker of intention to export

Co-authored-by: hauntsaninja <>
2022-03-01 16:59:50 -08:00
Shantanu ebcfe7bc4e random: use bound methods (#7408) 2022-03-01 09:27:44 +01:00
Shantanu b5f32a609a random: add new default args in py311 (#7400) 2022-03-01 00:19:05 +02:00
Shantanuandhauntsaninja 09c945b32b http: make __str__ match runtime def (#7348)
Co-authored-by: hauntsaninja <>
2022-02-21 17:55:29 -08:00
Shantanuandhauntsaninja c2fb0fb814 Downgrade stubtest a little (#7346)
Fixes #7344 for now.

As discussed in that issue, I think it might make sense to revert the
change to check positional-only arguments on dunders for now, since it
seems to be mostly busywork and has very little benefit for end users.

However, that'll happen on stubtest master, which typeshed isn't yet
ready for.

Co-authored-by: hauntsaninja <>
2022-02-21 17:05:46 -08:00
Shantanuandhauntsaninja 075b8e02eb Update stubtest for async and dunder pos only checking (#7333)
Co-authored-by: hauntsaninja <>
2022-02-21 15:54:16 -08:00
Shantanuandhauntsaninja 65724c254d select: mark positional-only args (#7337)
Co-authored-by: hauntsaninja <>
2022-02-20 17:39:24 -08:00
Shantanu 94127ca2f5 builtins: add __build_class__ (#7324) 2022-02-20 16:16:07 -08:00
Shantanu 6c08c2f4bd graphlib: update for py311 (#7317) 2022-02-20 15:23:27 -08:00
Shantanuandhauntsaninja 584e18491b xml.dom.minidom: add Node.__bool__ (#7323)
Co-authored-by: hauntsaninja <>
2022-02-20 15:22:02 -08:00
Shantanu 2279c87257 collections: fix some Counter nits (#7313) 2022-02-20 12:13:49 +02:00
Shantanu 690864c86f heapq: re-export, add __about__ (#7308) 2022-02-20 12:04:44 +02:00
Shantanu 6b29dca128 cgitb: add __UNDEF__ (#7322) 2022-02-20 11:51:59 +02:00
Shantanu 991b74e166 math: add exp2 (#7321) 2022-02-19 20:57:33 -08:00
Shantanuandhauntsaninja 6985d6a1a1 statistics: update for py311 (#7320)
Co-authored-by: hauntsaninja <>
2022-02-19 20:53:05 -08:00
Shantanuandhauntsaninja 296920a9e9 zlib: update for py311 (#7315)
Co-authored-by: hauntsaninja <>
2022-02-19 19:57:43 -08:00
Shantanuandhauntsaninja 8d911a313b glob: update for py311 (#7316)
Co-authored-by: hauntsaninja <>
2022-02-19 19:54:45 -08:00
Shantanuandhauntsaninja 0eb6baa663 typing: don't accidentally use typing.Self (#7318)
We can switch to it when all type checkers have support

Co-authored-by: hauntsaninja <>
2022-02-19 19:53:30 -08:00
Shantanuandhauntsaninja 823592e100 Update stubtest for final checking (#7312)
Co-authored-by: hauntsaninja <>
2022-02-19 18:53:15 -08:00
Shantanu 06a2024422 decimal: add __libmpdec_version__ (#7311) 2022-02-19 18:17:46 -08:00
Shantanuandhauntsaninja ebdbd564be sqlalchemy: skip stubtest for now (#7310)
Co-authored-by: hauntsaninja <>
2022-02-19 17:47:55 -08:00
Shantanuandhauntsaninja c176911bfb flask-cors: remove unused allowlist (#7309)
Co-authored-by: hauntsaninja <>
2022-02-19 17:12:33 -08:00
Shantanuandhauntsaninja 879b617366 Update stubtest for submodule versions, typeddict fix (#7306)
First step in #7305

Co-authored-by: hauntsaninja <>
2022-02-19 15:53:40 -08:00
Shantanu feb20fc20a urllib.request: loosen data type (#7211)
Fixes #7208

This is what urllib.request claims to support over here:
https://github.com/python/cpython/blob/ad4e8d2b871c4f5bce27520627bbb2e0e544bc24/Lib/urllib/request.py#L1276

There is additional validation logic (e.g. strs don't work), but a lot
of what determines what works is over here:
https://github.com/python/cpython/blob/ad4e8d2b871c4f5bce27520627bbb2e0e544bc24/Lib/http/client.py#L1039
2022-02-15 06:44:28 -08:00
Shantanuandhauntsaninja a6d9b83263 Add @final to several more stdlib classes (#7215)
Co-authored-by: hauntsaninja <>
2022-02-14 15:12:40 -08:00
Shantanuandhauntsaninja 3a2ce92d32 singledispatch: fix lint (#7178)
Co-authored-by: hauntsaninja <>
2022-02-11 17:53:01 -08:00
Shantanuandhauntsaninja 4d21d5a87d codecs: allow str to bytes decoding for "hex", fix overloads (#7118)
Fixes #7115

Co-authored-by: hauntsaninja <>
2022-02-03 14:20:11 -08:00
Shantanu b88a6f19cd Upgrade black version (#7089) 2022-01-30 16:27:06 -08:00
2ad00c9664 Use stubtest 0.920 (#6589)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Sebastian Rittau <srittau@rittau.biz>
Co-authored-by: Akuli <akuviljanen17@gmail.com>
2021-12-17 13:58:11 +02:00
Shantanu 86da630cff turtle: improve RawTurtle.screen(s) types (#6603) 2021-12-16 14:02:06 +02:00
Shantanu 9aa66f0c37 Run primer on latest Python version (#6593) 2021-12-16 08:56:30 +01:00
Shantanu 7103b0be2d turtle: add RawTurtle.screens (#6594) 2021-12-16 08:55:09 +01:00
Shantanu 1b80461b96 mypy_extensions: fix NoReturn, remove inaccurate comment (#6595) 2021-12-15 19:45:57 -08:00
Shantanu d84a03829f Revert addition of class_getitem to PathLike (#6591)
This was added in #5869
This breaks all PathLike classes that don't have class_getitem
2021-12-15 19:25:08 -08:00
Shantanu b345843e56 dbm: fix error type (#6590)
Surfaced by stubtest upgrade
2021-12-15 17:07:15 -08:00
Shantanuandhauntsaninja f9cedff5af ast: allow non-literal strings (#6566)
Co-authored-by: hauntsaninja <>
2021-12-10 21:48:46 -08:00
2a1ef3735d random: add VERSION, SystemRandom.getrandbits is not pos only (#6419)
Co-authored-by: Akuli <akuviljanen17@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2021-12-05 16:52:34 +02:00
Shantanuandhauntsaninja d453b74ceb logging: fix various __init__ methods (#6417)
Co-authored-by: hauntsaninja <>
2021-11-30 23:18:35 -08:00
Shantanuandhauntsaninja 238dff64c9 unittest.mock: add decorate_async_callable, use tuple methods (#6438)
Co-authored-by: hauntsaninja <>
2021-11-28 21:55:47 -08:00
Shantanuandhauntsaninja 287a9a427e Fix allowlists (#6440)
Broken by https://github.com/python/typeshed/pull/6439

Co-authored-by: hauntsaninja <>
2021-11-28 20:18:49 -08:00
Shantanuandhauntsaninja 0bad0691be threading: fixes for _DummyThread and _RLock (#6437)
Co-authored-by: hauntsaninja <>
2021-11-28 20:11:54 -08:00
1d335545b2 _osx_support: fix _read_output (#6436)
* _osx_support: fix _read_output

* [pre-commit.ci] auto fixes from pre-commit.com hooks

Co-authored-by: hauntsaninja <>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2021-11-28 20:01:06 -08:00
Shantanuandhauntsaninja d68a28fb52 ssl: add timeout to get_server_certificate (#6421)
Co-authored-by: hauntsaninja <>
2021-11-28 12:32:12 +02:00
Shantanuandhauntsaninja 72d804f130 smtplib: add timeout to LMTP (#6415)
Co-authored-by: hauntsaninja <>
2021-11-28 12:31:18 +02:00
0131f4b868 style: put most recent python branch first (#6420)
Co-authored-by: hauntsaninja <>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2021-11-28 12:05:25 +02:00
Shantanu 5ba7254555 locale: fix positional-only args (#6413) 2021-11-28 11:43:46 +02:00
Shantanu eb16dcc2c1 builtins: change aiter argument name (#6412) 2021-11-28 11:41:49 +02:00
Shantanu c47ed98b3e dummy_thread/ing: remove in 3.9 (#6408)
https://bugs.python.org/issue37312
2021-11-27 20:50:14 -08:00
e734231314 typing: add _ProtocolMeta (#6394)
Co-authored-by: hauntsaninja <>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2021-11-27 16:53:36 +02:00
Shantanu bf92378722 Bump typed-ast version, recommend Python 3.8 for tests (#6278) 2021-11-12 02:53:42 -08:00
Shantanu c0675a797f tempfile: add ignore_cleanup_errors to TemporaryDirectory (#6226) 2021-11-02 20:25:58 -07:00
Shantanu 38ab20926f pathlib: update for py310 (#6225) 2021-11-02 20:23:30 -07:00
Shantanuandhauntsaninja 9f691d9c6e stubtest_third_party: advice for unused allowlist entries (#6208)
Co-authored-by: hauntsaninja <>
2021-10-27 21:55:18 -07:00
Shantanuandhauntsaninja 55cf343ba9 zip: update for PEP 618 (#6123)
Resolves #6122

Co-authored-by: hauntsaninja <>
2021-10-06 12:54:47 -07:00
Shantanuandhauntsaninja c7ac9b6641 markdown: fix type of Pattern (#6115)
Surfaced weirdly by #6109

Co-authored-by: hauntsaninja <>
2021-10-04 21:35:26 -07:00
Shantanuandhauntsaninja 67e8979ac1 stubtest_third_party: more newlines in printing (#6060)
Co-authored-by: hauntsaninja <>
2021-09-21 23:16:12 +02:00
Shantanu 8576b344b8 binhex: removed in py311 (#6011) 2021-09-10 15:27:24 -07:00
Shantanuandhauntsaninja c74fd22931 Update pytype (#6026)
Co-authored-by: hauntsaninja <>
2021-09-11 01:11:05 +03:00
Shantanuandhauntsaninja 2d4fcbc81e zipfile: py310 changes, fix open (#5979)
Co-authored-by: hauntsaninja <>
2021-08-28 22:45:01 +02:00
Shantanuandhauntsaninja ba998cd5f9 multiprocessing.pool: fix __init__ methods (#5833)
Co-authored-by: hauntsaninja <>
2021-08-28 12:04:08 -07:00
Shantanuandhauntsaninja 670929e908 dateparser: use PEP 604 (#5977)
Co-authored-by: hauntsaninja <>
2021-08-28 21:03:02 +02:00
Shantanuandhauntsaninja f6e4c9c38f Check for PEP 604 usage in CI (#5903)
Since this is a common review issue and our stubs have all been
converted

Co-authored-by: hauntsaninja <>
2021-08-28 11:37:50 -07:00
Shantanuandhauntsaninja 98846a65e2 More shards for stubtest_third_party (#5902)
Co-authored-by: hauntsaninja <>
2021-08-09 13:36:54 -07:00
Shantanuandhauntsaninja 76eeeee4c4 [minor] Clearer formatting for stubtest_third_party output (#5856)
Co-authored-by: hauntsaninja <>
2021-08-05 20:16:46 -07:00
Shantanu 41f4f0f00f xxhash: add seed arguments, reset method, missing attributes (#5802)
Update version in METADATA.toml
2021-07-24 14:55:22 +02:00
Shantanu 04f0113d16 dataclasses: work around default factory issues (#5718) 2021-07-01 08:07:00 +02:00
Shantanu 7244ea1f71 Test third party stubs with stubtest (#5615) 2021-06-13 00:17:40 +02:00
Shantanuandhauntsaninja e66ceceed0 Rename whitelist to allowlist (#5614)
Resolves #4436

I want to add stubtest for third party stubs, and figured it'd be easier
to make this change now.

Co-authored-by: hauntsaninja <>
2021-06-10 14:33:44 -07:00
Shantanu 04fb7ceb3c builtins: add a getattr overload for bool (#5518)
As brought up in https://github.com/python/typeshed/pull/5516

Alternatives include:
- Use another type var that has a value restriction
- Doing something fancy with Protocols that have a __bool__ that returns
  a Literal (which may not work)
- Doing nothing
2021-05-29 07:09:38 -07:00
Shantanuandhauntsaninja 74a8900166 mock: fix overloads (#5534)
* mock: fix overloads

Fixes #5533. This changes the order and in some cases removes default
values from new.

* ignore incompatible overlaps

Co-authored-by: hauntsaninja <>
2021-05-26 22:16:51 +02:00
Shantanu 4bfdba71cb dataclasses: update for py310 (#5525) 2021-05-25 14:43:06 +02:00
Shantanuandhauntsaninja 05f91f73b3 Re-enable mypy test suite (#5526)
Fixes #5505, in combination with https://github.com/python/mypy/pull/10527

Co-authored-by: hauntsaninja <>
2021-05-25 09:42:18 +01:00
Shantanu 6bb1d885c6 time: fix constants availability (#5419) 2021-05-12 08:35:39 +02:00
Shantanuandhauntsaninja 4df940f96d Update allowlists (#5417)
Co-authored-by: hauntsaninja <>
2021-05-11 22:11:48 -07:00
Shantanuandhauntsaninja dd73f117f0 os: fix positional-only args (#5412)
Co-authored-by: hauntsaninja <>
2021-05-11 10:47:12 +02:00
Shantanuandhauntsaninja a30ef0db04 pwd: fix positional-only args (#5413)
Co-authored-by: hauntsaninja <>
2021-05-11 10:46:26 +02:00
Shantanuandhauntsaninja f720ebb71e Fix workflow path matching (#5414)
@Akuli was right in https://github.com/python/typeshed/pull/5407

Co-authored-by: hauntsaninja <>
2021-05-11 10:29:40 +02:00
Shantanuandhauntsaninja d5fc9a6a80 Run stubtest_unused on Darwin (#5410)
Fixes #5405

Co-authored-by: hauntsaninja <>
2021-05-11 09:34:10 +03:00
Shantanuandhauntsaninja 5e6fb40b56 Fix stubtest unused script (#5411)
Contrary to the comment, this wasn't a mypy_primer issue, nor even a
stubtest issue.

Co-authored-by: hauntsaninja <>
2021-05-11 09:24:37 +03:00
Shantanuandhauntsaninja ee8364c216 Only run mypy primer workflows on stdlib (#5407)
Co-authored-by: hauntsaninja <>
2021-05-11 09:21:25 +03:00
ShantanuhauntsaninjaAkuli
a91c89ea94 various path stubs: re-export to reduce duplication (#5382)
Co-authored-by: hauntsaninja <>
Co-authored-by: Akuli <akuviljanen17@gmail.com>
2021-05-10 22:27:13 -07:00
Shantanuandhauntsaninja 0ac3531a93 Update allowlists (#5409)
Co-authored-by: hauntsaninja <>
2021-05-10 22:19:31 -07:00
Shantanu 482d38044b statistics: update for py310 (#5291) 2021-05-10 15:12:06 -07:00
Shantanuandhauntsaninja fcdc7a8135 Use full SHA for comment hiding (#5383)
For whatever reason, looks like GA mandates full SHA
This was added in #5364

Co-authored-by: hauntsaninja <>
2021-05-08 16:52:16 -07:00
Shantanuandhauntsaninja 82fa8473ff Attempt to fix stubtest unused PR opening (#5374)
Co-authored-by: hauntsaninja <>
2021-05-09 01:16:04 +03:00
Shantanuandhauntsaninja 9cdd5220c2 Update allowlists (#5376)
Co-authored-by: hauntsaninja <>
2021-05-08 12:48:12 -07:00
Shantanuandhauntsaninja 3fa5988a2a Fix allowlist updater script (#5375)
Co-authored-by: hauntsaninja <>
2021-05-07 23:13:36 -07:00
Shantanuandhauntsaninja 1c76937836 Fix stubtest unused workflow (#5372)
This got broken during modular typeshed

Co-authored-by: hauntsaninja <>
2021-05-07 22:54:03 -07:00
Shantanuandhauntsaninja 7619a8fb46 typing_extensions: fix positional-only arg (#5359)
Co-authored-by: hauntsaninja <>
2021-05-06 17:07:43 -07:00
Shantanuandhauntsaninja bdd5680e7a Bump pytype (#5358)
For #5345

Co-authored-by: hauntsaninja <>
2021-05-06 15:33:08 -07:00
Shantanuandhauntsaninja 4bf4d6adb6 Bump pyright (#5357)
For #5348

Co-authored-by: hauntsaninja <>
2021-05-06 15:26:24 -07:00
Shantanuandhauntsaninja 4a45b1d1b4 enum: update for py310 (#5314)
I remember there are some subtleties around Enum.__new__, that might be
relevant to StrEnum, but I'm forgetting the details.

I wasn't sure how best to handle the new enum.property. I could also
re-export, or take a more literal interpretation.

Co-authored-by: hauntsaninja <>
2021-05-04 15:12:19 +03:00
Shantanu 1826072dd1 asyncio.subprocess: remove loop in py310 (#5315) 2021-05-02 18:56:45 -07:00
Shantanu 3950543bce traceback: update for py310 (#5316)
I think technically you need to pass both of value and tb or neither, so
let me know if you think it's worth all the overloads
2021-05-02 18:54:47 -07:00
Shantanuandhauntsaninja 63c4f0b9e5 lzma: mark positional-only args (#5320)
Co-authored-by: hauntsaninja <>
2021-05-02 18:51:48 -07:00
Shantanu 2d10d2779f multiprocessing.pool: fix ApplyResult.__init__ (#5318) 2021-05-02 18:50:45 -07:00