Skip to content

Commit f8dc3a1

Browse files
authored
Merge pull request #260 from bluetech/py-typed
Expose types -- add py.typed file
2 parents 3e943ec + dd32bdd commit f8dc3a1

File tree

6 files changed

+11
-8
lines changed

6 files changed

+11
-8
lines changed

CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414

1515
Also fixed ``init_popen_io`` to use ``closefd=False`` for shared stdin and stdout file
1616
descriptors, preventing ``Bad file descriptor`` errors triggered by test_stdouterrin_setnull.
17+
* The library is now typed and the typing is exposed to type-checkers.
18+
* Re-exported ``Gateway`` and ``Channel`` from ``execnet``. The constructors
19+
are private.
1720
* Fixed ``GatewayBase.join()`` timeout argument getting ignored.
1821
* Removed support for Python 3.7.
1922
* Added official support for Python 3.12.

src/execnet/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
"""
99

1010
from ._version import version as __version__
11+
from .gateway import Gateway
12+
from .gateway_base import Channel
1113
from .gateway_base import DataFormatError
1214
from .gateway_base import RemoteError
1315
from .gateway_base import TimeoutError
@@ -32,10 +34,12 @@
3234
"RemoteError",
3335
"TimeoutError",
3436
"XSpec",
37+
"Gateway",
3538
"Group",
3639
"MultiChannel",
3740
"RSync",
3841
"default_group",
42+
"Channel",
3943
"dumps",
4044
"loads",
4145
"load",

src/execnet/gateway.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,27 @@
77

88
import inspect
99
import linecache
10-
import os
1110
import textwrap
1211
import types
1312
from typing import TYPE_CHECKING
1413
from typing import Any
1514
from typing import Callable
1615

17-
import execnet
18-
1916
from . import gateway_base
2017
from .gateway_base import IO
2118
from .gateway_base import Channel
2219
from .gateway_base import Message
2320
from .multi import Group
2421
from .xspec import XSpec
2522

26-
importdir = os.path.dirname(os.path.dirname(execnet.__file__))
27-
2823

2924
class Gateway(gateway_base.BaseGateway):
3025
"""Gateway to a local or remote Python Interpreter."""
3126

3227
_group: Group
3328

3429
def __init__(self, io: IO, spec: XSpec) -> None:
30+
""":private:"""
3531
super().__init__(io=io, id=spec.id, _startcount=1)
3632
self.spec = spec
3733
self._initreceive()

src/execnet/gateway_base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,7 @@ class Channel:
708708
_executing = False
709709

710710
def __init__(self, gateway: BaseGateway, id: int) -> None:
711+
""":private:"""
711712
assert isinstance(id, int)
712713
assert not isinstance(gateway, type)
713714
self.gateway = gateway

src/execnet/gateway_bootstrap.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import execnet
99

1010
from . import gateway_base
11-
from .gateway import Gateway
1211
from .gateway_base import IO
1312
from .xspec import XSpec
1413

@@ -81,7 +80,7 @@ def sendexec(io: IO, *sources: str) -> None:
8180
io.write((repr(source) + "\n").encode("utf-8"))
8281

8382

84-
def bootstrap(io: IO, spec: XSpec) -> Gateway:
83+
def bootstrap(io: IO, spec: XSpec) -> execnet.Gateway:
8584
if spec.popen:
8685
if spec.via or spec.python:
8786
bootstrap_exec(io, spec)
@@ -93,5 +92,5 @@ def bootstrap(io: IO, spec: XSpec) -> Gateway:
9392
bootstrap_socket(io, spec)
9493
else:
9594
raise ValueError("unknown gateway type, can't bootstrap")
96-
gw = Gateway(io, spec)
95+
gw = execnet.Gateway(io, spec)
9796
return gw

src/execnet/py.typed

Whitespace-only changes.

0 commit comments

Comments
 (0)