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
        """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
        """
        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
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