Default Pipelines#
convert_to()Decodes and returns encoder with file content.convert()Decodes, encodes to target format, returns raw bytes, closes both streams.Format-specific methods (e.g.,
as_obj()) shortcut forconvert_to().
Examples#
Basic Manual Pipeline#
from scfile.formats.mcsb import McsbDecoder
from scfile.formats.obj import ObjEncoder
with McsbDecoder("model.mcsb") as mcsb:
data = mcsb.decode()
with ObjEncoder(data) as obj:
obj.encode().save("output.obj")
Chaining and Factory Shortcuts#
from scfile.formats.mcsb import McsbDecoder
from scfile.formats.obj import ObjEncoder
with McsbDecoder("model.mcsb") as mcsb:
# convert_to triggers decode() internally and returns a clear encoder
with mcsb.convert_to(ObjEncoder) as obj:
obj.encode().save("output.obj")
# Using explicit target format shortcuts in a concise single-line chain.
# If encode() is omitted, the persistence layer invokes it automatically.
mcsb.as_obj().save("output.obj")
High-Level Encapsulated Conversion#
from scfile.formats.mcsb import McsbDecoder
from scfile.formats.obj import ObjEncoder
# Standard high-level pipeline returning raw format bytes directly
with McsbDecoder("model.mcsb") as mcsb:
data: bytes = mcsb.convert(ObjEncoder)
# Extracting buffer data
with ObjEncoder(data) as obj:
data: bytes = obj.getvalue() # Automatically triggers encode() if buffer is empty
Alternative Stream Handling#
from io import BytesIO
from scfile.formats.mcsb import McsbDecoder
from scfile.formats.obj import ObjEncoder
source = b"..."
output = BytesIO()
with McsbDecoder(source) as mcsb:
data = mcsb.decode()
# Directing serialization stream into specified output
with ObjEncoder(data, output=output) as obj:
obj.encode()
# output now contains serialized structure
with open("output.obj", "wb") as fp:
fp.write(output.getvalue())
Persistence#
Methods for saving encoded data to disk or retrieving buffers:
save(path)/save_as(path)Write data strictly to the specified file path.export(path)/export_as(path)Append the format suffix (e.g.,.obj) to the path and write the data.
Methods with the _as suffix keep the encoder stream open. Standard methods
(save, export) close the stream automatically after writing.
Persistence Options#
from scfile.formats.obj import ObjEncoder
with ObjEncoder(data) as obj:
# Appends format extension automatically
obj.encode().export("model") # Closes stream
assert obj.closed
with ObjEncoder(data) as obj:
obj.encode()
# Keeps encoder open to duplicate data or append modifications
obj.export_as("backup")
assert not obj.closed
obj.save_as("backup.obj")
assert not obj.closed
obj.save("model.obj") # Closes stream
assert obj.closed