emmet-builders 0.57.1__tar.gz → 0.58.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of emmet-builders might be problematic. Click here for more details.
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/PKG-INFO +1 -1
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/electronic_structure.py +79 -16
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/utils.py +57 -1
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet_builders.egg-info/PKG-INFO +1 -1
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet_builders.egg-info/requires.txt +1 -1
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/deployment.txt +12 -10
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/macos-latest_py3.10.txt +13 -11
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/macos-latest_py3.10_extras.txt +21 -19
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/macos-latest_py3.11.txt +13 -11
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/macos-latest_py3.11_extras.txt +21 -19
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/macos-latest_py3.8.txt +12 -10
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/macos-latest_py3.8_extras.txt +20 -18
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/macos-latest_py3.9.txt +14 -12
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/macos-latest_py3.9_extras.txt +22 -20
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.10.txt +13 -11
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.10_extras.txt +21 -19
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.11.txt +13 -11
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.11_extras.txt +21 -19
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.8.txt +12 -10
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.8_extras.txt +20 -18
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.9.txt +14 -12
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.9_extras.txt +22 -20
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/setup.py +1 -1
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/abinit/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/abinit/phonon.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/abinit/sound_velocity.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/feff/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/feff/xas.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/absorption_spectrum.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/alloys.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/basic_descriptors.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/bonds.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/chemenv.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/corrected_entries.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/dielectric.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/elasticity.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/electrodes.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/magnetism.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/optimade.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/oxidation_states.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/piezoelectric.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/provenance.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/robocrys.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/similarity.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/substrates.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/summary.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/thermo.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/mobility/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/mobility/migration_graph.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/molecules/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/molecules/atomic.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/molecules/bonds.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/molecules/metal_binding.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/molecules/orbitals.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/molecules/redox.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/molecules/summary.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/molecules/thermo.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/molecules/vibration.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/qchem/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/qchem/molecules.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/settings.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/vasp/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/vasp/materials.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/vasp/task_validator.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet_builders.egg-info/SOURCES.txt +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet_builders.egg-info/dependency_links.txt +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet_builders.egg-info/not-zip-safe +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet_builders.egg-info/top_level.txt +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/setup.cfg +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/conftest.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/molecules/__init__.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/molecules/test_atomic.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/molecules/test_bonds.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/molecules/test_metal_binding.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/molecules/test_orbitals.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/molecules/test_redox.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/molecules/test_summary.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/molecules/test_thermo.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/molecules/test_vibration.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_absorption.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_basic_descriptors.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_chemenv.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_corrected_entries_thermo.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_dielectric.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_elasticity.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_electronic_structure.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_magnetism.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_materials.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_mobility.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_oxidation.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_piezoelectric.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_qchem.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_similarity.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_summary.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_utils.py +0 -0
- {emmet-builders-0.57.1 → emmet-builders-0.58.0}/tests/test_vasp.py +0 -0
{emmet-builders-0.57.1 → emmet-builders-0.58.0}/emmet/builders/materials/electronic_structure.py
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from collections import defaultdict
|
|
2
2
|
from math import ceil
|
|
3
3
|
import itertools
|
|
4
|
+
import re
|
|
5
|
+
import boto3
|
|
4
6
|
import numpy as np
|
|
5
7
|
from maggma.builders import Builder
|
|
6
8
|
from maggma.utils import grouper
|
|
@@ -18,6 +20,8 @@ from emmet.core.settings import EmmetSettings
|
|
|
18
20
|
from emmet.core.electronic_structure import ElectronicStructureDoc
|
|
19
21
|
from emmet.core.utils import jsanitize
|
|
20
22
|
|
|
23
|
+
from emmet.builders.utils import query_open_data
|
|
24
|
+
|
|
21
25
|
SETTINGS = EmmetSettings()
|
|
22
26
|
|
|
23
27
|
|
|
@@ -43,8 +47,10 @@ class ElectronicStructureBuilder(Builder):
|
|
|
43
47
|
tasks (Store): Store of task documents
|
|
44
48
|
materials (Store): Store of materials documents
|
|
45
49
|
electronic_structure (Store): Store of electronic structure summary data documents
|
|
46
|
-
bandstructure_fs (Store): Store of bandstructures
|
|
47
|
-
|
|
50
|
+
bandstructure_fs (Store, str): Store of bandstructures, or S3 URL string with prefix
|
|
51
|
+
(e.g. s3://materialsproject-parsed/bandstructures).
|
|
52
|
+
dos_fs (Store, str): Store of DOS, or S3 URL string with bucket and prefix
|
|
53
|
+
(e.g. s3://materialsproject-parsed/dos).
|
|
48
54
|
chunk_size (int): Chunk size to use for processing. Defaults to 10.
|
|
49
55
|
query (dict): Dictionary to limit materials to be analyzed
|
|
50
56
|
"""
|
|
@@ -57,8 +63,27 @@ class ElectronicStructureBuilder(Builder):
|
|
|
57
63
|
self.chunk_size = chunk_size
|
|
58
64
|
self.query = query if query else {}
|
|
59
65
|
|
|
66
|
+
self._s3_resource = None
|
|
67
|
+
|
|
68
|
+
sources = [tasks, materials]
|
|
69
|
+
|
|
70
|
+
fs_stores = [bandstructure_fs, dos_fs]
|
|
71
|
+
|
|
72
|
+
for store in fs_stores:
|
|
73
|
+
if isinstance(store, str):
|
|
74
|
+
if not re.match("^s3://.*", store):
|
|
75
|
+
raise ValueError(
|
|
76
|
+
"Please provide an S3 URL "
|
|
77
|
+
"in the format s3://{bucket_name}/{prefix}"
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
if self._s3_resource is None:
|
|
81
|
+
self._s3_resource = boto3.resource("s3")
|
|
82
|
+
else:
|
|
83
|
+
sources.append(store)
|
|
84
|
+
|
|
60
85
|
super().__init__(
|
|
61
|
-
sources=
|
|
86
|
+
sources=sources,
|
|
62
87
|
targets=[electronic_structure],
|
|
63
88
|
chunk_size=chunk_size,
|
|
64
89
|
**kwargs,
|
|
@@ -385,6 +410,7 @@ class ElectronicStructureBuilder(Builder):
|
|
|
385
410
|
structure = Structure.from_dict(task_query["output"]["structure"])
|
|
386
411
|
|
|
387
412
|
kpoints = task_query["orig_inputs"]["kpoints"]
|
|
413
|
+
|
|
388
414
|
labels_dict = {
|
|
389
415
|
label: point
|
|
390
416
|
for label, point in zip(kpoints["labels"], kpoints["kpoints"])
|
|
@@ -397,16 +423,32 @@ class ElectronicStructureBuilder(Builder):
|
|
|
397
423
|
bs_type = None
|
|
398
424
|
|
|
399
425
|
if bs_type is None:
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
426
|
+
if isinstance(self.bandstructure_fs, str):
|
|
427
|
+
_, _, bucket, prefix = self.bandstructure_fs.strip(
|
|
428
|
+
"/"
|
|
429
|
+
).split("/")
|
|
430
|
+
|
|
431
|
+
bs_dict = query_open_data(
|
|
432
|
+
bucket,
|
|
433
|
+
prefix,
|
|
434
|
+
task_id,
|
|
435
|
+
monty_decode=False,
|
|
436
|
+
s3_resource=self._s3_resource,
|
|
437
|
+
)
|
|
438
|
+
else:
|
|
439
|
+
bs_dict = self.bandstructure_fs.query_one(
|
|
440
|
+
{self.bandstructure_fs.key: str(task_id)}
|
|
441
|
+
)
|
|
403
442
|
|
|
404
443
|
if bs_dict is not None:
|
|
405
444
|
bs = BandStructureSymmLine.from_dict(bs_dict["data"])
|
|
406
445
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
446
|
+
labels_dict = {
|
|
447
|
+
label: kpoint.frac_coords
|
|
448
|
+
for label, kpoint in bs.labels_dict.items()
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
bs_type = self._obtain_path_type(labels_dict, bs.structure)
|
|
410
452
|
|
|
411
453
|
is_hubbard = task_query["input"]["is_hubbard"]
|
|
412
454
|
lmaxmix = task_query["input"]["incar"].get(
|
|
@@ -425,6 +467,7 @@ class ElectronicStructureBuilder(Builder):
|
|
|
425
467
|
"nkpoints": int(nkpoints),
|
|
426
468
|
"updated_on": lu_dt,
|
|
427
469
|
"output_structure": structure,
|
|
470
|
+
"labels_dict": labels_dict,
|
|
428
471
|
}
|
|
429
472
|
)
|
|
430
473
|
|
|
@@ -565,10 +608,19 @@ class ElectronicStructureBuilder(Builder):
|
|
|
565
608
|
materials_doc["bandstructure"][bs_type]["lmaxmix"] = sorted_bs_data[0][
|
|
566
609
|
"lmaxmix"
|
|
567
610
|
]
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
611
|
+
if isinstance(self.bandstructure_fs, str):
|
|
612
|
+
_, _, bucket, prefix = self.bandstructure_fs.strip("/").split("/")
|
|
613
|
+
bs_obj = query_open_data(
|
|
614
|
+
bucket,
|
|
615
|
+
prefix,
|
|
616
|
+
sorted_bs_data[0]["task_id"],
|
|
617
|
+
monty_decode=False,
|
|
618
|
+
s3_resource=self._s3_resource,
|
|
619
|
+
)
|
|
620
|
+
else:
|
|
621
|
+
bs_obj = self.bandstructure_fs.query_one(
|
|
622
|
+
criteria={"fs_id": sorted_bs_data[0]["fs_id"]}
|
|
623
|
+
)
|
|
572
624
|
|
|
573
625
|
materials_doc["bandstructure"][bs_type]["object"] = (
|
|
574
626
|
bs_obj["data"] if bs_obj is not None else None
|
|
@@ -602,9 +654,20 @@ class ElectronicStructureBuilder(Builder):
|
|
|
602
654
|
|
|
603
655
|
materials_doc["dos"]["lmaxmix"] = sorted_dos_data[0]["lmaxmix"]
|
|
604
656
|
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
657
|
+
if isinstance(self.bandstructure_fs, str):
|
|
658
|
+
_, _, bucket, prefix = self.dos_fs.strip("/").split("/")
|
|
659
|
+
dos_obj = query_open_data(
|
|
660
|
+
bucket,
|
|
661
|
+
prefix,
|
|
662
|
+
sorted_dos_data[0]["task_id"],
|
|
663
|
+
monty_decode=False,
|
|
664
|
+
s3_resource=self._s3_resource,
|
|
665
|
+
)
|
|
666
|
+
else:
|
|
667
|
+
dos_obj = self.dos_fs.query_one(
|
|
668
|
+
criteria={"fs_id": sorted_dos_data[0]["fs_id"]}
|
|
669
|
+
)
|
|
670
|
+
|
|
608
671
|
materials_doc["dos"]["object"] = (
|
|
609
672
|
dos_obj["data"] if dos_obj is not None else None
|
|
610
673
|
)
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
from typing import Set, Union
|
|
1
|
+
from typing import Set, Union, Any
|
|
2
2
|
import sys
|
|
3
3
|
import os
|
|
4
|
+
from gzip import GzipFile
|
|
5
|
+
import orjson
|
|
6
|
+
import json
|
|
7
|
+
from io import BytesIO
|
|
8
|
+
from monty.serialization import MontyDecoder
|
|
9
|
+
from botocore.exceptions import ClientError
|
|
4
10
|
from itertools import chain, combinations
|
|
5
11
|
from pymatgen.core import Structure
|
|
6
12
|
from pymatgen.analysis.diffusion.neb.full_path_mapper import MigrationGraph
|
|
@@ -146,6 +152,56 @@ def get_hop_cutoff(
|
|
|
146
152
|
return None
|
|
147
153
|
|
|
148
154
|
|
|
155
|
+
def query_open_data(
|
|
156
|
+
bucket: str,
|
|
157
|
+
prefix: str,
|
|
158
|
+
key: str,
|
|
159
|
+
monty_decode: bool = True,
|
|
160
|
+
s3_resource: Any = None,
|
|
161
|
+
) -> Union[dict, None]:
|
|
162
|
+
"""Query a Materials Project AWS S3 Open Data bucket directly with boto3
|
|
163
|
+
|
|
164
|
+
Args:
|
|
165
|
+
bucket (str): Materials project bucket name
|
|
166
|
+
prefix (str): Full set of file prefixes
|
|
167
|
+
key (str): Key for file
|
|
168
|
+
monty_decode (bool): Whether to monty decode or keep as dictionary. Defaults to True.
|
|
169
|
+
s3_resource (Optional[Any]): S3 resource. One will be instantiated if none are provided
|
|
170
|
+
|
|
171
|
+
Returns:
|
|
172
|
+
dict: MontyDecoded data or None
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
def decode(content, monty_decode):
|
|
176
|
+
if monty_decode:
|
|
177
|
+
result = MontyDecoder().decode(content)
|
|
178
|
+
else:
|
|
179
|
+
result = orjson.loads(content)
|
|
180
|
+
return result
|
|
181
|
+
|
|
182
|
+
try:
|
|
183
|
+
file_key = f"{prefix}/{key}.json.gz"
|
|
184
|
+
ref = s3_resource.Object(bucket, file_key) # type: ignore
|
|
185
|
+
bytes = ref.get()["Body"] # type: ignore
|
|
186
|
+
|
|
187
|
+
with GzipFile(fileobj=bytes, mode="r") as gzipfile:
|
|
188
|
+
content = gzipfile.read()
|
|
189
|
+
|
|
190
|
+
try:
|
|
191
|
+
result = decode(content, monty_decode)
|
|
192
|
+
except (orjson.JSONDecodeError, json.JSONDecodeError):
|
|
193
|
+
try:
|
|
194
|
+
with GzipFile(fileobj=BytesIO(content), mode="r") as gzipfile_nested:
|
|
195
|
+
result = decode(gzipfile_nested.read(), monty_decode)
|
|
196
|
+
except Exception:
|
|
197
|
+
print(f"Issue decoding {file_key} from bucket {bucket}")
|
|
198
|
+
return None
|
|
199
|
+
except ClientError:
|
|
200
|
+
return None
|
|
201
|
+
|
|
202
|
+
return result
|
|
203
|
+
|
|
204
|
+
|
|
149
205
|
# From: https://stackoverflow.com/a/45669280
|
|
150
206
|
class HiddenPrints:
|
|
151
207
|
def __enter__(self):
|
|
@@ -14,9 +14,9 @@ bcrypt==4.0.1
|
|
|
14
14
|
# via paramiko
|
|
15
15
|
blinker==1.6.2
|
|
16
16
|
# via flask
|
|
17
|
-
boto3==1.26.
|
|
17
|
+
boto3==1.26.160
|
|
18
18
|
# via maggma
|
|
19
|
-
botocore==1.29.
|
|
19
|
+
botocore==1.29.160
|
|
20
20
|
# via
|
|
21
21
|
# boto3
|
|
22
22
|
# s3transfer
|
|
@@ -42,18 +42,20 @@ dnspython==2.3.0
|
|
|
42
42
|
# via
|
|
43
43
|
# maggma
|
|
44
44
|
# pymongo
|
|
45
|
-
emmet-core[all]==0.
|
|
45
|
+
emmet-core[all]==0.57.2
|
|
46
46
|
# via
|
|
47
47
|
# emmet-builders (emmet/emmet-builders/setup.py)
|
|
48
48
|
# mp-api
|
|
49
49
|
exceptiongroup==1.1.1
|
|
50
50
|
# via anyio
|
|
51
|
-
fastapi==0.
|
|
51
|
+
fastapi==0.98.0
|
|
52
52
|
# via maggma
|
|
53
53
|
flask==2.3.2
|
|
54
54
|
# via mongogrant
|
|
55
55
|
fonttools==4.40.0
|
|
56
56
|
# via matplotlib
|
|
57
|
+
frozendict==2.3.8
|
|
58
|
+
# via pymatgen
|
|
57
59
|
future==0.18.3
|
|
58
60
|
# via
|
|
59
61
|
# matminer
|
|
@@ -82,7 +84,7 @@ kiwisolver==1.4.4
|
|
|
82
84
|
# via matplotlib
|
|
83
85
|
latexcodec==2.0.1
|
|
84
86
|
# via pybtex
|
|
85
|
-
maggma==0.51.
|
|
87
|
+
maggma==0.51.9
|
|
86
88
|
# via emmet-builders (emmet/emmet-builders/setup.py)
|
|
87
89
|
markupsafe==2.1.3
|
|
88
90
|
# via
|
|
@@ -172,7 +174,7 @@ pydantic==1.10.9
|
|
|
172
174
|
# maggma
|
|
173
175
|
pydash==7.0.4
|
|
174
176
|
# via maggma
|
|
175
|
-
pymatgen==2023.
|
|
177
|
+
pymatgen==2023.6.23
|
|
176
178
|
# via
|
|
177
179
|
# emmet-core
|
|
178
180
|
# matminer
|
|
@@ -184,14 +186,14 @@ pymatgen-analysis-alloys==0.0.6
|
|
|
184
186
|
# via emmet-core
|
|
185
187
|
pymatgen-analysis-diffusion==2022.7.21
|
|
186
188
|
# via emmet-core
|
|
187
|
-
pymongo==4.
|
|
189
|
+
pymongo==4.4.0
|
|
188
190
|
# via
|
|
189
191
|
# maggma
|
|
190
192
|
# matminer
|
|
191
193
|
# mongogrant
|
|
192
194
|
pynacl==1.5.0
|
|
193
195
|
# via paramiko
|
|
194
|
-
pyparsing==3.0
|
|
196
|
+
pyparsing==3.1.0
|
|
195
197
|
# via matplotlib
|
|
196
198
|
pyrsistent==0.19.3
|
|
197
199
|
# via jsonschema
|
|
@@ -215,7 +217,7 @@ requests==2.31.0
|
|
|
215
217
|
# pymatgen
|
|
216
218
|
robocrys==0.2.8
|
|
217
219
|
# via emmet-core
|
|
218
|
-
ruamel-yaml==0.17.
|
|
220
|
+
ruamel-yaml==0.17.32
|
|
219
221
|
# via
|
|
220
222
|
# pymatgen
|
|
221
223
|
# robocrys
|
|
@@ -225,7 +227,7 @@ s3transfer==0.6.1
|
|
|
225
227
|
# via boto3
|
|
226
228
|
scikit-learn==1.2.2
|
|
227
229
|
# via matminer
|
|
228
|
-
scipy==1.
|
|
230
|
+
scipy==1.11.0
|
|
229
231
|
# via
|
|
230
232
|
# -r python/requirements.txt
|
|
231
233
|
# pymatgen
|
|
@@ -14,9 +14,9 @@ bcrypt==4.0.1
|
|
|
14
14
|
# via paramiko
|
|
15
15
|
blinker==1.6.2
|
|
16
16
|
# via flask
|
|
17
|
-
boto3==1.26.
|
|
17
|
+
boto3==1.26.160
|
|
18
18
|
# via maggma
|
|
19
|
-
botocore==1.29.
|
|
19
|
+
botocore==1.29.160
|
|
20
20
|
# via
|
|
21
21
|
# boto3
|
|
22
22
|
# s3transfer
|
|
@@ -42,18 +42,20 @@ dnspython==2.3.0
|
|
|
42
42
|
# via
|
|
43
43
|
# maggma
|
|
44
44
|
# pymongo
|
|
45
|
-
emmet-core[all]==0.
|
|
45
|
+
emmet-core[all]==0.57.2
|
|
46
46
|
# via
|
|
47
47
|
# emmet-builders (setup.py)
|
|
48
48
|
# mp-api
|
|
49
49
|
exceptiongroup==1.1.1
|
|
50
50
|
# via anyio
|
|
51
|
-
fastapi==0.
|
|
51
|
+
fastapi==0.98.0
|
|
52
52
|
# via maggma
|
|
53
53
|
flask==2.3.2
|
|
54
54
|
# via mongogrant
|
|
55
55
|
fonttools==4.40.0
|
|
56
56
|
# via matplotlib
|
|
57
|
+
frozendict==2.3.8
|
|
58
|
+
# via pymatgen
|
|
57
59
|
future==0.18.3
|
|
58
60
|
# via
|
|
59
61
|
# matminer
|
|
@@ -82,7 +84,7 @@ kiwisolver==1.4.4
|
|
|
82
84
|
# via matplotlib
|
|
83
85
|
latexcodec==2.0.1
|
|
84
86
|
# via pybtex
|
|
85
|
-
maggma==0.51.
|
|
87
|
+
maggma==0.51.9
|
|
86
88
|
# via emmet-builders (setup.py)
|
|
87
89
|
markupsafe==2.1.3
|
|
88
90
|
# via
|
|
@@ -118,7 +120,7 @@ networkx==3.1
|
|
|
118
120
|
# via
|
|
119
121
|
# pymatgen
|
|
120
122
|
# robocrys
|
|
121
|
-
numpy==1.
|
|
123
|
+
numpy==1.25.0
|
|
122
124
|
# via
|
|
123
125
|
# contourpy
|
|
124
126
|
# maggma
|
|
@@ -168,7 +170,7 @@ pydantic==1.10.9
|
|
|
168
170
|
# maggma
|
|
169
171
|
pydash==7.0.4
|
|
170
172
|
# via maggma
|
|
171
|
-
pymatgen==2023.
|
|
173
|
+
pymatgen==2023.6.23
|
|
172
174
|
# via
|
|
173
175
|
# emmet-core
|
|
174
176
|
# matminer
|
|
@@ -180,14 +182,14 @@ pymatgen-analysis-alloys==0.0.6
|
|
|
180
182
|
# via emmet-core
|
|
181
183
|
pymatgen-analysis-diffusion==2022.7.21
|
|
182
184
|
# via emmet-core
|
|
183
|
-
pymongo==4.
|
|
185
|
+
pymongo==4.4.0
|
|
184
186
|
# via
|
|
185
187
|
# maggma
|
|
186
188
|
# matminer
|
|
187
189
|
# mongogrant
|
|
188
190
|
pynacl==1.5.0
|
|
189
191
|
# via paramiko
|
|
190
|
-
pyparsing==3.0
|
|
192
|
+
pyparsing==3.1.0
|
|
191
193
|
# via matplotlib
|
|
192
194
|
pyrsistent==0.19.3
|
|
193
195
|
# via jsonschema
|
|
@@ -211,7 +213,7 @@ requests==2.31.0
|
|
|
211
213
|
# pymatgen
|
|
212
214
|
robocrys==0.2.8
|
|
213
215
|
# via emmet-core
|
|
214
|
-
ruamel-yaml==0.17.
|
|
216
|
+
ruamel-yaml==0.17.32
|
|
215
217
|
# via
|
|
216
218
|
# pymatgen
|
|
217
219
|
# robocrys
|
|
@@ -221,7 +223,7 @@ s3transfer==0.6.1
|
|
|
221
223
|
# via boto3
|
|
222
224
|
scikit-learn==1.2.2
|
|
223
225
|
# via matminer
|
|
224
|
-
scipy==1.
|
|
226
|
+
scipy==1.11.0
|
|
225
227
|
# via
|
|
226
228
|
# pymatgen
|
|
227
229
|
# robocrys
|
|
@@ -14,9 +14,9 @@ bcrypt==4.0.1
|
|
|
14
14
|
# via paramiko
|
|
15
15
|
blinker==1.6.2
|
|
16
16
|
# via flask
|
|
17
|
-
boto3==1.26.
|
|
17
|
+
boto3==1.26.160
|
|
18
18
|
# via maggma
|
|
19
|
-
botocore==1.29.
|
|
19
|
+
botocore==1.29.160
|
|
20
20
|
# via
|
|
21
21
|
# boto3
|
|
22
22
|
# s3transfer
|
|
@@ -55,7 +55,7 @@ dnspython==2.3.0
|
|
|
55
55
|
# via
|
|
56
56
|
# maggma
|
|
57
57
|
# pymongo
|
|
58
|
-
emmet-core[all]==0.
|
|
58
|
+
emmet-core[all]==0.57.2
|
|
59
59
|
# via
|
|
60
60
|
# emmet-builders (setup.py)
|
|
61
61
|
# mp-api
|
|
@@ -63,7 +63,7 @@ exceptiongroup==1.1.1
|
|
|
63
63
|
# via
|
|
64
64
|
# anyio
|
|
65
65
|
# pytest
|
|
66
|
-
fastapi==0.
|
|
66
|
+
fastapi==0.98.0
|
|
67
67
|
# via maggma
|
|
68
68
|
filelock==3.12.2
|
|
69
69
|
# via virtualenv
|
|
@@ -73,13 +73,15 @@ flask==2.3.2
|
|
|
73
73
|
# via mongogrant
|
|
74
74
|
fonttools==4.40.0
|
|
75
75
|
# via matplotlib
|
|
76
|
+
frozendict==2.3.8
|
|
77
|
+
# via pymatgen
|
|
76
78
|
future==0.18.3
|
|
77
79
|
# via
|
|
78
80
|
# matminer
|
|
79
81
|
# uncertainties
|
|
80
82
|
ghp-import==2.1.0
|
|
81
83
|
# via mkdocs
|
|
82
|
-
griffe==0.29.
|
|
84
|
+
griffe==0.29.1
|
|
83
85
|
# via mkdocstrings-python
|
|
84
86
|
htmlmin2==0.1.13
|
|
85
87
|
# via mkdocs-minify-plugin
|
|
@@ -120,7 +122,7 @@ latexcodec==2.0.1
|
|
|
120
122
|
# via pybtex
|
|
121
123
|
livereload==2.6.3
|
|
122
124
|
# via emmet-builders (setup.py)
|
|
123
|
-
maggma==0.51.
|
|
125
|
+
maggma==0.51.9
|
|
124
126
|
# via emmet-builders (setup.py)
|
|
125
127
|
markdown==3.3.7
|
|
126
128
|
# via
|
|
@@ -193,13 +195,13 @@ msgpack==1.0.5
|
|
|
193
195
|
# via
|
|
194
196
|
# maggma
|
|
195
197
|
# mp-api
|
|
196
|
-
mypy==1.
|
|
198
|
+
mypy==1.4.1
|
|
197
199
|
# via emmet-builders (setup.py)
|
|
198
200
|
mypy-extensions==1.0.0
|
|
199
201
|
# via
|
|
200
202
|
# emmet-builders (setup.py)
|
|
201
203
|
# mypy
|
|
202
|
-
natsort==8.
|
|
204
|
+
natsort==8.4.0
|
|
203
205
|
# via mkdocs-awesome-pages-plugin
|
|
204
206
|
networkx==3.1
|
|
205
207
|
# via
|
|
@@ -207,7 +209,7 @@ networkx==3.1
|
|
|
207
209
|
# robocrys
|
|
208
210
|
nodeenv==1.8.0
|
|
209
211
|
# via pre-commit
|
|
210
|
-
numpy==1.
|
|
212
|
+
numpy==1.25.0
|
|
211
213
|
# via
|
|
212
214
|
# contourpy
|
|
213
215
|
# maggma
|
|
@@ -240,11 +242,11 @@ paramiko==3.2.0
|
|
|
240
242
|
# via sshtunnel
|
|
241
243
|
pillow==9.5.0
|
|
242
244
|
# via matplotlib
|
|
243
|
-
platformdirs==3.
|
|
245
|
+
platformdirs==3.8.0
|
|
244
246
|
# via virtualenv
|
|
245
247
|
plotly==5.15.0
|
|
246
248
|
# via pymatgen
|
|
247
|
-
pluggy==1.
|
|
249
|
+
pluggy==1.2.0
|
|
248
250
|
# via pytest
|
|
249
251
|
pre-commit==3.3.3
|
|
250
252
|
# via emmet-builders (setup.py)
|
|
@@ -275,7 +277,7 @@ pyflakes==3.0.1
|
|
|
275
277
|
# via flake8
|
|
276
278
|
pygments==2.15.1
|
|
277
279
|
# via mkdocs-material
|
|
278
|
-
pymatgen==2023.
|
|
280
|
+
pymatgen==2023.6.23
|
|
279
281
|
# via
|
|
280
282
|
# emmet-core
|
|
281
283
|
# matminer
|
|
@@ -291,18 +293,18 @@ pymdown-extensions==10.0.1
|
|
|
291
293
|
# via
|
|
292
294
|
# mkdocs-material
|
|
293
295
|
# mkdocstrings
|
|
294
|
-
pymongo==4.
|
|
296
|
+
pymongo==4.4.0
|
|
295
297
|
# via
|
|
296
298
|
# maggma
|
|
297
299
|
# matminer
|
|
298
300
|
# mongogrant
|
|
299
301
|
pynacl==1.5.0
|
|
300
302
|
# via paramiko
|
|
301
|
-
pyparsing==3.0
|
|
303
|
+
pyparsing==3.1.0
|
|
302
304
|
# via matplotlib
|
|
303
305
|
pyrsistent==0.19.3
|
|
304
306
|
# via jsonschema
|
|
305
|
-
pytest==7.
|
|
307
|
+
pytest==7.4.0
|
|
306
308
|
# via
|
|
307
309
|
# emmet-builders (setup.py)
|
|
308
310
|
# pytest-cov
|
|
@@ -337,7 +339,7 @@ requests==2.31.0
|
|
|
337
339
|
# pymatgen
|
|
338
340
|
robocrys==0.2.8
|
|
339
341
|
# via emmet-core
|
|
340
|
-
ruamel-yaml==0.17.
|
|
342
|
+
ruamel-yaml==0.17.32
|
|
341
343
|
# via
|
|
342
344
|
# pymatgen
|
|
343
345
|
# robocrys
|
|
@@ -347,7 +349,7 @@ s3transfer==0.6.1
|
|
|
347
349
|
# via boto3
|
|
348
350
|
scikit-learn==1.2.2
|
|
349
351
|
# via matminer
|
|
350
|
-
scipy==1.
|
|
352
|
+
scipy==1.11.0
|
|
351
353
|
# via
|
|
352
354
|
# pymatgen
|
|
353
355
|
# robocrys
|
|
@@ -402,7 +404,7 @@ tqdm==4.65.0
|
|
|
402
404
|
# pymatgen
|
|
403
405
|
types-requests==2.31.0.1
|
|
404
406
|
# via emmet-builders (setup.py)
|
|
405
|
-
types-setuptools==
|
|
407
|
+
types-setuptools==68.0.0.0
|
|
406
408
|
# via emmet-builders (setup.py)
|
|
407
409
|
types-urllib3==1.26.25.13
|
|
408
410
|
# via types-requests
|
|
@@ -421,7 +423,7 @@ urllib3==1.26.16
|
|
|
421
423
|
# via
|
|
422
424
|
# botocore
|
|
423
425
|
# requests
|
|
424
|
-
virtualenv==20.23.
|
|
426
|
+
virtualenv==20.23.1
|
|
425
427
|
# via pre-commit
|
|
426
428
|
watchdog==3.0.0
|
|
427
429
|
# via mkdocs
|
|
@@ -14,9 +14,9 @@ bcrypt==4.0.1
|
|
|
14
14
|
# via paramiko
|
|
15
15
|
blinker==1.6.2
|
|
16
16
|
# via flask
|
|
17
|
-
boto3==1.26.
|
|
17
|
+
boto3==1.26.160
|
|
18
18
|
# via maggma
|
|
19
|
-
botocore==1.29.
|
|
19
|
+
botocore==1.29.160
|
|
20
20
|
# via
|
|
21
21
|
# boto3
|
|
22
22
|
# s3transfer
|
|
@@ -42,16 +42,18 @@ dnspython==2.3.0
|
|
|
42
42
|
# via
|
|
43
43
|
# maggma
|
|
44
44
|
# pymongo
|
|
45
|
-
emmet-core[all]==0.
|
|
45
|
+
emmet-core[all]==0.57.2
|
|
46
46
|
# via
|
|
47
47
|
# emmet-builders (setup.py)
|
|
48
48
|
# mp-api
|
|
49
|
-
fastapi==0.
|
|
49
|
+
fastapi==0.98.0
|
|
50
50
|
# via maggma
|
|
51
51
|
flask==2.3.2
|
|
52
52
|
# via mongogrant
|
|
53
53
|
fonttools==4.40.0
|
|
54
54
|
# via matplotlib
|
|
55
|
+
frozendict==2.3.8
|
|
56
|
+
# via pymatgen
|
|
55
57
|
future==0.18.3
|
|
56
58
|
# via
|
|
57
59
|
# matminer
|
|
@@ -80,7 +82,7 @@ kiwisolver==1.4.4
|
|
|
80
82
|
# via matplotlib
|
|
81
83
|
latexcodec==2.0.1
|
|
82
84
|
# via pybtex
|
|
83
|
-
maggma==0.51.
|
|
85
|
+
maggma==0.51.9
|
|
84
86
|
# via emmet-builders (setup.py)
|
|
85
87
|
markupsafe==2.1.3
|
|
86
88
|
# via
|
|
@@ -116,7 +118,7 @@ networkx==3.1
|
|
|
116
118
|
# via
|
|
117
119
|
# pymatgen
|
|
118
120
|
# robocrys
|
|
119
|
-
numpy==1.
|
|
121
|
+
numpy==1.25.0
|
|
120
122
|
# via
|
|
121
123
|
# contourpy
|
|
122
124
|
# maggma
|
|
@@ -166,7 +168,7 @@ pydantic==1.10.9
|
|
|
166
168
|
# maggma
|
|
167
169
|
pydash==7.0.4
|
|
168
170
|
# via maggma
|
|
169
|
-
pymatgen==2023.
|
|
171
|
+
pymatgen==2023.6.23
|
|
170
172
|
# via
|
|
171
173
|
# emmet-core
|
|
172
174
|
# matminer
|
|
@@ -178,14 +180,14 @@ pymatgen-analysis-alloys==0.0.6
|
|
|
178
180
|
# via emmet-core
|
|
179
181
|
pymatgen-analysis-diffusion==2022.7.21
|
|
180
182
|
# via emmet-core
|
|
181
|
-
pymongo==4.
|
|
183
|
+
pymongo==4.4.0
|
|
182
184
|
# via
|
|
183
185
|
# maggma
|
|
184
186
|
# matminer
|
|
185
187
|
# mongogrant
|
|
186
188
|
pynacl==1.5.0
|
|
187
189
|
# via paramiko
|
|
188
|
-
pyparsing==3.0
|
|
190
|
+
pyparsing==3.1.0
|
|
189
191
|
# via matplotlib
|
|
190
192
|
pyrsistent==0.19.3
|
|
191
193
|
# via jsonschema
|
|
@@ -209,7 +211,7 @@ requests==2.31.0
|
|
|
209
211
|
# pymatgen
|
|
210
212
|
robocrys==0.2.8
|
|
211
213
|
# via emmet-core
|
|
212
|
-
ruamel-yaml==0.17.
|
|
214
|
+
ruamel-yaml==0.17.32
|
|
213
215
|
# via
|
|
214
216
|
# pymatgen
|
|
215
217
|
# robocrys
|
|
@@ -219,7 +221,7 @@ s3transfer==0.6.1
|
|
|
219
221
|
# via boto3
|
|
220
222
|
scikit-learn==1.2.2
|
|
221
223
|
# via matminer
|
|
222
|
-
scipy==1.
|
|
224
|
+
scipy==1.11.0
|
|
223
225
|
# via
|
|
224
226
|
# pymatgen
|
|
225
227
|
# robocrys
|