1818import  aesara 
1919import  aesara .sparse  as  sparse 
2020import  aesara .tensor  as  at 
21+ import  arviz  as  az 
2122import  cloudpickle 
2223import  numpy  as  np 
2324import  numpy .ma  as  ma 
@@ -94,20 +95,20 @@ def test_context_passes_vars_to_parent_model(self):
9495                usermodel2 .register_rv (pm .Normal .dist (), "v3" )
9596                pm .Normal ("v4" )
9697                # this variable is created in parent model too 
97-         assert  "another/ v2"  in  model .named_vars 
98-         assert  "another/ v3"  in  model .named_vars 
99-         assert  "another/ v3"  in  usermodel2 .named_vars 
100-         assert  "another/ v4"  in  model .named_vars 
101-         assert  "another/ v4"  in  usermodel2 .named_vars 
98+         assert  "another:: v2"  in  model .named_vars 
99+         assert  "another:: v3"  in  model .named_vars 
100+         assert  "another:: v3"  in  usermodel2 .named_vars 
101+         assert  "another:: v4"  in  model .named_vars 
102+         assert  "another:: v4"  in  usermodel2 .named_vars 
102103        assert  hasattr (usermodel2 , "v3" )
103104        assert  hasattr (usermodel2 , "v2" )
104105        assert  hasattr (usermodel2 , "v4" )
105106        # When you create a class based model you should follow some rules 
106107        with  model :
107108            m  =  NewModel ("one_more" )
108-         assert  m .d  is  model ["one_more/ d" ]
109-         assert  m ["d" ] is  model ["one_more/ d" ]
110-         assert  m ["one_more/ d" ] is  model ["one_more/ d" ]
109+         assert  m .d  is  model ["one_more:: d" ]
110+         assert  m ["d" ] is  model ["one_more:: d" ]
111+         assert  m ["one_more:: d" ] is  model ["one_more:: d" ]
111112
112113
113114class  TestNested :
@@ -123,8 +124,8 @@ def test_nest_context_works(self):
123124    def  test_named_context (self ):
124125        with  pm .Model () as  m :
125126            NewModel (name = "new" )
126-         assert  "new/ v1"  in  m .named_vars 
127-         assert  "new/ v2"  in  m .named_vars 
127+         assert  "new:: v1"  in  m .named_vars 
128+         assert  "new:: v2"  in  m .named_vars 
128129
129130    def  test_docstring_example1 (self ):
130131        usage1  =  DocstringModel ()
@@ -137,10 +138,10 @@ def test_docstring_example1(self):
137138    def  test_docstring_example2 (self ):
138139        with  pm .Model () as  model :
139140            DocstringModel (name = "prefix" )
140-         assert  "prefix/ v1"  in  model .named_vars 
141-         assert  "prefix/ v2"  in  model .named_vars 
142-         assert  "prefix/ v3"  in  model .named_vars 
143-         assert  "prefix/ v3_sq"  in  model .named_vars 
141+         assert  "prefix:: v1"  in  model .named_vars 
142+         assert  "prefix:: v2"  in  model .named_vars 
143+         assert  "prefix:: v3"  in  model .named_vars 
144+         assert  "prefix:: v3_sq"  in  model .named_vars 
144145        assert  len (model .potentials ), 1 
145146
146147    def  test_duplicates_detection (self ):
@@ -160,14 +161,30 @@ def test_nested_named_model_repeated(self):
160161            b  =  pm .Normal ("var" )
161162            with  pm .Model ("sub" ):
162163                b  =  pm .Normal ("var" )
163-         assert  {"sub/ var" , "sub/ sub/ var" } ==  set (model .named_vars .keys ())
164+         assert  {"sub:: var" , "sub:: sub:: var" } ==  set (model .named_vars .keys ())
164165
165166    def  test_nested_named_model (self ):
166167        with  pm .Model ("sub1" ) as  model :
167168            b  =  pm .Normal ("var" )
168169            with  pm .Model ("sub2" ):
169170                b  =  pm .Normal ("var" )
170-         assert  {"sub1/var" , "sub1/sub2/var" } ==  set (model .named_vars .keys ())
171+         assert  {"sub1::var" , "sub1::sub2::var" } ==  set (model .named_vars .keys ())
172+ 
173+     def  test_nested_model_to_netcdf (self , tmp_path ):
174+         with  pm .Model ("scope" ) as  model :
175+             b  =  pm .Normal ("var" )
176+             trace  =  pm .sample (100 , tune = 0 )
177+         az .to_netcdf (trace , tmp_path  /  "trace.nc" )
178+         trace1  =  az .from_netcdf (tmp_path  /  "trace.nc" )
179+         assert  "scope::var"  in  trace1 .posterior 
180+ 
181+     def  test_bad_name (self ):
182+         with  pm .Model () as  model :
183+             with  pytest .raises (KeyError ):
184+                 b  =  pm .Normal ("var::" )
185+         with  pytest .raises (KeyError ):
186+             with  pm .Model ("scope::" ) as  model :
187+                 b  =  pm .Normal ("v" )
171188
172189
173190class  TestObserved :
0 commit comments