File tree Expand file tree Collapse file tree 3 files changed +14
-30
lines changed Expand file tree Collapse file tree 3 files changed +14
-30
lines changed Original file line number Diff line number Diff line change 1+ import json
12import os
23import sys
34
89
910### META
1011
12+ META_VERSION = 1 # increment whenever the format changes
13+
1114def load_meta ():
12- import json , os .path
1315 fn = CONFIG ['meta' ]
1416 if os .path .exists (fn ):
1517 with open (fn ) as fp :
16- return json .load (fp )
17- else :
18- return {}
18+ meta = json .load (fp )
19+ if meta . get ( 'meta_version' ) == META_VERSION :
20+ return meta
1921
2022def save_meta (meta ):
21- import json
23+ assert isinstance (meta , dict )
24+ assert meta .get ('meta_version' ) == META_VERSION
2225 fn = CONFIG ['meta' ]
2326 with open (fn , 'w' ) as fp :
2427 json .dump (meta , fp )
2528
26- def get_meta (* keys ):
27- meta = load_meta ()
28- for key in keys :
29- if key in meta :
30- meta = meta [key ]
31- else :
32- return None
33- return meta
34-
35- def set_meta (* args ):
36- if len (args ) < 2 :
37- raise TypeError ('set_meta requires at least two arguments' )
38- keys = args [:- 1 ]
39- value = args [- 1 ]
40- meta2 = meta = load_meta ()
41- for key in keys [:- 1 ]:
42- meta2 = meta2 .setdefault (key , {})
43- meta2 [keys [- 1 ]] = value
44- save_meta (meta )
45-
4629### RESOLVE
4730
4831class PackageSpec :
@@ -83,7 +66,7 @@ def dict(self):
8366
8467def can_skip_resolve ():
8568 # resolve if we haven't resolved before
86- deps = get_meta ( "pydeps" )
69+ deps = load_meta ( )
8770 if deps is None :
8871 return False
8972 # resolve whenever the version changes
@@ -240,7 +223,8 @@ def best_julia_version(compat=None, upstream=None):
240223 return max (releases , key = lambda x : jill .utils .version_utils .Version (x [0 ]))[0 ]
241224
242225def record_resolve (pkgs ):
243- set_meta ("pydeps" , {
226+ save_meta ({
227+ "meta_version" : META_VERSION ,
244228 "version" : __version__ ,
245229 "dev" : CONFIG ["dev" ],
246230 "jlversion" : CONFIG .get ("exever" ),
Original file line number Diff line number Diff line change 129129 else :
130130 pkgs .append (deps .PackageSpec (name = "PythonCall" , uuid = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" , compat = "= " + __version__ ))
131131 # check if pkgs has changed at all
132- prev_pkgs = deps .get_meta ("pydeps" , "pkgs" )
132+ meta = deps .load_meta ()
133+ prev_pkgs = None if meta is None else meta .get ('pkgs' )
133134 if prev_pkgs is not None and sorted (prev_pkgs , key = lambda p : p ['name' ]) == sorted ([p .dict () for p in pkgs ], key = lambda p : p ['name' ]):
134135 install = ''
135136 else :
Original file line number Diff line number Diff line change @@ -10,15 +10,14 @@ function init_juliacall()
1010 if C. CTX. is_embedded
1111 # in this case, Julia is being embedded into Python by juliacall, which already exists
1212 pycopy! (jl, sys. modules[" juliacall" ])
13- @assert pystr_asstring (jl. CONFIG[" meta" ]) == Deps. meta_file ()
1413 @assert pystr_asstring (jl. __version__) == string (VERSION )
1514 elseif " juliacall" in sys. modules
1615 # otherwise, Python is being embedded into Julia by PythonCall, so should not exist
1716 error (" 'juliacall' module already exists" )
1817 else
1918 # create the juliacall module and save it in sys.modules
2019 pycopy! (jl, pytype (sys)(" juliacall" ))
21- jl. CONFIG = pydict (embedded= true , meta = Deps . meta_file () )
20+ jl. CONFIG = pydict (embedded= true )
2221 jl. __version__ = string (VERSION )
2322 jl. __path__ = pylist ((joinpath (dirname (dirname (pathof (PythonCall))), " juliacall" ),))
2423 sys. modules[" juliacall" ] = jl
You can’t perform that action at this time.
0 commit comments