code: def test_file_ops_delete(self):
      # given
      processor = OperationsPreprocessor()
  
      operations = [
          UploadFileSet(["b"], ["abc", "defgh"], reset=True),
          UploadFileSet(["c"], ["hhh", "gij"], reset=False),
          UploadFileSet(["c"], ["abc", "defgh"], reset=True),
          UploadFileSet(["c"], ["qqq"], reset=False),
          UploadFileSet(["d"], ["hhh", "gij"], reset=False),
          DeleteAttribute(["a"]),
          UploadFileSet(["a"], ["xx", "y", "abc"], reset=False),
          UploadFileSet(["a"], ["hhh", "gij"], reset=False),
          DeleteAttribute(["b"]),
      ]
  
      # when
      processor.process(operations)
  
      # then: there's a cutoff after DeleteAttribute(["a"])
      result = processor.get_operations()
      self.assertEqual(
          result.upload_operations,
          [
              UploadFileSet(["b"], ["abc", "defgh"], reset=True),
              UploadFileSet(["c"], ["abc", "defgh"], reset=True),
              UploadFileSet(["c"], ["qqq"], reset=False),
              UploadFileSet(["d"], ["hhh", "gij"], reset=False),
          ],
      )
      self.assertEqual(result.artifact_operations, [])
      self.assertEqual(
          result.other_operations,
          [
              DeleteAttribute(["a"]),
          ],
      )
      self.assertEqual(result.errors, [])
      self.assertEqual(processor.processed_ops_count, 6)
  
file_path: neptune-client/tests/unit/neptune/new/internal/backends/test_operations_preprocessor.py
imports: import uuid
  from neptune.exceptions import MetadataInconsistency
  from neptune.internal.backends.operations_preprocessor import OperationsPreprocessor
  from neptune.internal.operation import AddStrings, AssignFloat, AssignString, ClearFloatLog, ClearImageLog, ClearStringSet, ConfigFloatSeries, DeleteAttribute, LogFloats, LogImages, LogStrings, RemoveStrings, TrackFilesToArtifact, UploadFileSet
  from tests.unit.neptune.new.attributes.test_attribute_base import TestAttributeBase
label_desc: Use image node_id 6 for calling the TestOperationsPreprocessor obj's underlying member method code with example usage: obj.test_file_ops_delete() without return types