Skip to content

Commit 6f7be68

Browse files
authored
Merge branch 'master' into fix-local_env-rename
2 parents a112be8 + bd9fba9 commit 6f7be68

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

src/pymatgen/io/common.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -475,38 +475,38 @@ def reset(self):
475475
changed.
476476
"""
477477
# Note that py3.12 has Path.walk(). But we need to use os.walk to ensure backwards compatibility for now.
478-
self.files = [str((Path(d) / f).relative_to(self.path)) for d, _, fnames in os.walk(self.path) for f in fnames]
479-
480-
self._parsed_files: dict[str, Any] = {}
478+
self._files: dict[str, Any] = {
479+
str((Path(d) / f).relative_to(self.path)): None for d, _, fnames in os.walk(self.path) for f in fnames
480+
}
481481

482482
def __contains__(self, item):
483-
return item in self.files
483+
return item in self._files
484484

485485
def __len__(self):
486-
return len(self.files)
486+
return len(self._files)
487487

488488
def __iter__(self):
489-
return iter(self.files)
489+
return iter(self._files)
490490

491491
def __getitem__(self, item):
492-
if item in self._parsed_files:
493-
return self._parsed_files[item]
492+
if self._files.get(item):
493+
return self._files.get(item)
494494
fpath = self.path / item
495495

496496
if not (self.path / item).exists():
497-
raise ValueError(f"{item} not found in {self.path}. List of files are {self.files}.")
497+
raise ValueError(f"{item} not found in {self.path}. List of files are {self._files.keys()}.")
498498

499499
for k, cls_ in PMGDir.FILE_MAPPINGS.items():
500500
if k in item:
501501
modname, classname = cls_.rsplit(".", 1)
502502
module = importlib.import_module(modname)
503503
class_ = getattr(module, classname)
504504
try:
505-
self._parsed_files[item] = class_.from_file(fpath)
505+
self._files[item] = class_.from_file(fpath)
506506
except AttributeError:
507-
self._parsed_files[item] = class_(fpath)
507+
self._files[item] = class_(fpath)
508508

509-
return self._parsed_files[item]
509+
return self._files[item]
510510

511511
warnings.warn(
512512
f"No parser defined for {item}. Contents are returned as a string.",
@@ -522,7 +522,7 @@ def get_files_by_name(self, name: str) -> dict[str, Any]:
522522
Returns:
523523
{filename: object from PMGDir[filename]}
524524
"""
525-
return {f: self[f] for f in self.files if name in f}
525+
return {f: self[f] for f in self._files if name in f}
526526

527527
def __repr__(self):
528528
return f"PMGDir({self.path})"

tests/io/test_common.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def test_getitem(self):
3333

3434
d = PMGDir(f"{TEST_FILES_DIR}/io/vasp/fixtures/scan_relaxation")
3535
assert len(d) == 2
36-
assert "vasprun.xml.gz" in d.files
36+
assert "vasprun.xml.gz" in d
3737
assert "OUTCAR" in d
3838
assert d["vasprun.xml.gz"].incar["METAGGA"] == "R2scan"
3939

@@ -57,4 +57,5 @@ def test_getitem(self):
5757
assert all("OUTCAR" for k in outcars)
5858

5959
d.reset()
60-
assert len(d._parsed_files) == 0
60+
for v in d._files.values():
61+
assert v is None

0 commit comments

Comments
 (0)