1. Remove BinaryFileUploader class definition from py/nodes.py 2. Remove related imports and registrations from __init__.py 3. Update README.md to remove Binary File Uploader documentation 4. Update preliminary-design.md and detailed-design.md design descriptions 5. Update test files to remove BinaryFileUploader tests 6. Keep historical documents as change records This simplifies the node architecture by removing the upload functionality. Users can now use BinaryFileLoader node with file paths for more direct file handling approach, which is more consistent with ComfyUI patterns. refactor: 完全删除 BinaryFileUploader 节点 1. 从 py/nodes.py 中删除 BinaryFileUploader 类定义 2. 从 __init__.py 中删除相关的导入和注册 3. 更新 README.md 删除 Binary File Uploader 文档 4. 更新 preliminary-design.md 和 detailed-design.md 设计描述 5. 更新测试文件删除 BinaryFileUploader 测试 6. 保留历史文档作为变更记录 这通过删除上传功能简化了节点架构。用户现在可以使用 BinaryFileLoader 节点配合文件路径进行更直接的文件处理,这与 ComfyUI 模式更加一致.
141 lines
4.2 KiB
Python
141 lines
4.2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Simple test for binary file handling functionality (without ComfyUI dependencies)
|
|
"""
|
|
|
|
import os
|
|
import tempfile
|
|
|
|
|
|
def test_binary_file_operations():
|
|
"""Test basic binary file operations"""
|
|
|
|
print("Testing Binary File Operations")
|
|
print("=" * 40)
|
|
|
|
# Create test binary data (simulating DCI file content)
|
|
test_data = b"DCI\x00\x01\x00\x00\x00This is test DCI binary data\x00\x01\x02\x03"
|
|
test_filename = "test_icon.dci"
|
|
|
|
# Test 1: Create and write binary file
|
|
print("\n1. Creating test binary file...")
|
|
with tempfile.NamedTemporaryFile(delete=False, suffix=".dci") as temp_file:
|
|
temp_file.write(test_data)
|
|
temp_file_path = temp_file.name
|
|
|
|
print(f"✓ Created test file: {os.path.basename(temp_file_path)}")
|
|
print(f"✓ File size: {len(test_data)} bytes")
|
|
|
|
# Test 2: Read binary file
|
|
print("\n2. Reading binary file...")
|
|
try:
|
|
with open(temp_file_path, 'rb') as f:
|
|
read_data = f.read()
|
|
|
|
print(f"✓ Read {len(read_data)} bytes")
|
|
print(f"✓ Content matches: {read_data == test_data}")
|
|
|
|
# Simulate binary data structure
|
|
binary_data = {
|
|
'content': read_data,
|
|
'filename': os.path.basename(temp_file_path),
|
|
'size': len(read_data),
|
|
'source_path': temp_file_path
|
|
}
|
|
|
|
print(f"✓ Binary data structure created")
|
|
|
|
except Exception as e:
|
|
print(f"✗ Failed to read file: {e}")
|
|
return False
|
|
|
|
# Test 3: Save binary data to new file
|
|
print("\n3. Saving binary data to new file...")
|
|
try:
|
|
output_dir = tempfile.mkdtemp()
|
|
output_path = os.path.join(output_dir, "saved_test.dci")
|
|
|
|
with open(output_path, 'wb') as f:
|
|
f.write(binary_data['content'])
|
|
|
|
print(f"✓ Saved to: {output_path}")
|
|
|
|
# Verify saved content
|
|
with open(output_path, 'rb') as f:
|
|
saved_content = f.read()
|
|
|
|
print(f"✓ Saved content matches: {saved_content == test_data}")
|
|
|
|
except Exception as e:
|
|
print(f"✗ Failed to save file: {e}")
|
|
return False
|
|
|
|
# Test 4: File discovery (simulating upload functionality)
|
|
print("\n4. Testing file discovery...")
|
|
try:
|
|
import glob
|
|
|
|
search_dir = os.path.dirname(temp_file_path)
|
|
pattern = os.path.join(search_dir, "*.dci")
|
|
matching_files = glob.glob(pattern)
|
|
|
|
print(f"✓ Found {len(matching_files)} DCI files")
|
|
print(f"✓ Files: {[os.path.basename(f) for f in matching_files]}")
|
|
|
|
except Exception as e:
|
|
print(f"✗ Failed file discovery: {e}")
|
|
return False
|
|
|
|
# Cleanup
|
|
try:
|
|
os.unlink(temp_file_path)
|
|
os.unlink(output_path)
|
|
os.rmdir(output_dir)
|
|
except:
|
|
pass
|
|
|
|
print("\n" + "=" * 40)
|
|
print("All binary file operations completed successfully! ✓")
|
|
return True
|
|
|
|
|
|
def demonstrate_dci_workflow():
|
|
"""Demonstrate how the binary nodes would work with DCI files"""
|
|
|
|
print("\n\nDCI Binary File Workflow Demonstration")
|
|
print("=" * 50)
|
|
|
|
print("\nWorkflow Steps:")
|
|
print("1. BinaryFileLoader: Load existing DCI file from disk")
|
|
print(" - Input: file_path (STRING)")
|
|
print(" - Output: binary_data (BINARY_DATA)")
|
|
|
|
print("\n2. BinaryFileSaver: Save DCI binary data to disk")
|
|
print(" - Input: binary_data (BINARY_DATA), file_path (STRING)")
|
|
print(" - Output: saved_path (STRING)")
|
|
|
|
|
|
|
|
print("\nBINARY_DATA Format:")
|
|
print("- Direct binary content (bytes type)")
|
|
print("- No metadata wrapper or dictionary structure")
|
|
print("- Ready for immediate use in binary operations")
|
|
|
|
print("\nUse Cases:")
|
|
print("- Load DCI icon files created outside ComfyUI")
|
|
print("- Save DCI files generated by other nodes")
|
|
|
|
print("- Chain with existing DCI nodes for complete workflows")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
success = test_binary_file_operations()
|
|
demonstrate_dci_workflow()
|
|
|
|
if success:
|
|
print("\n🎉 Binary file handling functionality verified!")
|
|
print("\nThe new nodes are ready for integration with ComfyUI.")
|
|
print("They provide essential binary file I/O capabilities for DCI icon files.")
|
|
else:
|
|
print("\n❌ Some operations failed.")
|