2525import os
2626import platform
2727import re
28- import requests
28+ try :
29+ import requests
30+ except ImportError :
31+ pass
2932import subprocess
3033import sys
3134import zipfile
@@ -130,6 +133,8 @@ def extract_zip(root, data, py_versions=None):
130133 if py_versions and re .match (r'_py\d*swat' , basename ):
131134 ver = re .match (r'_py(\d*)swat' , basename ).group (1 ) or '27'
132135 if ver not in py_versions :
136+ print_err ("***** extract_zip : version {} not in py_versions"
137+ .format (ver ))
133138 continue
134139
135140 # Write file
@@ -152,6 +157,8 @@ def create_placeholders(root, data, py_versions=None):
152157 if py_versions :
153158 ver = re .match (r'_py(\d*)swat' , basename ).group (1 ) or '27'
154159 if ver not in py_versions :
160+ print_err ("***** create_placeholders : version {} not in py_versions"
161+ .format (ver ))
155162 continue
156163
157164 # Write placeholder file
@@ -160,6 +167,31 @@ def create_placeholders(root, data, py_versions=None):
160167 out_file .write (b'' )
161168
162169
170+ def create_restonly_placeholders (root ):
171+ ''' Write placeholder files for each Python extension file '''
172+ py_versions = [x .replace ('.' , '' )
173+ for x in get_python_versions ()]
174+
175+ for ver in py_versions :
176+ if ver == '27' :
177+ out_path = os .path .join (root , "_pyswat.na" )
178+ print_err ("***** create_restonly_placeholders : write placeholder file {}"
179+ .format (out_path ))
180+ with open (out_path , 'wb' ) as out_file :
181+ out_file .write (b'' )
182+ out_path = os .path .join (root , "_pyswatw.na" )
183+ print_err ("***** create_restonly_placeholders : write placeholder file {}"
184+ .format (out_path ))
185+ with open (out_path , 'wb' ) as out_file :
186+ out_file .write (b'' )
187+ else :
188+ out_path = os .path .join (root , "_py{}swat.na" .format (ver ))
189+ print_err ("***** create_restonly_placeholders : write placeholder file {}"
190+ .format (out_path ))
191+ with open (out_path , 'wb' ) as out_file :
192+ out_file .write (b'' )
193+
194+
163195def update_tk_version (root , version ):
164196 ''' Add the TK version to the __init__.py file of the package '''
165197 tk_file = os .path .join (root , 'swat' , '__init__.py' )
@@ -220,7 +252,7 @@ def get_packages(lib_root, tk_base, release, platform, pkgs, versions_only=False
220252
221253 if not py_versions :
222254 py_versions = [x .replace ('.' , '' )
223- for x in get_python_versions (platform )]
255+ for x in get_python_versions ()]
224256
225257 if versions_only :
226258 create_placeholders (lib_root , resp .content , py_versions = py_versions )
@@ -231,21 +263,18 @@ def get_packages(lib_root, tk_base, release, platform, pkgs, versions_only=False
231263
232264 # Package was not found, bail out
233265 if resp .status_code == 404 :
266+ print_err (("***** get_packages : resp.status_code was 404, "
267+ "bail out and set is_installed to False" ))
234268 is_installed = False
235269 break
236270
237271 return is_installed
238272
239273
240- def get_python_versions (platform ):
274+ def get_python_versions ():
241275 '''
242- Retrieve all possible Python versions for the given platform
243-
244- This function actually uses information about the pandas library
245- instead of Python itself. Pandas is the primary dependency of
246- SWAT, so it is the limiting factor on what Python versions can
247- be used.
248-
276+ Retrieve all possible Python versions.
277+ Currently, every platform supports the same python versions.
249278 '''
250279
251280 versions = set ()
@@ -282,12 +311,20 @@ def main(args):
282311 # Create output directory
283312 os .makedirs (lib_root , exist_ok = True )
284313
285- is_installed = get_packages (lib_root , args .tk_base , args .release ,
286- args .platform , TK_PKGS )
287-
288- if not is_installed :
289- get_packages (lib_root , args .tk_base , args .release , 'linux-64' ,
290- [TK_PACKAGE_NAME ], versions_only = True )
314+ if args .platform .lower () in ("linux-64" , "win-64" ):
315+ print_err ("***** main : binary supported on platform {}" .format (args .platform ))
316+ is_installed = get_packages (lib_root , args .tk_base , args .release ,
317+ args .platform , TK_PKGS )
318+
319+ if not is_installed :
320+ print_err (("***** main : get_packages failed to get TK packages. "
321+ "Retrying with just placeholder files." ))
322+ get_packages (lib_root , args .tk_base , args .release , 'linux-64' ,
323+ [TK_PACKAGE_NAME ], versions_only = True )
324+ else :
325+ print_err ("***** main : REST ONLY platform {}" .format (args .platform ))
326+ is_installed = False
327+ create_restonly_placeholders (lib_root )
291328
292329 update_tk_version (args .root , is_installed and args .release or 'none' )
293330
0 commit comments