code: def populate_from_file(
              self, sa, file, path, vio=None, store_raw_metadata=False,
              snapshot=None):
          # type: (StorageEntity, blobxfer.operations.azure.StorageAccount,
          #        azure.storage.file.models.File, str,
          #        blobxfer.models.metadata.VectoredStripe, bool, str) -> None
          
          if store_raw_metadata:
              self._raw_metadata = file.metadata
          else:
              self._fileattr = blobxfer.models.metadata.fileattr_from_metadata(
                  file.metadata)
          self._vio = vio
          self._can_create_containers = sa.can_create_containers
          if path is not None:
              self._name = str(pathlib.Path(path) / file.name)
          else:
              self._name = file.name
          self._snapshot = snapshot
          self._lmt = file.properties.last_modified
          self._size = file.properties.content_length
          self._md5 = file.properties.content_settings.content_md5
          self._cache_control = file.properties.content_settings.cache_control
          self._mode = StorageModes.File
          self._client = sa.file_client
docs: Populate properties from File
          :param StorageEntity self: this
          :param blobxfer.operations.azure.StorageAccount sa: storage account
          :param azure.storage.file.models.File file: file to populate from
          :param str path: full path to file
          :param blobxfer.models.metadata.VectoredStripe vio: Vectored stripe
          :param bool store_raw_metadata: store raw metadata
          :param str snapshot: snapshot