emmet-core 0.87.0.dev14__tar.gz → 0.87.0.dev16__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.
Files changed (261) hide show
  1. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/PKG-INFO +1 -1
  2. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/connectors/icsd/client.py +6 -2
  3. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/connectors/icsd/schemas.py +0 -3
  4. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/provenance.py +6 -4
  5. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/thermo.py +2 -4
  6. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/phase_diagram_adapter.py +16 -31
  7. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/structure_graph_adapter.py +4 -12
  8. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/calculation.py +14 -14
  9. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet_core.egg-info/PKG-INFO +1 -1
  10. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/dev_scripts/gen_api_field_test.py +0 -0
  11. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/dev_scripts/generate_enums.py +0 -0
  12. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/dev_scripts/generate_identifier_exclude_list.py +0 -0
  13. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/__init__.py +0 -0
  14. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/_forbidden_alpha_id.py +0 -0
  15. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/_general_store.py +0 -0
  16. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/_messages.py +0 -0
  17. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/_user_settings.py +0 -0
  18. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/absorption.py +0 -0
  19. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/alloys.py +0 -0
  20. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/arrow.py +0 -0
  21. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/band_theory.py +0 -0
  22. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/base.py +0 -0
  23. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/bonds.py +0 -0
  24. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/charge_density.py +0 -0
  25. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/chemenv.py +0 -0
  26. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/connectors/__init__.py +0 -0
  27. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/connectors/analysis.py +0 -0
  28. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/connectors/icsd/__init__.py +0 -0
  29. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/connectors/icsd/enums.py +0 -0
  30. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/connectors/icsd/settings.py +0 -0
  31. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/corrected_entries.py +0 -0
  32. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/defect.py +0 -0
  33. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/disorder.py +0 -0
  34. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/dois.py +0 -0
  35. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/elasticity.py +0 -0
  36. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/elasticity_legacy.py +0 -0
  37. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/electrode.py +0 -0
  38. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/electronic_structure.py +0 -0
  39. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/eos.py +0 -0
  40. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/__init__.py +0 -0
  41. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/featurizers.py +0 -0
  42. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/__init__.py +0 -0
  43. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/adapter.py +0 -0
  44. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/__init__.py +0 -0
  45. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/component.py +0 -0
  46. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/condenser.py +0 -0
  47. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/fingerprint.py +0 -0
  48. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/formula_aliases.json.gz +0 -0
  49. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/mineral.py +0 -0
  50. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/mineral_db.json.gz +0 -0
  51. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/molecule.py +0 -0
  52. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/molecule_db.json.gz +0 -0
  53. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/condense/site.py +0 -0
  54. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/describe/__init__.py +0 -0
  55. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/describe/adapter.py +0 -0
  56. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/describe/describer.py +0 -0
  57. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/featurization/robocrys/util.py +0 -0
  58. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/feff/__init__.py +0 -0
  59. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/feff/task.py +0 -0
  60. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/fermi.py +0 -0
  61. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/find_structure.py +0 -0
  62. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/formula_autocomplete.py +0 -0
  63. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/grain_boundary.py +0 -0
  64. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/magnetism.py +0 -0
  65. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/material.py +0 -0
  66. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/material_property.py +0 -0
  67. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/math.py +0 -0
  68. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/ml.py +0 -0
  69. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/mobility/__init__.py +0 -0
  70. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/mobility/migrationgraph.py +0 -0
  71. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/__init__.py +0 -0
  72. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/atomic.py +0 -0
  73. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/bonds.py +0 -0
  74. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/electric.py +0 -0
  75. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/metal_binding.py +0 -0
  76. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/molecule_property.py +0 -0
  77. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/orbitals.py +0 -0
  78. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/redox.py +0 -0
  79. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/summary.py +0 -0
  80. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/thermo.py +0 -0
  81. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/trajectory.py +0 -0
  82. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules/vibration.py +0 -0
  83. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/molecules_jcesr.py +0 -0
  84. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/mpcomplete.py +0 -0
  85. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/mpid.py +0 -0
  86. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/mpid_ext.py +0 -0
  87. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/neb.py +0 -0
  88. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/openff/__init__.py +0 -0
  89. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/openff/tasks.py +0 -0
  90. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/openmm/__init__.py +0 -0
  91. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/openmm/calculations.py +0 -0
  92. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/openmm/tasks.py +0 -0
  93. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/optimade.py +0 -0
  94. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/oxidation_states.py +0 -0
  95. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/phonon.py +0 -0
  96. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/polar.py +0 -0
  97. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/py.typed +0 -0
  98. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qc_tasks.py +0 -0
  99. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/__init__.py +0 -0
  100. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/calc_types/__init__.py +0 -0
  101. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/calc_types/calc_types.py +0 -0
  102. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/calc_types/calc_types.yaml +0 -0
  103. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/calc_types/em_utils.py +0 -0
  104. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/calc_types/enums.py +0 -0
  105. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/calc_types/utils.py +0 -0
  106. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/calculation.py +0 -0
  107. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/molecule.py +0 -0
  108. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/qchem/task.py +0 -0
  109. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/robocrys.py +0 -0
  110. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/settings.py +0 -0
  111. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/similarity.py +0 -0
  112. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/spectrum.py +0 -0
  113. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/structure.py +0 -0
  114. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/structure_group.py +0 -0
  115. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/substrates.py +0 -0
  116. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/summary.py +0 -0
  117. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/surface_properties.py +0 -0
  118. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/symmetry.py +0 -0
  119. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/synthesis/__init__.py +0 -0
  120. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/synthesis/core.py +0 -0
  121. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/synthesis/materials.py +0 -0
  122. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/synthesis/operations.py +0 -0
  123. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/synthesis/reaction.py +0 -0
  124. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/task.py +0 -0
  125. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/tasks.py +0 -0
  126. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/testing_utils.py +0 -0
  127. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/trajectory.py +0 -0
  128. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/__init__.py +0 -0
  129. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/electronic_structure.py +0 -0
  130. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/enums.py +0 -0
  131. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/__init__.py +0 -0
  132. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/alloy_adapter.py +0 -0
  133. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/bader.py +0 -0
  134. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/balanced_reaction_adapter.py +0 -0
  135. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/bandstructure_symm_line_adapter.py +0 -0
  136. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/compatibility_adapter.py +0 -0
  137. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/composition_adapter.py +0 -0
  138. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/computed_entries_adapter.py +0 -0
  139. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/defect_adapter.py +0 -0
  140. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/diffraction_pattern_adapter.py +0 -0
  141. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/dos_adapter.py +0 -0
  142. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/electrode_adapter.py +0 -0
  143. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/element_adapter.py +0 -0
  144. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/grain_boundary_adapter.py +0 -0
  145. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/ir_dielectric_tensor_adapter.py +0 -0
  146. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/kpoint_adapter.py +0 -0
  147. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/kpoints_adapter.py +0 -0
  148. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/lattice_adapter.py +0 -0
  149. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/mixing_scheme_adapter.py +0 -0
  150. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/outcar_adapter.py +0 -0
  151. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/phonon_adapter.py +0 -0
  152. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/poscar_adapter.py +0 -0
  153. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/properties.py +0 -0
  154. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/sites_adapter.py +0 -0
  155. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/species_adapter.py +0 -0
  156. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/structure_adapter.py +0 -0
  157. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/structure_matcher_adapter.py +0 -0
  158. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/trajectory_adapter.py +0 -0
  159. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/pymatgen_types/xas_adapter.py +0 -0
  160. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/types/typing.py +0 -0
  161. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/utils.py +0 -0
  162. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/__init__.py +0 -0
  163. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/calc_types/__init__.py +0 -0
  164. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/calc_types/calc_types.yaml +0 -0
  165. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/calc_types/enums.py +0 -0
  166. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/calc_types/utils.py +0 -0
  167. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/material.py +0 -0
  168. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/models.py +0 -0
  169. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/task_valid.py +0 -0
  170. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/utils.py +0 -0
  171. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/validation.py +0 -0
  172. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/vasp/validation_legacy.py +0 -0
  173. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/xas.py +0 -0
  174. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet/core/xrd.py +0 -0
  175. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet_core.egg-info/SOURCES.txt +0 -0
  176. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet_core.egg-info/dependency_links.txt +0 -0
  177. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet_core.egg-info/requires.txt +0 -0
  178. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/emmet_core.egg-info/top_level.txt +0 -0
  179. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/pyproject.toml +0 -0
  180. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/requirements/deployment.txt +0 -0
  181. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/requirements/ubuntu-latest_py3.11.txt +0 -0
  182. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/requirements/ubuntu-latest_py3.11_extras.txt +0 -0
  183. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/requirements/ubuntu-latest_py3.12.txt +0 -0
  184. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/requirements/ubuntu-latest_py3.12_extras.txt +0 -0
  185. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/requirements/ubuntu-latest_py3.13.txt +0 -0
  186. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/requirements/ubuntu-latest_py3.13_extras.txt +0 -0
  187. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/setup.cfg +0 -0
  188. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/__init__.py +0 -0
  189. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/conftest.py +0 -0
  190. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/conftest_qchem.py +0 -0
  191. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/__init__.py +0 -0
  192. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/__init__.py +0 -0
  193. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/condense/test_component.py +0 -0
  194. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/condense/test_fingerprint.py +0 -0
  195. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/condense/test_mineral.py +0 -0
  196. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/condense/test_molecule.py +0 -0
  197. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/condense/test_site.py +0 -0
  198. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/condense/test_structure.py +0 -0
  199. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/conftest.py +0 -0
  200. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/describe/test_description.py +0 -0
  201. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/describe/test_description_adapter.py +0 -0
  202. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/test_adapter.py +0 -0
  203. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/robocrys/test_util.py +0 -0
  204. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/featurization/test_featurizers.py +0 -0
  205. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/mobility/test_migrationgraph.py +0 -0
  206. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/__init__.py +0 -0
  207. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_atomic.py +0 -0
  208. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_bonds.py +0 -0
  209. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_electric.py +0 -0
  210. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_metal_binding.py +0 -0
  211. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_mol_thermo.py +0 -0
  212. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_orbitals.py +0 -0
  213. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_redox.py +0 -0
  214. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_summary.py +0 -0
  215. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_trajectory.py +0 -0
  216. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/molecules/test_vibration.py +0 -0
  217. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/openmm_md/__init__.py +0 -0
  218. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/openmm_md/test_tasks.py +0 -0
  219. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/qchem/__init__.py +0 -0
  220. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/qchem/test_calc_types.py +0 -0
  221. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/qchem/test_molecules.py +0 -0
  222. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/qchem/test_qchem.py +0 -0
  223. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_absorption.py +0 -0
  224. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_arrow.py +0 -0
  225. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_band_theory.py +0 -0
  226. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_calculation.py +0 -0
  227. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_chemenv.py +0 -0
  228. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_defects.py +0 -0
  229. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_elasticity.py +0 -0
  230. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_electrodes.py +0 -0
  231. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_electronic_structure.py +0 -0
  232. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_magnetism.py +0 -0
  233. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_ml.py +0 -0
  234. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_model_fields.py +0 -0
  235. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_molecule_metadata.py +0 -0
  236. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_mpid.py +0 -0
  237. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_mpid_ext.py +0 -0
  238. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_neb.py +0 -0
  239. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_optimade.py +0 -0
  240. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_oxidation_states.py +0 -0
  241. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_phonon.py +0 -0
  242. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_polar.py +0 -0
  243. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_provenance.py +0 -0
  244. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_qc_task.py +0 -0
  245. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_robocrys.py +0 -0
  246. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_settings.py +0 -0
  247. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_similarity.py +0 -0
  248. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_structure_group.py +0 -0
  249. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_structure_metadata.py +0 -0
  250. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_task.py +0 -0
  251. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_thermo.py +0 -0
  252. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_trajectory.py +0 -0
  253. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_utils.py +0 -0
  254. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_xas.py +0 -0
  255. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/test_xrd.py +0 -0
  256. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/types/test_enums.py +0 -0
  257. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/types/test_typing.py +0 -0
  258. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/vasp/test_calc_types.py +0 -0
  259. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/vasp/test_materials.py +0 -0
  260. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/vasp/test_utils.py +0 -0
  261. {emmet_core-0.87.0.dev14 → emmet_core-0.87.0.dev16}/tests/vasp/test_vasp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: emmet-core
3
- Version: 0.87.0.dev14
3
+ Version: 0.87.0.dev16
4
4
  Summary: Core Emmet Library
5
5
  Author-email: The Materials Project <feedback@materialsproject.org>
6
6
  License-Expression: BSD-3-Clause-LBNL
@@ -89,12 +89,12 @@ class IcsdClient(BaseModel):
89
89
  if response.status_code == 200:
90
90
  self._auth_token = response.headers["ICSD-Auth-Token"]
91
91
  if self._auth_token is None:
92
- logger.warning(
92
+ raise ValueError(
93
93
  f"{self.__module__}.{self.__class__.__name__} "
94
94
  f"failed to fetch auth token: {response.content}"
95
95
  )
96
96
  else:
97
- logger.warning(
97
+ raise ValueError(
98
98
  f"{self.__module__}.{self.__class__.__name__} "
99
99
  "failed to fetch auth token with status code "
100
100
  f"{response.status_code}: {response.content}"
@@ -248,6 +248,10 @@ class IcsdClient(BaseModel):
248
248
  for row in csv_data[1:]
249
249
  ]
250
250
  else:
251
+ if "Authentication not successful" in response.content:
252
+ raise ValueError(
253
+ "Failed to authenticate ICSD client. Please check your credentials"
254
+ )
251
255
  logger.warning(
252
256
  f"{self.__module__}.{self.__class__.__name__} "
253
257
  "csv search failed with status code "
@@ -148,7 +148,4 @@ class IcsdPropertyDoc(BaseModel):
148
148
  config["cif"]
149
149
  )
150
150
 
151
- if not config.get("cif_parsing_errors"):
152
- config.pop("cif_parsing_errors")
153
-
154
151
  return config
@@ -30,7 +30,7 @@ class Database(ValueEnum):
30
30
  """
31
31
 
32
32
  ICSD = "icsd"
33
- Pauling_Files = "pf"
33
+ Pauling_Files = "pauling"
34
34
  COD = "cod"
35
35
 
36
36
 
@@ -51,8 +51,8 @@ def _remove_dupe_authors(authors: list[dict[str, Any] | Author]):
51
51
 
52
52
 
53
53
  def _migrate_legacy_history_data(
54
- config: list[dict[str, Any]] | list[History],
55
- ) -> list[History]:
54
+ config: list[dict[str, Any]] | list[History] | None,
55
+ ) -> list[History | None]:
56
56
  """Migrate legacy provenance and SNL `history` data as a classmethod.
57
57
 
58
58
  Parameters
@@ -63,6 +63,8 @@ def _migrate_legacy_history_data(
63
63
  -----------
64
64
  list of History objects.
65
65
  """
66
+ if not config:
67
+ return []
66
68
 
67
69
  top_level_history = [
68
70
  h.model_dump() if isinstance(h, History) else h for h in config
@@ -250,7 +252,7 @@ class History(BaseModel):
250
252
 
251
253
 
252
254
  HistoryType = Annotated[
253
- list[History] | None,
255
+ list[History | None],
254
256
  BeforeValidator(_migrate_legacy_history_data),
255
257
  ]
256
258
 
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  from collections import defaultdict
6
6
  from typing import Annotated
7
7
 
8
- from pydantic import BaseModel, BeforeValidator, Field, PlainSerializer
8
+ from pydantic import BaseModel, BeforeValidator, Field
9
9
  from pymatgen.analysis.phase_diagram import PhaseDiagram
10
10
  from pymatgen.entries.computed_entries import ComputedEntry, ComputedStructureEntry
11
11
 
@@ -42,7 +42,6 @@ class DecompositionProduct(BaseModel):
42
42
  )
43
43
 
44
44
 
45
- @type_override({"thermo_type": ThermoType, "thermo_id": str})
46
45
  class ThermoDoc(PropertyDoc):
47
46
  """
48
47
  A thermo entry document
@@ -60,7 +59,6 @@ class ThermoDoc(PropertyDoc):
60
59
  Field(
61
60
  description="Unique document ID which is composed of the Material ID and thermo data type.",
62
61
  ),
63
- PlainSerializer(str),
64
62
  BeforeValidator(ThermoID._deserialize),
65
63
  ]
66
64
 
@@ -187,7 +185,7 @@ class ThermoDoc(PropertyDoc):
187
185
  builder_meta = EmmetMeta(license=blessed_entry.data.get("license"))
188
186
 
189
187
  d = {
190
- "thermo_id": "{}_{}".format(material_id, str(thermo_type)),
188
+ "thermo_id": ThermoID(identifier=material_id, suffix=thermo_type),
191
189
  "material_id": material_id,
192
190
  "thermo_type": thermo_type,
193
191
  "uncorrected_energy_per_atom": blessed_entry.uncorrected_energy
@@ -1,13 +1,15 @@
1
1
  from collections.abc import Callable
2
2
  from enum import Enum, auto
3
+ from itertools import chain
3
4
  from typing import Annotated, Any, TypeVar, ValuesView
4
5
 
5
6
  import orjson
6
- from pydantic import BeforeValidator, WrapSerializer
7
+ from pydantic import BeforeValidator, TypeAdapter, WrapSerializer
7
8
  from pymatgen.analysis.phase_diagram import PhaseDiagram
8
9
  from typing_extensions import TypedDict
9
10
 
10
11
  from emmet.core.types.pymatgen_types.computed_entries_adapter import (
12
+ TypedCEDataDict,
11
13
  TypedComputedStructureEntryDict,
12
14
  )
13
15
 
@@ -29,14 +31,12 @@ TypedSimplexDict = TypedDict(
29
31
  TypedComputedDataDict = TypedDict(
30
32
  "TypedComputedDataDict",
31
33
  {
32
- "dim": int,
33
- # "el_refs": list[[str, ComputedStructureEntry]],
34
+ # "el_refs": list[[str, int]],
34
35
  "el_refs_elements": list[str],
35
- "el_refs_entries": list[TypedComputedStructureEntryDict],
36
+ "el_refs_entries": list[int],
36
37
  "facets": list[list[int]],
37
38
  "qhull_data": list[list[float]],
38
- "qhull_entries": list[TypedComputedStructureEntryDict],
39
- "simplexes": list[TypedSimplexDict],
39
+ "qhull_entries": list[int],
40
40
  "all_entries": list[TypedComputedStructureEntryDict],
41
41
  },
42
42
  )
@@ -46,8 +46,7 @@ TypedPhaseDiagramDict = TypedDict(
46
46
  {
47
47
  "@module": str,
48
48
  "@class": str,
49
- "all_entries": list[TypedComputedStructureEntryDict],
50
- "elements": list[TypedMSONableElementDict],
49
+ "elements": list[str],
51
50
  "computed_data": TypedComputedDataDict,
52
51
  },
53
52
  )
@@ -63,9 +62,7 @@ def entries_list_serde(entries_list: ValuesView | list[dict], serde_fn: Callable
63
62
 
64
63
 
65
64
  def phase_diagram_serde(d: dict, mode: Mode, serde_fn: Callable):
66
- entries_list_serde(d["all_entries"], serde_fn)
67
- for key in ["all_entries", "qhull_entries"]:
68
- entries_list_serde(d["computed_data"][key], serde_fn)
65
+ entries_list_serde(d["computed_data"]["all_entries"], serde_fn)
69
66
 
70
67
  match mode:
71
68
  case Mode.SHRED:
@@ -73,11 +70,9 @@ def phase_diagram_serde(d: dict, mode: Mode, serde_fn: Callable):
73
70
 
74
71
  elements = []
75
72
  el_refs_entries = []
76
- for element, entry in el_ref_pairs:
73
+ for element, entry_idx in el_ref_pairs:
77
74
  elements.append(str(element))
78
- el_refs_entries.append(entry.as_dict())
79
-
80
- entries_list_serde(el_refs_entries, serde_fn)
75
+ el_refs_entries.append(entry_idx)
81
76
 
82
77
  d["computed_data"]["el_refs_elements"] = elements
83
78
  d["computed_data"]["el_refs_entries"] = el_refs_entries
@@ -86,29 +81,19 @@ def phase_diagram_serde(d: dict, mode: Mode, serde_fn: Callable):
86
81
  elements = d["computed_data"].pop("el_refs_elements")
87
82
  el_refs_entries = d["computed_data"].pop("el_refs_entries")
88
83
 
89
- entries_list_serde(el_refs_entries, serde_fn)
90
-
91
84
  d["computed_data"]["el_refs"] = [
92
85
  (i, j) for i, j in zip(elements, el_refs_entries)
93
86
  ]
94
87
 
95
88
 
96
89
  def phase_diagram_serializer(phase_diagram, nxt, info) -> dict[str, Any]:
97
- default_serialized_object = nxt(phase_diagram.as_dict(), info)
90
+ for entry in chain(
91
+ phase_diagram.computed_data["qhull_entries"],
92
+ phase_diagram.computed_data["all_entries"],
93
+ ):
94
+ entry.data = TypeAdapter(TypedCEDataDict).dump_python(entry.data)
98
95
 
99
- for key in ["all_entries", "qhull_entries", "simplexes"]:
100
- default_serialized_object["computed_data"][key] = [
101
- entry.as_dict() for entry in default_serialized_object["computed_data"][key]
102
- ]
103
-
104
- # ndarray -> list[list[int]]
105
- for simplex in default_serialized_object["computed_data"]["simplexes"]:
106
- simplex["coords"] = simplex["coords"].tolist()
107
-
108
- # ndarray -> list[list[float]]
109
- default_serialized_object["computed_data"]["qhull_data"] = (
110
- default_serialized_object["computed_data"]["qhull_data"].tolist()
111
- )
96
+ default_serialized_object = nxt(phase_diagram.as_dict(), info)
112
97
 
113
98
  format = info.context.get("format") if info.context else None
114
99
  if format == "arrow":
@@ -1,6 +1,6 @@
1
- from typing import Annotated, TypeVar, NotRequired
1
+ from typing import Annotated, NotRequired, TypeVar
2
2
 
3
- from pydantic import BeforeValidator, WrapSerializer, PlainSerializer
3
+ from pydantic import BeforeValidator, WrapSerializer
4
4
  from pymatgen.analysis.graphs import MoleculeGraph, StructureGraph
5
5
  from typing_extensions import TypedDict
6
6
 
@@ -17,15 +17,7 @@ class GraphDescriptorDict(TypedDict):
17
17
  edge_weight_units: NotRequired[str]
18
18
 
19
19
 
20
- GraphDescriptors = Annotated[
21
- GraphDescriptorDict,
22
- BeforeValidator(
23
- lambda x: GraphDescriptorDict(
24
- **({row[0]: row[1] for row in x} if isinstance(x, list) else x)
25
- )
26
- ),
27
- PlainSerializer(lambda x: list(x.items()) if isinstance(x, dict) else x),
28
- ]
20
+ GraphDescriptors = tuple[str, str]
29
21
 
30
22
 
31
23
  class TypedNodeDict(TypedDict):
@@ -42,7 +34,7 @@ class TypedAdjacencyDict(TypedDict):
42
34
  class TypedGraphDict(TypedDict):
43
35
  directed: bool
44
36
  multigraph: bool
45
- graph: GraphDescriptors
37
+ graph: list[GraphDescriptors]
46
38
  nodes: list[TypedNodeDict]
47
39
  adjacency: list[list[TypedAdjacencyDict]]
48
40
 
@@ -2,24 +2,18 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from copy import deepcopy
6
- from functools import cached_property
7
5
  import logging
8
6
  import os
7
+ from copy import deepcopy
9
8
  from datetime import datetime
9
+ from functools import cached_property
10
10
  from pathlib import Path
11
- from typing import TYPE_CHECKING, Any, Annotated, Type
11
+ from typing import TYPE_CHECKING, Annotated, Any, Type
12
12
 
13
13
  import numpy as np
14
14
  import orjson
15
15
  from monty.io import zopen
16
- from pydantic import (
17
- BaseModel,
18
- ConfigDict,
19
- Field,
20
- model_validator,
21
- BeforeValidator,
22
- )
16
+ from pydantic import BaseModel, BeforeValidator, ConfigDict, Field, model_validator
23
17
  from pymatgen.command_line.bader_caller import bader_analysis_from_path
24
18
  from pymatgen.command_line.chargemol_caller import ChargemolAnalysis
25
19
  from pymatgen.core.structure import Structure
@@ -32,8 +26,8 @@ from typing_extensions import NotRequired, TypedDict
32
26
 
33
27
  from emmet.core.band_theory import ElectronicBS, ElectronicDos
34
28
  from emmet.core.math import ListMatrix3D, Matrix3D, Vector3D
29
+ from emmet.core.settings import EmmetSettings
35
30
  from emmet.core.trajectory import RelaxTrajectory, Trajectory
36
- from emmet.core.vasp.models import ElectronicStep, ChgcarLike
37
31
  from emmet.core.types.enums import StoreTrajectoryOption, TaskState, VaspObject
38
32
  from emmet.core.types.pymatgen_types.bader import BaderAnalysis
39
33
  from emmet.core.types.pymatgen_types.kpoints_adapter import KpointsType
@@ -50,15 +44,14 @@ from emmet.core.vasp.calc_types import (
50
44
  run_type,
51
45
  task_type,
52
46
  )
53
-
54
- from emmet.core.settings import EmmetSettings
47
+ from emmet.core.vasp.models import ChgcarLike, ElectronicStep
55
48
 
56
49
  SETTINGS = EmmetSettings()
57
50
 
58
51
  if TYPE_CHECKING:
59
- from typing_extensions import Self
60
52
  from pymatgen.electronic_structure.bandstructure import BandStructure
61
53
  from pymatgen.electronic_structure.dos import CompleteDos
54
+ from typing_extensions import Self
62
55
 
63
56
 
64
57
  logger = logging.getLogger(__name__)
@@ -485,6 +478,13 @@ class FrequencyDependentDielectric(BaseModel):
485
478
  "constant are given",
486
479
  )
487
480
 
481
+ @model_validator(mode="before")
482
+ def migrate_legacy_fields(cls, data: Any) -> Any:
483
+ if "imag" in data:
484
+ data["imaginary"] = data["imag"]
485
+
486
+ return data
487
+
488
488
  @classmethod
489
489
  def from_vasprun(cls, vasprun: Vasprun) -> Self:
490
490
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: emmet-core
3
- Version: 0.87.0.dev14
3
+ Version: 0.87.0.dev16
4
4
  Summary: Core Emmet Library
5
5
  Author-email: The Materials Project <feedback@materialsproject.org>
6
6
  License-Expression: BSD-3-Clause-LBNL