@@ -159,15 +159,6 @@ pub enum EnvelopeError {
159159 #[ display( "Zstd compression is not supported. This requires the 'zstd' feature for `hugr`." ) ]
160160 #[ from( ignore) ]
161161 ZstdUnsupported ,
162- /// Tried to encode a package with multiple HUGRs, when only 1 was expected.
163- #[ display(
164- "Packages with multiple HUGRs are currently unsupported. Tried to encode {count} HUGRs, when 1 was expected."
165- ) ]
166- #[ from( ignore) ]
167- MultipleHugrs {
168- /// The number of HUGRs in the package.
169- count : usize ,
170- } ,
171162 /// JSON serialization error.
172163 SerdeError {
173164 /// The source error.
@@ -244,7 +235,7 @@ fn decode_model(
244235 extension_registry : & ExtensionRegistry ,
245236 format : EnvelopeFormat ,
246237) -> Result < Package , EnvelopeError > {
247- use crate :: { import :: import_hugr , Extension } ;
238+ use crate :: Extension ;
248239 use hugr_model:: v0:: bumpalo:: Bump ;
249240
250241 if format. model_version ( ) != Some ( 0 ) {
@@ -255,7 +246,7 @@ fn decode_model(
255246 }
256247
257248 let bump = Bump :: default ( ) ;
258- let module_list = hugr_model:: v0:: binary:: read_from_reader ( & mut stream, & bump) ?;
249+ let model_package = hugr_model:: v0:: binary:: read_from_reader ( & mut stream, & bump) ?;
259250
260251 let mut extension_registry = extension_registry. clone ( ) ;
261252 if format. append_extensions ( ) {
@@ -266,9 +257,7 @@ fn decode_model(
266257 }
267258 }
268259
269- // TODO: Import multiple hugrs from the model?
270- let hugr = import_hugr ( & module_list, & extension_registry) ?;
271- Ok ( Package :: new ( [ hugr] ) ?)
260+ Ok ( Package :: from_model ( & model_package, & extension_registry) ?)
272261}
273262
274263/// Internal implementation of [`write_envelope`] to call with/without the zstd compression wrapper.
@@ -301,7 +290,6 @@ fn encode_model(
301290 package : & Package ,
302291 format : EnvelopeFormat ,
303292) -> Result < ( ) , EnvelopeError > {
304- use crate :: export:: export_hugr;
305293 use hugr_model:: v0:: { binary:: write_to_writer, bumpalo:: Bump } ;
306294
307295 if format. model_version ( ) != Some ( 0 ) {
@@ -311,15 +299,9 @@ fn encode_model(
311299 } ) ;
312300 }
313301
314- // TODO: Export multiple hugrs to the model?
315- if package. modules . len ( ) != 1 {
316- return Err ( EnvelopeError :: MultipleHugrs {
317- count : package. modules . len ( ) ,
318- } ) ;
319- }
320302 let bump = Bump :: default ( ) ;
321- let module = export_hugr ( & package. modules [ 0 ] , & bump) ;
322- write_to_writer ( & module , & mut writer) ?;
303+ let model_package = package. to_model ( & bump) ;
304+ write_to_writer ( & model_package , & mut writer) ?;
323305
324306 if format. append_extensions ( ) {
325307 serde_json:: to_writer ( writer, & package. extensions . iter ( ) . collect_vec ( ) ) ?;
0 commit comments