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
1
2
import os
2
3
import sys
3
4
8
9
9
10
### META
10
11
12
+ META_VERSION = 1 # increment whenever the format changes
13
+
11
14
def load_meta ():
12
- import json , os .path
13
15
fn = CONFIG ['meta' ]
14
16
if os .path .exists (fn ):
15
17
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
19
21
20
22
def save_meta (meta ):
21
- import json
23
+ assert isinstance (meta , dict )
24
+ assert meta .get ('meta_version' ) == META_VERSION
22
25
fn = CONFIG ['meta' ]
23
26
with open (fn , 'w' ) as fp :
24
27
json .dump (meta , fp )
25
28
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
-
46
29
### RESOLVE
47
30
48
31
class PackageSpec :
@@ -83,7 +66,7 @@ def dict(self):
83
66
84
67
def can_skip_resolve ():
85
68
# resolve if we haven't resolved before
86
- deps = get_meta ( "pydeps" )
69
+ deps = load_meta ( )
87
70
if deps is None :
88
71
return False
89
72
# resolve whenever the version changes
@@ -240,7 +223,8 @@ def best_julia_version(compat=None, upstream=None):
240
223
return max (releases , key = lambda x : jill .utils .version_utils .Version (x [0 ]))[0 ]
241
224
242
225
def record_resolve (pkgs ):
243
- set_meta ("pydeps" , {
226
+ save_meta ({
227
+ "meta_version" : META_VERSION ,
244
228
"version" : __version__ ,
245
229
"dev" : CONFIG ["dev" ],
246
230
"jlversion" : CONFIG .get ("exever" ),
Original file line number Diff line number Diff line change 129
129
else :
130
130
pkgs .append (deps .PackageSpec (name = "PythonCall" , uuid = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" , compat = "= " + __version__ ))
131
131
# 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' )
133
134
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' ]):
134
135
install = ''
135
136
else :
Original file line number Diff line number Diff line change @@ -10,15 +10,14 @@ function init_juliacall()
10
10
if C. CTX. is_embedded
11
11
# in this case, Julia is being embedded into Python by juliacall, which already exists
12
12
pycopy! (jl, sys. modules[" juliacall" ])
13
- @assert pystr_asstring (jl. CONFIG[" meta" ]) == Deps. meta_file ()
14
13
@assert pystr_asstring (jl. __version__) == string (VERSION )
15
14
elseif " juliacall" in sys. modules
16
15
# otherwise, Python is being embedded into Julia by PythonCall, so should not exist
17
16
error (" 'juliacall' module already exists" )
18
17
else
19
18
# create the juliacall module and save it in sys.modules
20
19
pycopy! (jl, pytype (sys)(" juliacall" ))
21
- jl. CONFIG = pydict (embedded= true , meta = Deps . meta_file () )
20
+ jl. CONFIG = pydict (embedded= true )
22
21
jl. __version__ = string (VERSION )
23
22
jl. __path__ = pylist ((joinpath (dirname (dirname (pathof (PythonCall))), " juliacall" ),))
24
23
sys. modules[" juliacall" ] = jl
You can’t perform that action at this time.
0 commit comments