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.

Files changed (99) hide show
  1. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/PKG-INFO +1 -1
  2. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/electronic_structure.py +79 -16
  3. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/utils.py +57 -1
  4. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/PKG-INFO +1 -1
  5. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/requires.txt +1 -1
  6. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/deployment.txt +9 -7
  7. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.10.txt +9 -7
  8. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.10_extras.txt +12 -10
  9. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.11.txt +9 -7
  10. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.11_extras.txt +12 -10
  11. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.8.txt +8 -6
  12. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.8_extras.txt +11 -9
  13. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.9.txt +9 -7
  14. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/macos-latest_py3.9_extras.txt +12 -10
  15. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.10.txt +9 -7
  16. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.10_extras.txt +12 -10
  17. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.11.txt +9 -7
  18. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.11_extras.txt +12 -10
  19. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.8.txt +8 -6
  20. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.8_extras.txt +11 -9
  21. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.9.txt +9 -7
  22. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/requirements/ubuntu-latest_py3.9_extras.txt +12 -10
  23. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/setup.py +1 -1
  24. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/__init__.py +0 -0
  25. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/abinit/__init__.py +0 -0
  26. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/abinit/phonon.py +0 -0
  27. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/abinit/sound_velocity.py +0 -0
  28. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/feff/__init__.py +0 -0
  29. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/feff/xas.py +0 -0
  30. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/__init__.py +0 -0
  31. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/absorption_spectrum.py +0 -0
  32. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/alloys.py +0 -0
  33. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/basic_descriptors.py +0 -0
  34. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/bonds.py +0 -0
  35. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/chemenv.py +0 -0
  36. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/corrected_entries.py +0 -0
  37. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/dielectric.py +0 -0
  38. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/elasticity.py +0 -0
  39. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/electrodes.py +0 -0
  40. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/magnetism.py +0 -0
  41. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/optimade.py +0 -0
  42. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/oxidation_states.py +0 -0
  43. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/piezoelectric.py +0 -0
  44. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/provenance.py +0 -0
  45. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/robocrys.py +0 -0
  46. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/similarity.py +0 -0
  47. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/substrates.py +0 -0
  48. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/summary.py +0 -0
  49. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/materials/thermo.py +0 -0
  50. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/mobility/__init__.py +0 -0
  51. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/mobility/migration_graph.py +0 -0
  52. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/__init__.py +0 -0
  53. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/atomic.py +0 -0
  54. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/bonds.py +0 -0
  55. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/metal_binding.py +0 -0
  56. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/orbitals.py +0 -0
  57. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/redox.py +0 -0
  58. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/summary.py +0 -0
  59. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/thermo.py +0 -0
  60. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/molecules/vibration.py +0 -0
  61. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/qchem/__init__.py +0 -0
  62. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/qchem/molecules.py +0 -0
  63. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/settings.py +0 -0
  64. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/vasp/__init__.py +0 -0
  65. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/vasp/materials.py +0 -0
  66. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet/builders/vasp/task_validator.py +0 -0
  67. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/SOURCES.txt +0 -0
  68. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/dependency_links.txt +0 -0
  69. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/not-zip-safe +0 -0
  70. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/emmet_builders.egg-info/top_level.txt +0 -0
  71. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/setup.cfg +0 -0
  72. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/__init__.py +0 -0
  73. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/conftest.py +0 -0
  74. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/__init__.py +0 -0
  75. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_atomic.py +0 -0
  76. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_bonds.py +0 -0
  77. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_metal_binding.py +0 -0
  78. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_orbitals.py +0 -0
  79. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_redox.py +0 -0
  80. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_summary.py +0 -0
  81. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_thermo.py +0 -0
  82. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/molecules/test_vibration.py +0 -0
  83. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_absorption.py +0 -0
  84. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_basic_descriptors.py +0 -0
  85. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_chemenv.py +0 -0
  86. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_corrected_entries_thermo.py +0 -0
  87. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_dielectric.py +0 -0
  88. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_elasticity.py +0 -0
  89. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_electronic_structure.py +0 -0
  90. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_magnetism.py +0 -0
  91. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_materials.py +0 -0
  92. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_mobility.py +0 -0
  93. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_oxidation.py +0 -0
  94. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_piezoelectric.py +0 -0
  95. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_qchem.py +0 -0
  96. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_similarity.py +0 -0
  97. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_summary.py +0 -0
  98. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_utils.py +0 -0
  99. {emmet-builders-0.57.2 → emmet-builders-0.58.0}/tests/test_vasp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: emmet-builders
3
- Version: 0.57.2
3
+ Version: 0.58.0
4
4
  Summary: Builders for the Emmet Library
5
5
  Home-page: https://github.com/materialsproject/emmet
6
6
  Author: The Materials Project
@@ -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
- dos_fs (Store): Store of DOS
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=[tasks, materials, bandstructure_fs, dos_fs],
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
- bs_dict = self.bandstructure_fs.query_one(
401
- {self.bandstructure_fs.key: str(task_id)}
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
- bs_type = self._obtain_path_type(
408
- bs.labels_dict, bs.structure
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
- bs_obj = self.bandstructure_fs.query_one(
570
- criteria={"fs_id": sorted_bs_data[0]["fs_id"]}
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
- dos_obj = self.dos_fs.query_one(
606
- criteria={"fs_id": sorted_dos_data[0]["fs_id"]}
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):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: emmet-builders
3
- Version: 0.57.2
3
+ Version: 0.58.0
4
4
  Summary: Builders for the Emmet Library
5
5
  Home-page: https://github.com/materialsproject/emmet
6
6
  Author: The Materials Project
@@ -1,5 +1,5 @@
1
1
  emmet-core[all]
2
- maggma>=0.49.17
2
+ maggma>=0.51.9
3
3
  matminer>=0.7.3
4
4
 
5
5
  [docs]
@@ -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.158
17
+ boto3==1.26.160
18
18
  # via maggma
19
- botocore==1.29.158
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.1
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.97.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.8
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.5.31
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.10.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.158
17
+ boto3==1.26.160
18
18
  # via maggma
19
- botocore==1.29.158
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.1
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.97.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.8
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.5.31
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.10.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.158
17
+ boto3==1.26.160
18
18
  # via maggma
19
- botocore==1.29.158
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.1
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.97.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.8
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.0
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.7.0
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.5.31
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.3.2
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.10.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.158
17
+ boto3==1.26.160
18
18
  # via maggma
19
- botocore==1.29.158
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.1
45
+ emmet-core[all]==0.57.2
46
46
  # via
47
47
  # emmet-builders (setup.py)
48
48
  # mp-api
49
- fastapi==0.97.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.8
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.5.31
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.10.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.158
17
+ boto3==1.26.160
18
18
  # via maggma
19
- botocore==1.29.158
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.1
58
+ emmet-core[all]==0.57.2
59
59
  # via
60
60
  # emmet-builders (setup.py)
61
61
  # mp-api
62
- fastapi==0.97.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.8
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.0
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.7.0
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.5.31
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.3.2
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.10.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.158
17
+ boto3==1.26.160
18
18
  # via maggma
19
- botocore==1.29.158
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.1
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.97.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.8
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.5.31
181
+ pymatgen==2023.6.23
180
182
  # via
181
183
  # emmet-core
182
184
  # matminer