@@ -91,6 +91,29 @@ def add_dependency(name, first=False):
9191 pass
9292
9393
94+ def python_version ():
95+ """
96+ Return version of current python environment.
97+
98+ returns
99+ A string like "3.3", "3.8" or "3.13"
100+ """
101+ try :
102+ return python_version .cache
103+ except AttributeError :
104+ python_version .cache = "{0}.{1}" .format (* sys .version_info [:2 ])
105+ return python_version .cache
106+
107+
108+ def python_versions ():
109+ """
110+ Return a list of supported python environments.
111+ returns
112+ A tuple of e.g. ("3.3", "3.8")
113+ """
114+ return tuple (lib_paths ())
115+
116+
94117def cache_path ():
95118 """
96119 Returns the ST cache directory
@@ -130,12 +153,20 @@ def lib_paths():
130153 try :
131154 return lib_paths .cache
132155 except AttributeError :
133- lib_paths .cache = {
134- "3.3" : os .path .join (__data_path , "Lib" , "python33" ),
135- "3.8" : os .path .join (__data_path , "Lib" , "python38" )
136- } if int (sublime .version ()) >= 4000 else {
137- "3.3" : os .path .join (__data_path , "Lib" , "python3.3" )
138- }
156+ st_version = int (sublime .version ())
157+ if st_version > 4200 :
158+ lib_paths .cache = {
159+ "3.13" : os .path .join (__data_path , "Lib" , "python313" ),
160+ }
161+ elif st_version >= 4000 :
162+ lib_paths .cache = {
163+ "3.3" : os .path .join (__data_path , "Lib" , "python33" ),
164+ "3.8" : os .path .join (__data_path , "Lib" , "python38" )
165+ }
166+ else :
167+ lib_paths .cache = {
168+ "3.3" : os .path .join (__data_path , "Lib" , "python3.3" )
169+ }
139170 return lib_paths .cache
140171
141172
@@ -193,11 +224,12 @@ def python_libs_cache_path(python_version):
193224
194225 global __python_libs_cache_path
195226
196- if not __python_libs_cache_path :
227+ if __python_libs_cache_path is None :
197228 __python_libs_cache_path = {
198- "3.3" : None , # bytecode cache not supported
199- "3.8" : os .path .join (
200- cache_path (), '__pycache__' , 'install' , 'Data' , 'Lib' , "python38" )
229+ py : None if py == "3.3" else os .path .join (
230+ cache_path (), '__pycache__' , 'install' , 'Data' , 'Lib' , os .path .basename (lib )
231+ )
232+ for py , lib in lib_paths ().items ()
201233 }
202234
203235 return str (__python_libs_cache_path [python_version ])
@@ -213,7 +245,7 @@ def python_packages_cache_path():
213245
214246 global __python_packages_cache_path
215247
216- if not __python_packages_cache_path :
248+ if __python_packages_cache_path is None :
217249 __python_packages_cache_path = os .path .join (
218250 cache_path (), '__pycache__' , 'install' , 'Data' , 'Packages' )
219251
@@ -230,7 +262,7 @@ def pc_cache_dir():
230262
231263 global __package_control_cache_path
232264
233- if not __package_control_cache_path :
265+ if __package_control_cache_path is None :
234266 __package_control_cache_path = os .path .join (cache_path (), 'Package Control' )
235267
236268 return str (__package_control_cache_path )
0 commit comments