Skip to content

Commit 933f837

Browse files
committed
Add workaround for isort limitations when mixing imports with code
(known issue - PyCQA/isort#693).
1 parent 06f0dc5 commit 933f837

File tree

3 files changed

+51
-59
lines changed

3 files changed

+51
-59
lines changed

contrib/generate_provider_feature_matrix_table.py

+30-33
Original file line numberDiff line numberDiff line change
@@ -22,40 +22,37 @@
2222
from os.path import join as pjoin
2323
from collections import OrderedDict
2424

25-
from libcloud.dns.base import DNSDriver
26-
from libcloud.dns.types import Provider as DNSProvider
27-
from libcloud.backup.base import BackupDriver
28-
from libcloud.backup.types import Provider as BackupProvider
29-
from libcloud.compute.base import NodeDriver
30-
from libcloud.storage.base import StorageDriver
31-
from libcloud.compute.types import Provider as ComputeProvider
32-
from libcloud.dns.providers import DRIVERS as DNS_DRIVERS
33-
from libcloud.dns.providers import get_driver as get_dns_driver
34-
from libcloud.storage.types import Provider as StorageProvider
35-
from libcloud.container.base import ContainerDriver
36-
from libcloud.container.types import Provider as ContainerProvider
37-
from libcloud.backup.providers import DRIVERS as BACKUP_DRIVERS
38-
from libcloud.backup.providers import get_driver as get_backup_driver
39-
from libcloud.compute.providers import DRIVERS as COMPUTE_DRIVERS
40-
from libcloud.compute.providers import get_driver as get_compute_driver
41-
from libcloud.loadbalancer.base import Driver as LBDriver
42-
from libcloud.storage.providers import DRIVERS as STORAGE_DRIVERS
43-
from libcloud.storage.providers import get_driver as get_storage_driver
44-
from libcloud.loadbalancer.types import Provider as LBProvider
45-
from libcloud.container.providers import DRIVERS as CONTAINER_DRIVERS
46-
from libcloud.container.providers import get_driver as get_container_driver
47-
from libcloud.loadbalancer.providers import DRIVERS as LB_DRIVERS
48-
from libcloud.loadbalancer.providers import get_driver as get_lb_driver
49-
50-
this_dir = os.path.abspath(os.path.split(__file__)[0])
51-
sys.path.insert(0, os.path.join(this_dir, "../"))
52-
53-
54-
55-
56-
57-
25+
# Add parent dir of this file's dir to sys.path (OS-agnostically)
26+
sys.path.append(
27+
os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir))
28+
)
5829

30+
# isort:skip pragma is needed to make sure those imports are not moved above
31+
# sys.path manipulation code (https://github.com/PyCQA/isort/issues/468)
32+
from libcloud.dns.base import DNSDriver # isort:skip
33+
from libcloud.dns.types import Provider as DNSProvider # isort:skip
34+
from libcloud.backup.base import BackupDriver # isort:skip
35+
from libcloud.backup.types import Provider as BackupProvider # isort:skip
36+
from libcloud.compute.base import NodeDriver # isort:skip
37+
from libcloud.storage.base import StorageDriver # isort:skip
38+
from libcloud.compute.types import Provider as ComputeProvider # isort:skip
39+
from libcloud.dns.providers import DRIVERS as DNS_DRIVERS # isort:skip
40+
from libcloud.dns.providers import get_driver as get_dns_driver # isort:skip
41+
from libcloud.storage.types import Provider as StorageProvider # isort:skip
42+
from libcloud.container.base import ContainerDriver # isort:skip
43+
from libcloud.container.types import Provider as ContainerProvider # isort:skip
44+
from libcloud.backup.providers import DRIVERS as BACKUP_DRIVERS # isort:skip
45+
from libcloud.backup.providers import get_driver as get_backup_driver # isort:skip
46+
from libcloud.compute.providers import DRIVERS as COMPUTE_DRIVERS # isort:skip
47+
from libcloud.compute.providers import get_driver as get_compute_driver # isort:skip
48+
from libcloud.loadbalancer.base import Driver as LBDriver # isort:skip
49+
from libcloud.storage.providers import DRIVERS as STORAGE_DRIVERS # isort:skip
50+
from libcloud.storage.providers import get_driver as get_storage_driver # isort:skip
51+
from libcloud.loadbalancer.types import Provider as LBProvider # isort:skip
52+
from libcloud.container.providers import DRIVERS as CONTAINER_DRIVERS # isort:skip
53+
from libcloud.container.providers import get_driver as get_container_driver # isort:skip
54+
from libcloud.loadbalancer.providers import DRIVERS as LB_DRIVERS # isort:skip
55+
from libcloud.loadbalancer.providers import get_driver as get_lb_driver # isort:skip
5956

6057
HEADER = (
6158
".. NOTE: This file has been generated automatically using "

demos/compute_demo.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,16 @@
3131
import os.path
3232
from pprint import pprint
3333

34-
from libcloud.common.types import InvalidCredsError
35-
from libcloud.compute.types import Provider
36-
from libcloud.compute.providers import get_driver
37-
3834
# Add parent dir of this file's dir to sys.path (OS-agnostically)
3935
sys.path.append(
4036
os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir))
4137
)
4238

39+
# isort:skip pragma is needed to make sure those imports are not moved above
40+
# sys.path manipulation code (https://github.com/PyCQA/isort/issues/468)
41+
from libcloud.common.types import InvalidCredsError # isort:skip
42+
from libcloud.compute.types import Provider # isort:skip
43+
from libcloud.compute.providers import get_driver # isort:skip
4344

4445

4546

demos/gce_demo.py

+16-22
Original file line numberDiff line numberDiff line change
@@ -44,26 +44,25 @@
4444
import sys
4545
import time
4646
import os.path
47+
import argparse
4748
import datetime
4849

49-
from libcloud.dns.base import Zone, Record
50-
from libcloud.dns.types import Provider as Provider_dns
51-
from libcloud.utils.py3 import PY3
52-
from libcloud.common.google import ResourceNotFoundError
53-
from libcloud.compute.types import Provider
54-
from libcloud.dns.providers import get_driver as get_driver_dns
55-
from libcloud.compute.providers import get_driver
56-
from libcloud.loadbalancer.types import Provider as Provider_lb
57-
from libcloud.loadbalancer.providers import get_driver as get_driver_lb
50+
# Add parent dir of this file's dir to sys.path (OS-agnostically)
51+
sys.path.append(
52+
os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir))
53+
)
5854

59-
try:
60-
import argparse
61-
except Exception:
62-
print(
63-
'This script uses the python "argparse" module. Please use Python '
64-
"2.7 or greater."
65-
)
66-
raise
55+
# isort:skip pragma is needed to make sure those imports are not moved above
56+
# sys.path manipulation code (https://github.com/PyCQA/isort/issues/468)
57+
from libcloud.dns.base import Zone, Record # isort:skip
58+
from libcloud.dns.types import Provider as Provider_dns # isort:skip
59+
from libcloud.utils.py3 import PY3 # isort:skip
60+
from libcloud.common.google import ResourceNotFoundError # isort:skip
61+
from libcloud.compute.types import Provider # isort:skip
62+
from libcloud.dns.providers import get_driver as get_driver_dns # isort:skip
63+
from libcloud.compute.providers import get_driver # isort:skip
64+
from libcloud.loadbalancer.types import Provider as Provider_lb # isort:skip
65+
from libcloud.loadbalancer.providers import get_driver as get_driver_lb # isort:skip
6766

6867
try:
6968
import secrets
@@ -78,11 +77,6 @@
7877
)
7978
sys.exit(1)
8079

81-
# Add parent dir of this file's dir to sys.path (OS-agnostically)
82-
sys.path.append(
83-
os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir))
84-
)
85-
8680

8781
if PY3:
8882
# pylint: disable=no-name-in-module,import-error

0 commit comments

Comments
 (0)