Uploads workflow description from a *YAML* file.

        Parameters
        ----------
        filename: str
            path to the file from which description should be read

        See also
        --------
        :meth:`tmclient.api.TmClient.upload_workflow_description`

def upload_workflow_description_file(self, filename):
        '''Uploads workflow description from a *YAML* file.

        Parameters
        ----------
        filename: str
            path to the file from which description should be read

        See also
        --------
        :meth:`tmclient.api.TmClient.upload_workflow_description`
        '''
        if (
            not filename.lower().endswith('yml') and
            not filename.lower().endswith('yaml')
        ):
            raise ResourceError('filename must have "yaml" or "yml" extension')
        with open(filename) as f:
            logger.info('load workflow description from file: %s', filename)
            description = yaml.safe_load(f.read())
        self.upload_workflow_description(description)