Skip to content

Commit 55c820c

Browse files
committed
Stop using apipkg
The advantages of apipkg AFAIU are: - Nicer syntax. Doesn't seem very important. - Enable lazy-loading of the sub-modules, allowing for a faster startup and not paying the import cost at all if not used. However execnet is not that big (~2000 lines) and most users will end up importing the big file (gateway_base.py) anyway. - Allows absolute imports in sub-modules without worrying about "cannot import from partially-initialized module" errors. Doesn't seem very important. So it does not seem worthwhile imposing this dependency on all users of execnet/pytest-xdist just for that.
1 parent 22b3cfd commit 55c820c

File tree

6 files changed

+59
-37
lines changed

6 files changed

+59
-37
lines changed

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
TBD (Unreleased)
2+
----------------
3+
4+
* Removed the ``apipkg`` dependency.
5+
16
1.8.1 (2021-05-27)
27
------------------
38

execnet/__init__.py

Lines changed: 41 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,45 @@
77
88
(c) 2012, Holger Krekel and others
99
"""
10-
import apipkg
10+
from ._version import version as __version__
11+
from .deprecated import PopenGateway
12+
from .deprecated import SocketGateway
13+
from .deprecated import SshGateway
14+
from .gateway_base import DataFormatError
15+
from .gateway_base import dump
16+
from .gateway_base import dumps
17+
from .gateway_base import load
18+
from .gateway_base import loads
19+
from .gateway_base import RemoteError
20+
from .gateway_base import TimeoutError
21+
from .gateway_bootstrap import HostNotFound
22+
from .multi import default_group
23+
from .multi import Group
24+
from .multi import makegateway
25+
from .multi import MultiChannel
26+
from .multi import set_execmodel
27+
from .rsync import RSync
28+
from .xspec import XSpec
1129

12-
apipkg.initpkg(
13-
__name__,
14-
{
15-
"__version__": "._version:version",
16-
"PopenGateway": ".deprecated:PopenGateway",
17-
"SocketGateway": ".deprecated:SocketGateway",
18-
"SshGateway": ".deprecated:SshGateway",
19-
"makegateway": ".multi:makegateway",
20-
"set_execmodel": ".multi:set_execmodel",
21-
"HostNotFound": ".gateway_bootstrap:HostNotFound",
22-
"RemoteError": ".gateway_base:RemoteError",
23-
"TimeoutError": ".gateway_base:TimeoutError",
24-
"XSpec": ".xspec:XSpec",
25-
"Group": ".multi:Group",
26-
"MultiChannel": ".multi:MultiChannel",
27-
"RSync": ".rsync:RSync",
28-
"default_group": ".multi:default_group",
29-
"dumps": ".gateway_base:dumps",
30-
"loads": ".gateway_base:loads",
31-
"load": ".gateway_base:load",
32-
"dump": ".gateway_base:dump",
33-
"DataFormatError": ".gateway_base:DataFormatError",
34-
},
35-
)
30+
31+
__all__ = [
32+
"__version__",
33+
"PopenGateway",
34+
"SocketGateway",
35+
"SshGateway",
36+
"makegateway",
37+
"set_execmodel",
38+
"HostNotFound",
39+
"RemoteError",
40+
"TimeoutError",
41+
"XSpec",
42+
"Group",
43+
"MultiChannel",
44+
"RSync",
45+
"default_group",
46+
"dumps",
47+
"loads",
48+
"load",
49+
"dump",
50+
"DataFormatError",
51+
]

execnet/gateway.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@
1111
import types
1212

1313
import execnet
14-
from execnet import gateway_base
15-
from execnet.gateway_base import Message
14+
15+
from . import gateway_base
16+
from .gateway_base import Message
1617

1718
importdir = os.path.dirname(os.path.dirname(execnet.__file__))
1819

execnet/gateway_bootstrap.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
import os
77

88
import execnet
9-
from execnet import gateway_base
10-
from execnet.gateway import Gateway
9+
10+
from . import gateway_base
11+
from .gateway import Gateway
1112

1213
importdir = os.path.dirname(os.path.dirname(execnet.__file__))
1314

execnet/multi.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
from functools import partial
1010
from threading import Lock
1111

12-
from execnet import gateway_bootstrap
13-
from execnet import gateway_io
14-
from execnet import XSpec
15-
from execnet.gateway_base import get_execmodel
16-
from execnet.gateway_base import reraise
17-
from execnet.gateway_base import trace
12+
from . import gateway_bootstrap
13+
from . import gateway_io
14+
from .gateway_base import get_execmodel
15+
from .gateway_base import reraise
16+
from .gateway_base import trace
17+
from .xspec import XSpec
1818

1919
NO_ENDMARKER_WANTED = object()
2020

@@ -133,7 +133,7 @@ def makegateway(self, spec=None):
133133
io = gateway_io.create_io(spec, execmodel=self.execmodel)
134134
gw = gateway_bootstrap.bootstrap(io, spec)
135135
elif spec.socket:
136-
from execnet import gateway_socket
136+
from . import gateway_socket
137137

138138
io = gateway_socket.create_io(spec, self, execmodel=self.execmodel)
139139
gw = gateway_bootstrap.bootstrap(io, spec)

setup.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ def main():
3636
],
3737
packages=["execnet", "execnet.script"],
3838
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
39-
install_requires=["apipkg>=1.4"],
4039
extras_require={"testing": ["pre-commit"]},
4140
setup_requires=["setuptools_scm"],
4241
)

0 commit comments

Comments
 (0)