Skip to content

Commit e1d9ddf

Browse files
authored
Merge pull request #317 from jacebrowning/match-defaults
Fix matching files for patterns with defaults
2 parents 121b3b9 + 2246004 commit e1d9ddf

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Release Notes
22

3+
## 2.2.2 (2024-01-06)
4+
5+
- Fixed `Manager.all()` behavior for patterns with default vales.
6+
37
## 2.2.1 (2024-01-04)
48

59
- Updated `Manager.get()` to handle default values in pattern arguments.

datafiles/manager.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,10 @@ def all(self, *, _exclude: str = "") -> Iterator[Model]:
119119
path = root / self.model.Meta.datafile_pattern
120120
log.debug(f"Detected dynamic pattern: {path}")
121121

122-
pattern = str(path.resolve())
122+
pattern = alt_pattern = str(path.resolve())
123+
for field in dataclasses.fields(self.model):
124+
if not isinstance(field.default, Missing):
125+
alt_pattern = alt_pattern.replace("{self." + field.name + "}", "")
123126
splatted = pattern.format(self=Splats()).replace(
124127
f"{os.sep}*{os.sep}", f"{os.sep}**{os.sep}"
125128
)
@@ -131,7 +134,7 @@ def all(self, *, _exclude: str = "") -> Iterator[Model]:
131134
continue
132135

133136
log.debug(f"Found matching path {index + 1}: {filename}")
134-
result = parse(pattern, filename)
137+
result = parse(pattern, filename) or parse(alt_pattern, filename)
135138
if result:
136139
values = list(result.named.values())
137140

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[tool.poetry]
22

33
name = "datafiles"
4-
version = "2.2.1"
4+
version = "2.2.2"
55
description = "File-based ORM for dataclasses."
66

77
license = "MIT"

0 commit comments

Comments
 (0)