emmet-builders 0.57.2__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.2 → emmet-builders-0.58.0}/PKG-INFO +1 -1
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/electronic_structure.py +79 -16
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/utils.py +57 -1
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/PKG-INFO +1 -1
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/requires.txt +1 -1
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/deployment.txt +9 -7
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.10.txt +9 -7
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.10_extras.txt +12 -10
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.11.txt +9 -7
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.11_extras.txt +12 -10
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.8.txt +8 -6
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.8_extras.txt +11 -9
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.9.txt +9 -7
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.9_extras.txt +12 -10
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.10.txt +9 -7
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.10_extras.txt +12 -10
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.11.txt +9 -7
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.11_extras.txt +12 -10
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.8.txt +8 -6
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.8_extras.txt +11 -9
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.9.txt +9 -7
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.9_extras.txt +12 -10
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/setup.py +1 -1
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/abinit/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/abinit/phonon.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/abinit/sound_velocity.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/feff/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/feff/xas.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/absorption_spectrum.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/alloys.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/basic_descriptors.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/bonds.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/chemenv.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/corrected_entries.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/dielectric.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/elasticity.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/electrodes.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/magnetism.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/optimade.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/oxidation_states.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/piezoelectric.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/provenance.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/robocrys.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/similarity.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/substrates.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/summary.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/thermo.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/mobility/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/mobility/migration_graph.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/atomic.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/bonds.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/metal_binding.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/orbitals.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/redox.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/summary.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/thermo.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/vibration.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/qchem/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/qchem/molecules.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/settings.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/vasp/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/vasp/materials.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/vasp/task_validator.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/SOURCES.txt +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/dependency_links.txt +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/not-zip-safe +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/top_level.txt +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/setup.cfg +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/conftest.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/__init__.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_atomic.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_bonds.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_metal_binding.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_orbitals.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_redox.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_summary.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_thermo.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_vibration.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_absorption.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_basic_descriptors.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_chemenv.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_corrected_entries_thermo.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_dielectric.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_elasticity.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_electronic_structure.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_magnetism.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_materials.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_mobility.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_oxidation.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_piezoelectric.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_qchem.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_similarity.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_summary.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_utils.py +0 -0
- {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_vasp.py +0 -0
{emmet-builders-0.57.2 → 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.57.
|
|
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
|
|
@@ -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.57.
|
|
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
|
|
@@ -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
|
|
@@ -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.57.
|
|
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,6 +73,8 @@ 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
|
|
@@ -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,7 +195,7 @@ msgpack==1.0.5
|
|
|
193
195
|
# via
|
|
194
196
|
# maggma
|
|
195
197
|
# mp-api
|
|
196
|
-
mypy==1.4.
|
|
198
|
+
mypy==1.4.1
|
|
197
199
|
# via emmet-builders (setup.py)
|
|
198
200
|
mypy-extensions==1.0.0
|
|
199
201
|
# via
|
|
@@ -240,7 +242,7 @@ 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
|
|
@@ -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
|
|
@@ -302,7 +304,7 @@ 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
|
|
@@ -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
|
|
@@ -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.57.
|
|
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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -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,11 +55,11 @@ dnspython==2.3.0
|
|
|
55
55
|
# via
|
|
56
56
|
# maggma
|
|
57
57
|
# pymongo
|
|
58
|
-
emmet-core[all]==0.57.
|
|
58
|
+
emmet-core[all]==0.57.2
|
|
59
59
|
# via
|
|
60
60
|
# emmet-builders (setup.py)
|
|
61
61
|
# mp-api
|
|
62
|
-
fastapi==0.
|
|
62
|
+
fastapi==0.98.0
|
|
63
63
|
# via maggma
|
|
64
64
|
filelock==3.12.2
|
|
65
65
|
# via virtualenv
|
|
@@ -69,6 +69,8 @@ flask==2.3.2
|
|
|
69
69
|
# via mongogrant
|
|
70
70
|
fonttools==4.40.0
|
|
71
71
|
# via matplotlib
|
|
72
|
+
frozendict==2.3.8
|
|
73
|
+
# via pymatgen
|
|
72
74
|
future==0.18.3
|
|
73
75
|
# via
|
|
74
76
|
# matminer
|
|
@@ -116,7 +118,7 @@ latexcodec==2.0.1
|
|
|
116
118
|
# via pybtex
|
|
117
119
|
livereload==2.6.3
|
|
118
120
|
# via emmet-builders (setup.py)
|
|
119
|
-
maggma==0.51.
|
|
121
|
+
maggma==0.51.9
|
|
120
122
|
# via emmet-builders (setup.py)
|
|
121
123
|
markdown==3.3.7
|
|
122
124
|
# via
|
|
@@ -189,7 +191,7 @@ msgpack==1.0.5
|
|
|
189
191
|
# via
|
|
190
192
|
# maggma
|
|
191
193
|
# mp-api
|
|
192
|
-
mypy==1.4.
|
|
194
|
+
mypy==1.4.1
|
|
193
195
|
# via emmet-builders (setup.py)
|
|
194
196
|
mypy-extensions==1.0.0
|
|
195
197
|
# via
|
|
@@ -236,7 +238,7 @@ paramiko==3.2.0
|
|
|
236
238
|
# via sshtunnel
|
|
237
239
|
pillow==9.5.0
|
|
238
240
|
# via matplotlib
|
|
239
|
-
platformdirs==3.
|
|
241
|
+
platformdirs==3.8.0
|
|
240
242
|
# via virtualenv
|
|
241
243
|
plotly==5.15.0
|
|
242
244
|
# via pymatgen
|
|
@@ -271,7 +273,7 @@ pyflakes==3.0.1
|
|
|
271
273
|
# via flake8
|
|
272
274
|
pygments==2.15.1
|
|
273
275
|
# via mkdocs-material
|
|
274
|
-
pymatgen==2023.
|
|
276
|
+
pymatgen==2023.6.23
|
|
275
277
|
# via
|
|
276
278
|
# emmet-core
|
|
277
279
|
# matminer
|
|
@@ -298,7 +300,7 @@ pyparsing==3.1.0
|
|
|
298
300
|
# via matplotlib
|
|
299
301
|
pyrsistent==0.19.3
|
|
300
302
|
# via jsonschema
|
|
301
|
-
pytest==7.
|
|
303
|
+
pytest==7.4.0
|
|
302
304
|
# via
|
|
303
305
|
# emmet-builders (setup.py)
|
|
304
306
|
# pytest-cov
|
|
@@ -343,7 +345,7 @@ s3transfer==0.6.1
|
|
|
343
345
|
# via boto3
|
|
344
346
|
scikit-learn==1.2.2
|
|
345
347
|
# via matminer
|
|
346
|
-
scipy==1.
|
|
348
|
+
scipy==1.11.0
|
|
347
349
|
# via
|
|
348
350
|
# pymatgen
|
|
349
351
|
# 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
|
|
@@ -42,18 +42,20 @@ dnspython==2.3.0
|
|
|
42
42
|
# via
|
|
43
43
|
# maggma
|
|
44
44
|
# pymongo
|
|
45
|
-
emmet-core[all]==0.57.
|
|
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
|
|
@@ -88,7 +90,7 @@ kiwisolver==1.4.4
|
|
|
88
90
|
# via matplotlib
|
|
89
91
|
latexcodec==2.0.1
|
|
90
92
|
# via pybtex
|
|
91
|
-
maggma==0.51.
|
|
93
|
+
maggma==0.51.9
|
|
92
94
|
# via emmet-builders (setup.py)
|
|
93
95
|
markupsafe==2.1.3
|
|
94
96
|
# via
|
|
@@ -176,7 +178,7 @@ pydantic==1.10.9
|
|
|
176
178
|
# maggma
|
|
177
179
|
pydash==7.0.4
|
|
178
180
|
# via maggma
|
|
179
|
-
pymatgen==2023.
|
|
181
|
+
pymatgen==2023.6.23
|
|
180
182
|
# via
|
|
181
183
|
# emmet-core
|
|
182
184
|
# matminer
|