(filename, pattern, suffix)
| 177 | |
| 178 | |
| 179 | def _resolve_samefile(filename, pattern, suffix): |
| 180 | if pattern == filename: |
| 181 | return None |
| 182 | if pattern.endswith(os.path.sep): |
| 183 | pattern += f'*{suffix}' |
| 184 | assert os.path.normpath(pattern) == pattern, (pattern,) |
| 185 | if '*' in os.path.dirname(pattern): |
| 186 | raise NotImplementedError((filename, pattern)) |
| 187 | if '*' not in os.path.basename(pattern): |
| 188 | return pattern |
| 189 | |
| 190 | common = os.path.commonpath([filename, pattern]) |
| 191 | relpattern = pattern[len(common) + len(os.path.sep):] |
| 192 | relpatterndir = os.path.dirname(relpattern) |
| 193 | relfile = filename[len(common) + len(os.path.sep):] |
| 194 | if os.path.basename(pattern) == '*': |
| 195 | return os.path.join(common, relpatterndir, relfile) |
| 196 | elif os.path.basename(relpattern) == '*' + suffix: |
| 197 | return os.path.join(common, relpatterndir, relfile) |
| 198 | else: |
| 199 | raise NotImplementedError((filename, pattern)) |
| 200 | |
| 201 | |
| 202 | @contextlib.contextmanager |
no test coverage detected
searching dependent graphs…