diff --git a/.github/workflows/conventional-prs.yml b/.github/workflows/conventional-prs.yml index d926109cd..2a5b86f44 100644 --- a/.github/workflows/conventional-prs.yml +++ b/.github/workflows/conventional-prs.yml @@ -13,4 +13,6 @@ jobs: steps: - uses: amannn/action-semantic-pull-request@v3.4.0 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + validateSingleCommit: true \ No newline at end of file diff --git a/snakemake/jobs.py b/snakemake/jobs.py index eadd19787..eafaf6395 100644 --- a/snakemake/jobs.py +++ b/snakemake/jobs.py @@ -244,13 +244,15 @@ def outputs_older_than_script_or_notebook(self): return if self.rule.basedir: # needed if rule is included from another subdirectory - path = os.path.relpath(os.path.join(self.rule.basedir, path)) - assert os.path.exists(path), "cannot find {0}".format(path) - script_mtime = os.lstat(path).st_mtime - for f in self.expanded_output: - if f.exists: - if not f.is_newer(script_mtime): - yield f + path = self.rule.basedir.join(path).get_path_or_uri() + if is_local_file(path): + assert os.path.exists(path), "cannot find {0}".format(path) + script_mtime = os.lstat(path).st_mtime + for f in self.expanded_output: + if f.exists: + if not f.is_newer(script_mtime): + yield f + # TODO also handle remote file case here. @property def threads(self): diff --git a/snakemake/sourcecache.py b/snakemake/sourcecache.py index c8dab9c88..3d7a5bf1f 100644 --- a/snakemake/sourcecache.py +++ b/snakemake/sourcecache.py @@ -150,12 +150,14 @@ class HostingProviderFile(SourceFile): def __init__( self, - repo: str, - path: str, + repo: str = None, + path: str = None, tag: str = None, branch: str = None, commit: str = None, ): + if repo is None: + raise SourceFileError("repo must be given") if not self.__class__.valid_repo.match(repo): raise SourceFileError( "repo {} is not a valid repo specification (must be given as owner/name)."