@@ -364,7 +364,7 @@ def _clear_write(self):
364364 self ._streamed_obj_keys = set ()
365365 self ._write_fd = None
366366
367- def _write_external_blocks (self ):
367+ def _write_external_blocks (self , write_checksums ):
368368 from asdf import AsdfFile
369369
370370 if self ._write_fd is None or self ._write_fd .uri is None :
@@ -376,7 +376,7 @@ def _write_external_blocks(self):
376376 af = AsdfFile ()
377377 with generic_io .get_file (uri , mode = "w" ) as f :
378378 af .write_to (f , include_block_index = False )
379- writer .write_blocks (f , [blk ])
379+ writer .write_blocks (f , [blk ], write_checksums = write_checksums )
380380
381381 def make_write_block (self , data , options , obj ):
382382 """
@@ -541,7 +541,7 @@ def write_context(self, fd, copy_options=True):
541541 yield
542542 self ._clear_write ()
543543
544- def write (self , pad_blocks , include_block_index ):
544+ def write (self , pad_blocks , include_block_index , write_checksums ):
545545 """
546546 Write blocks that were set up during the current
547547 `write_context`.
@@ -559,6 +559,9 @@ def write(self, pad_blocks, include_block_index):
559559 If a streamed_block is provided (or the file is not
560560 seekable) no block index will be written.
561561
562+ write_checksums : bool
563+ Compute and write checksums for each block.
564+
562565 Raises
563566 ------
564567 OSError
@@ -574,11 +577,12 @@ def write(self, pad_blocks, include_block_index):
574577 pad_blocks ,
575578 streamed_block = self ._streamed_write_block ,
576579 write_index = include_block_index ,
580+ write_checksums = write_checksums ,
577581 )
578582 if len (self ._external_write_blocks ):
579- self ._write_external_blocks ()
583+ self ._write_external_blocks (write_checksums = write_checksums )
580584
581- def update (self , new_tree_size , pad_blocks , include_block_index ):
585+ def update (self , new_tree_size , pad_blocks , include_block_index , write_checksums ):
582586 """
583587 Perform an update-in-place of ASDF blocks set up during
584588 a `write_context`.
@@ -596,11 +600,13 @@ def update(self, new_tree_size, pad_blocks, include_block_index):
596600 a number of padding bytes based off a ratio of the data
597601 size.
598602
599- include_block_index : bool
603+ include_block_index : bool or None
600604 If True, include a block index at the end of the file.
601605 If a streamed_block is provided (or the file is not
602606 seekable) no block index will be written.
603607
608+ write_checksums: bool, optional
609+ Compute and write block checksums to the file.
604610
605611 Raises
606612 ------
@@ -626,7 +632,7 @@ def update(self, new_tree_size, pad_blocks, include_block_index):
626632 )
627633
628634 if len (self ._external_write_blocks ):
629- self ._write_external_blocks ()
635+ self ._write_external_blocks (write_checksums = write_checksums )
630636
631637 # do we have any blocks to write?
632638 if len (self ._write_blocks ) or self ._streamed_write_block :
@@ -637,6 +643,7 @@ def update(self, new_tree_size, pad_blocks, include_block_index):
637643 pad_blocks ,
638644 streamed_block = self ._streamed_write_block ,
639645 write_index = False , # don't write an index as we will modify the offsets
646+ write_checksums = write_checksums ,
640647 )
641648 new_block_end = self ._write_fd .tell ()
642649
0 commit comments