Research-Stack/3-Mathematical-Models/fix_metadata.py

134 lines
5.2 KiB
Python

import os
os.chdir('/home/allaun/Documents/Research Stack/3-Mathematical-Models')
with open('pist_biological_polymorphic_shifter_v3_complete.py', 'r') as f:
content = f.read()
# Fix: Compressor.compress serializes state.metadata, decompress restores it
old_compress = """ # Build header — FIX 10: include shifter_kwargs for decompress
# Serialize only serializable kwargs (no lambdas, no complex objects)
serializable_kwargs = {}
for sname, kwdict in shifter_kwargs.items():
clean = {}
for k, v in kwdict.items():
if isinstance(v, (str, int, float, bool, list, dict, tuple, type(None))):
clean[k] = v
if clean:
serializable_kwargs[sname] = clean
header = {
'chain': [s.name for s in shifter_chain],
'n_factor': current_state.n_factor,
'original_size': len(data),
'shifter_kwargs': serializable_kwargs,
}"""
new_compress = """ # Build header — FIX 10: include shifter_kwargs AND metadata for decompress
# Serialize only serializable kwargs
serializable_kwargs = {}
for sname, kwdict in shifter_kwargs.items():
clean = {}
for k, v in kwdict.items():
if isinstance(v, (str, int, float, bool, list, dict, tuple, type(None))):
clean[k] = v
if clean:
serializable_kwargs[sname] = clean
# Serialize metadata that encode() auto-generated
serialized_metadata = {}
for sname, md in current_state.metadata.items():
clean = {}
for k, v in md.items():
if isinstance(v, (str, int, float, bool, list, dict, tuple, type(None))):
clean[k] = v
if clean:
serialized_metadata[sname] = clean
header = {
'chain': [s.name for s in shifter_chain],
'n_factor': current_state.n_factor,
'original_size': len(data),
'shifter_kwargs': serializable_kwargs,
'restore_metadata': serialized_metadata,
}"""
if old_compress in content:
content = content.replace(old_compress, new_compress)
print("Compress: metadata serialized")
else:
print("Compress pattern NOT FOUND!")
# Try shorter match
if "serializable_kwargs = {}" in content:
print(" But serializable_kwargs found")
# Just the header dict
old_h = """ header = {
'chain': [s.name for s in shifter_chain],
'n_factor': current_state.n_factor,
'original_size': len(data),
'shifter_kwargs': serializable_kwargs,
}"""
new_h = """ header = {
'chain': [s.name for s in shifter_chain],
'n_factor': current_state.n_factor,
'original_size': len(data),
'shifter_kwargs': serializable_kwargs,
'restore_metadata': serialized_metadata,
}"""
if old_h in content:
content = content.replace(old_h, new_h)
print("Header pattern fixed")
# Fix decompress to restore metadata
old_decomp = """ header = json.loads(header_bytes.decode('utf-8'))
chain_names = header['chain']
# FIX 10: Extract shifter_kwargs from header
shifter_kwargs = header.get('shifter_kwargs', {})
# Reconstruct shifter chain
shifter_chain = []
for name in chain_names:
if name in SHIFTER_MAP:
shifter_chain.append(SHIFTER_MAP[name])
else:
raise ValueError(f"Unknown shifter: {name}")
# Apply decoders in reverse order — FIX 10: pass kwargs
state = ManifoldState()
state.encoded = bytearray(encoded_data)
for sc in reversed(shifter_chain):
kw = shifter_kwargs.get(sc.name, {})
state = sc.decode(state, **kw)"""
new_decomp = """ header = json.loads(header_bytes.decode('utf-8'))
chain_names = header['chain']
# FIX 10: Extract shifter_kwargs from header
shifter_kwargs = header.get('shifter_kwargs', {})
# Restore encode-generated metadata so decoders can read it
restore_metadata = header.get('restore_metadata', {})
# Reconstruct shifter chain
shifter_chain = []
for name in chain_names:
if name in SHIFTER_MAP:
shifter_chain.append(SHIFTER_MAP[name])
else:
raise ValueError(f"Unknown shifter: {name}")
# Apply decoders in reverse order — FIX 10: pass kwargs + restore metadata
state = ManifoldState()
state.encoded = bytearray(encoded_data)
state.metadata = restore_metadata # Restore encode-generated metadata
for sc in reversed(shifter_chain):
kw = shifter_kwargs.get(sc.name, {})
state = sc.decode(state, **kw)"""
if old_decomp in content:
content = content.replace(old_decomp, new_decomp)
print("Decompress: metadata restored")
else:
print("Decompress pattern NOT FOUND!")
with open('pist_biological_polymorphic_shifter_v3_complete.py', 'w') as f:
f.write(content)
print("Done! Length:", len(content))