code: def encode_file(file_in_name, file_out_name):
      with open(file_in_name, "rb") as file_in, open(
          file_out_name, mode="wb+"
      ) as file_out:
          signs_frequency = HuffmanCoding._get_char_frequency(file_in)
          file_in.seek(0)
          tree = HuffmanCoding._create_tree(signs_frequency)
          codes = HuffmanCoding._generate_codes(tree)
  
          writer = HuffmanWriter(file_out)
          writer.write_bits(
              "000"
          )  # leave space to save how many bits will be appended to fill the last byte
          writer.save_tree(tree)
          HuffmanCoding._encode_and_write_signs_to_file(
              file_in, writer, codes
          )
          writer.close()
  
      print("File encoded.")
  
imports: from collections import defaultdict, deque
  import heapq
label_desc: Use image node_id 4 for calling the HuffmanCoding obj's underlying member method code with example usage: obj.encode_file(file_in_name, file_out_name) without return types