Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def segments(self, kind=None):
"""Return iterator over Segment data of specified kind.
Parameters
----------
kind : bytestring or sequence thereof
Segment id(s) as listed in SEGMENT_ID.
If None (default), all segments are returned.
"""
fpos = 0
while True:
self._fh.seek(fpos)
try:
segment = Segment(self._fh)
except SegmentNotFoundError:
break
if (kind is None) or (segment.sid in kind):
yield segment.data()
fpos = segment.data_offset + segment.allocated_size
def subblock_directory(self):
"""Return list of all DirectoryEntryDV in file.
Use SubBlockDirectorySegment if exists, else find SubBlockSegments.
"""
if self.header.directory_position:
segment = Segment(self._fh, self.header.directory_position)
if segment.sid == SubBlockDirectorySegment.SID:
return segment.data().entries
warnings.warn("SubBlockDirectory segment not found")
return list(segment.directory_entry for segment in
self.segments(SubBlockSegment.SID))
def attachment_directory(self):
"""Return list of all AttachmentEntryA1 in file.
Use AttachmentDirectorySegment if exists, else find AttachmentSegments.
"""
if self.header.attachment_directory_position:
segment = Segment(self._fh,
self.header.attachment_directory_position)
if segment.sid == AttachmentDirectorySegment.SID:
return segment.data().entries
warnings.warn("AttachmentDirectory segment not found")
return list(segment.attachment_entry for segment in
self.segments(AttachmentSegment.SID))
"""
self._fh = FileHandle(arg, size=filesize)
try:
if self._fh.read(10) != b'ZISRAWFILE':
raise ValueError("not a CZI file")
self.header = Segment(self._fh, 0).data()
except Exception:
self._fh.close()
raise
if multifile and self.header.file_part and isinstance(arg, basestring):
# open master file instead
self._fh.close()
name, _ = match_filename(arg)
self._fh = FileHandle(name)
self.header = Segment(self._fh, 0).data()
assert(self.header.primary_file_guid == self.header.file_guid)
assert(self.header.file_part == 0)
if self.header.update_pending:
warnings.warn("file is pending update")
self._filter_mosaic = detectmosaic
def metadata(self):
"""Return data from MetadataSegment as xml.ElementTree root Element.
Return None if no Metadata segment is found.
"""
if self.header.metadata_position:
segment = Segment(self._fh, self.header.metadata_position)
if segment.sid == MetadataSegment.SID:
data = segment.data().data()
return etree.fromstring(data.encode('utf-8'))
warnings.warn("Metadata segment not found")
try:
metadata = next(self.segments(MetadataSegment.SID))
return etree.fromstring(metadata.data().encode('utf-8'))
except StopIteration:
pass
def data_segment(self):
"""Read and return AttachmentSegment at file_position."""
return Segment(self._fh, self.file_position).data()