16
16
from __future__ import division
17
17
from __future__ import print_function
18
18
19
+ import glob
19
20
import io
20
21
import logging
21
22
import os
24
25
import tempfile
25
26
import uuid
26
27
28
+ import absolufy_imports as abs_imp
27
29
from rope .base import project as rope_project
28
30
from rope .base import change as rope_change
29
31
from rope .refactor import move as rope_move
@@ -44,15 +46,28 @@ def build_package_cython_extension(package_root,
44
46
logger = logging .getLogger (__name__ )
45
47
# 0. Create temporary directory
46
48
with tempfile .TemporaryDirectory () as tmp_dir :
49
+ # ---------------------------
47
50
# 1. Copy package to temp dir
51
+ # ---------------------------
48
52
logger .info ("1. Copying package to temporary directory ..." )
49
53
package = os .path .basename (package_root )
50
54
tmp_proot = os .path .join (tmp_dir , package )
51
55
shutil .copytree (package_root , tmp_proot )
52
56
logging .info ("1. Done!" )
53
57
58
+ # ------------------------------------
54
59
# 2. Restructure package (in temp dir)
60
+ # ------------------------------------
55
61
logger .info ("2. Restructuring package ..." )
62
+
63
+ # 2.0. Transform imports to absolute
64
+ logger .info ("2.0. Transforming imports to absolute ..." )
65
+ srcs = [tmp_dir ]
66
+ for suffix in SUFFIXES :
67
+ for f in glob .glob (os .path .join (tmp_proot , "**/*%s" % suffix )):
68
+ abs_imp .absolute_imports (f , srcs , never = False )
69
+ logger .info ("2.0. Done!" )
70
+
56
71
# 2.1. Modify package
57
72
# 2.1.1. Restructure package and get modules and
58
73
logger .info ("2.1. Restructuring Python modules ..." )
@@ -76,14 +91,18 @@ def build_package_cython_extension(package_root,
76
91
fout .write (init_content )
77
92
logger .info ("2.2. Done!" )
78
93
94
+ # -----------------
79
95
# 3. Add setup file
96
+ # -----------------
80
97
logger .info ("3. Adding Cython setup file ..." )
81
98
with open (os .path .join (tmp_dir , "setup.py" ), "w" ) as fout :
82
99
with open (refs .Template .PY_SETUP , "r" ) as fin :
83
100
fout .write (fin .read ().format (package = package ))
84
101
logger .info ("3. Done!" )
85
102
103
+ # ----------
86
104
# 4. Compile
105
+ # ----------
87
106
logger .info ("4. Compiling package binary ..." )
88
107
cy_tmp = "cy_tmp_%s" % uuid .uuid4 ()
89
108
cy_build = "cy_build_%s" % uuid .uuid4 ()
@@ -100,7 +119,9 @@ def build_package_cython_extension(package_root,
100
119
101
120
logger .info ("4. Done!" )
102
121
122
+ # -----------------------------------
103
123
# 5. Copy build result to destination
124
+ # -----------------------------------
104
125
logger .info ("5. Copying result to destination ..." )
105
126
os .makedirs (output_dir , exist_ok = True )
106
127
target = os .path .join (output_dir , package )
0 commit comments