From 7cd9b9c1e24510bb2ad592fc544505996b7ddc56 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 20 Mar 2024 11:45:20 -0700 Subject: [PATCH 01/24] Refactor to use only TaskDoc and not TaskDocument, many other small changes --- .../emmet/builders/vasp/materials.py | 8 +- .../emmet/builders/vasp/task_validator.py | 6 +- emmet-cli/emmet/cli/utils.py | 44 +++++------ emmet-core/emmet/core/tasks.py | 76 +++++++++++++++++-- emmet-core/emmet/core/vasp/calculation.py | 12 ++- emmet-core/emmet/core/vasp/validation.py | 16 +++- 6 files changed, 118 insertions(+), 44 deletions(-) diff --git a/emmet-builders/emmet/builders/vasp/materials.py b/emmet-builders/emmet/builders/vasp/materials.py index 4b9c6da932..d54ff32c1b 100644 --- a/emmet-builders/emmet/builders/vasp/materials.py +++ b/emmet-builders/emmet/builders/vasp/materials.py @@ -16,7 +16,7 @@ from emmet.core.utils import group_structures, jsanitize from emmet.core.vasp.calc_types import TaskType from emmet.core.vasp.material import MaterialsDoc -from emmet.core.vasp.task_valid import TaskDocument +from emmet.core.tasks import TaskDoc __author__ = "Shyam Dwaraknath " @@ -227,7 +227,7 @@ def process_item(self, items: List[Dict]) -> List[Dict]: were processed """ - tasks = [TaskDocument(**task) for task in items] + tasks = [TaskDoc(**task) for task in items] formula = tasks[0].formula_pretty task_ids = [task.task_id for task in tasks] @@ -295,8 +295,8 @@ def update_targets(self, items: List[List[Dict]]): self.logger.info("No items to update") def filter_and_group_tasks( - self, tasks: List[TaskDocument], task_transformations: List[Union[Dict, None]] - ) -> Iterator[List[TaskDocument]]: + self, tasks: List[TaskDoc], task_transformations: List[Union[Dict, None]] + ) -> Iterator[List[TaskDoc]]: """ Groups tasks by structure matching """ diff --git a/emmet-builders/emmet/builders/vasp/task_validator.py b/emmet-builders/emmet/builders/vasp/task_validator.py index a2dc6bc5e0..e23dc3bd5e 100644 --- a/emmet-builders/emmet/builders/vasp/task_validator.py +++ b/emmet-builders/emmet/builders/vasp/task_validator.py @@ -5,7 +5,7 @@ from maggma.core import Store from emmet.builders.settings import EmmetBuildSettings -from emmet.core.vasp.task_valid import TaskDocument +from emmet.core.tasks import TaskDoc from emmet.core.vasp.calc_types.enums import CalcType from emmet.core.vasp.validation import DeprecationMessage, ValidationDoc @@ -80,7 +80,9 @@ def unary_function(self, item): Args: item (dict): a (projection of a) task doc """ - task_doc = TaskDocument(**item) + if not item["output"].get("energy"): + item["output"]["energy"] = -1e20 + task_doc = TaskDoc(**item) validation_doc = ValidationDoc.from_task_doc( task_doc=task_doc, kpts_tolerance=self.settings.VASP_KPTS_TOLERANCE, diff --git a/emmet-cli/emmet/cli/utils.py b/emmet-cli/emmet/cli/utils.py index 973e6251f0..d6c8532f97 100644 --- a/emmet-cli/emmet/cli/utils.py +++ b/emmet-cli/emmet/cli/utils.py @@ -15,14 +15,13 @@ import mgzip from botocore.exceptions import EndpointConnectionError from atomate.vasp.database import VaspCalcDb -from atomate.vasp.drones import VaspDrone from dotty_dict import dotty from fireworks.fw_config import FW_BLOCK_FORMAT from mongogrant.client import Client from pymatgen.core import Structure from pymatgen.util.provenance import StructureNL from pymongo.errors import DocumentTooLarge -from emmet.core.vasp.task_valid import TaskDocument +from emmet.core.tasks import TaskDoc from emmet.core.vasp.validation import ValidationDoc from pymatgen.entries.compatibility import MaterialsProject2020Compatibility @@ -382,11 +381,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 projection = {"tags": 1, "task_id": 1} # projection = {"tags": 1, "task_id": 1, "calcs_reversed": 1} count = 0 - drone = VaspDrone( - additional_fields={"tags": tags}, - store_volumetric_data=ctx.params["store_volumetric_data"], - runs=ctx.params["runs"], - ) + # fs_keys = ["bandstructure", "dos", "chgcar", "locpot", "elfcar"] # for i in range(3): # fs_keys.append(f"aeccar{i}") @@ -413,13 +408,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 logger.warning(f"{name} {launcher} already parsed -> would remove.") continue - try: - task_doc = drone.assimilate(vaspdir) - except Exception as ex: - logger.error(f"Failed to assimilate {vaspdir}: {ex}") - continue - - task_doc["sbxn"] = sbxn + additional_fields = {"sbxn" : sbxn, "tags": []} snl_metas_avail = isinstance(snl_metas, dict) task_id = ( task_ids.get(launcher) if manual_taskid else task_ids[chunk_idx][count] @@ -429,7 +418,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 logger.error(f"Unable to determine task_id for {launcher}") continue - task_doc["task_id"] = task_id + additional_fields["task_id"] = task_id logger.info(f"Using {task_id} for {launcher}.") if docs: @@ -437,17 +426,22 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 # (run through set to implicitly remove duplicate tags) if docs[0]["tags"]: existing_tags = list(set(docs[0]["tags"])) - task_doc["tags"] += existing_tags + additional_fields["tags"] += existing_tags logger.info(f"Adding existing tags {existing_tags} to {tags}.") try: - task_document = TaskDocument(**task_doc) - except Exception as exc: - logger.error(f"Unable to construct a valid TaskDocument: {exc}") + task_doc = TaskDoc.from_directory( + dir_name = vaspdir, + additional_fields=additional_fields, + volumetric_files=ctx.params["store_volumetric_data"], + task_names=ctx.params["runs"] + ) + except Exception as ex: + logger.error(f"Failed to build a TaskDoc from {vaspdir}: {ex}") continue try: - validation_doc = ValidationDoc.from_task_doc(task_document) + validation_doc = ValidationDoc.from_task_doc(task_doc) except Exception as exc: logger.error(f"Unable to construct a valid ValidationDoc: {exc}") continue @@ -461,7 +455,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 try: entry = MaterialsProject2020Compatibility().process_entry( - task_document.structure_entry + task_doc.structure_entry ) except Exception as exc: logger.error(f"Unable to apply corrections: {exc}") @@ -479,7 +473,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 if references: kwargs["references"] = references - struct = Structure.from_dict(task_doc["input"]["structure"]) + struct = task_doc.input.structure snl = StructureNL(struct, authors, **kwargs) snl_dct = snl.as_dict() snl_dct.update(get_meta_from_structure(struct)) @@ -488,7 +482,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 logger.info(f"Created SNL object for {snl_id}.") if run: - if task_doc["state"] == "successful": + if task_doc.state == "successful": if docs and no_dupe_check: # new_calc = task_doc["calcs_reversed"][0] # existing_calc = docs[0]["calcs_reversed"][0] @@ -515,12 +509,12 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 # return count # TODO remove try: - target.insert_task(task_doc, use_gridfs=True) + target.insert_task(task_doc.model_dump(), use_gridfs=True) except EndpointConnectionError as exc: logger.error(f"Connection failed for {task_id}: {exc}") continue except DocumentTooLarge: - output = dotty(task_doc["calcs_reversed"][0]["output"]) + output = dotty(task_doc.calcs_reversed[0].output.as_dict()) pop_keys = [ "normalmode_eigenvecs", "force_constants", diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index dfa0b89f47..32ed617ef0 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -10,8 +10,9 @@ import numpy as np from emmet.core.common import convert_datetime from emmet.core.structure import StructureMetadata -from emmet.core.vasp.calc_types import CalcType, TaskType +from emmet.core.vasp.calc_types import CalcType, calc_type, TaskType, run_type, RunType, task_type from emmet.core.vasp.calculation import ( + CalculationBaseModel, Calculation, PotcarSpec, RunStatistics, @@ -45,7 +46,7 @@ class Potcar(BaseModel): ) -class OrigInputs(BaseModel): +class OrigInputs(CalculationBaseModel): incar: Optional[Union[Incar, Dict]] = Field( None, description="Pymatgen object representing the INCAR file.", @@ -405,6 +406,33 @@ class TaskDoc(StructureMetadata, extra="allow"): description="Timestamp for the most recent calculation for this task document", ) + # Note that these private fields are needed because TaskDoc permits extra info + # added to the model, unlike TaskDocument. Because of this, when pydantic looks up + # attrs on the model, it searches for them in the model extra dict first, and if it + # can't find them, throws an AttributeError. It does this before looking to see if the + # class has that attr defined on it. + + private_calc_type : Optional[CalcType] = Field( + None, + description="Private field used to store output of `TaskDoc.calc_type`." + ) + + private_run_type : Optional[RunType] = Field( + None, + description = "Private field used to store output of `TaskDoc.run_type`." + ) + + private_structure_entry : Optional[ComputedStructureEntry] = Field( + None, + description="Private field used to store output of `TaskDoc.structure_entry`." + ) + + def model_post_init(self, __context: Any) -> None: + + # Needed for compatibility with TaskDocument + if self.task_type is None: + self.task_type = task_type(self.orig_inputs) + # Make sure that the datetime field is properly formatted # (Unclear when this is not the case, please leave comment if observed) @field_validator("last_updated", mode="before") @@ -426,6 +454,7 @@ def from_directory( store_additional_json: bool = True, additional_fields: Optional[Dict[str, Any]] = None, volume_change_warning_tol: float = 0.2, + task_names : Optional[list[str]] | None = None, **vasp_calculation_kwargs, ) -> _T: """ @@ -444,6 +473,9 @@ def from_directory( volume_change_warning_tol Maximum volume change allowed in VASP relaxations before the calculation is tagged with a warning. + task_names + Naming scheme for multiple calculations in on folder e.g. ["relax1","relax2"]. + Can be subfolder or extension. **vasp_calculation_kwargs Additional parsing options that will be passed to the :obj:`.Calculation.from_vasp_files` function. @@ -457,7 +489,7 @@ def from_directory( additional_fields = {} if additional_fields is None else additional_fields dir_name = Path(dir_name) - task_files = _find_vasp_files(dir_name, volumetric_files=volumetric_files) + task_files = _find_vasp_files(dir_name, volumetric_files=volumetric_files, task_names = task_names) if len(task_files) == 0: raise FileNotFoundError("No VASP files found!") @@ -638,6 +670,35 @@ def get_entry( } return ComputedEntry.from_dict(entry_dict) + @property + def calc_type(self) -> CalcType: + """ + Get the calc type for this TaskDoc. + + Returns + -------- + CalcType + The type of calculation. + """ + inputs = ( + self.calcs_reversed[0].input.model_dump() + if len(self.calcs_reversed) > 0 + else self.orig_inputs + ) + params = self.calcs_reversed[0].input.parameters + incar = self.calcs_reversed[0].input.incar + + self.private_calc_type = calc_type(inputs, {**params, **incar}) + return self.private_calc_type + + @property + def run_type(self) -> RunType: + params = self.calcs_reversed[0].input.parameters + incar = self.calcs_reversed[0].input.incar + + self.private_run_type = run_type({**params, **incar}) + return self.private_run_type + @property def structure_entry(self) -> ComputedStructureEntry: """ @@ -648,8 +709,8 @@ def structure_entry(self) -> ComputedStructureEntry: ComputedStructureEntry The TaskDoc.entry with corresponding TaskDoc.structure added. """ - return ComputedStructureEntry( - structure=self.structure, + self.private_structure_entry = ComputedStructureEntry( + structure=self.output.structure, energy=self.entry.energy, correction=self.entry.correction, composition=self.entry.composition, @@ -658,8 +719,8 @@ def structure_entry(self) -> ComputedStructureEntry: data=self.entry.data, entry_id=self.entry.entry_id, ) - - + return self.private_structure_entry + class TrajectoryDoc(BaseModel): """Model for task trajectory data.""" @@ -912,6 +973,7 @@ def _get_run_stats(calcs_reversed: List[Calculation]) -> Dict[str, RunStatistics def _find_vasp_files( path: Union[str, Path], volumetric_files: Tuple[str, ...] = _VOLUMETRIC_FILES, + task_names : Optional[list[str]] | None = None ) -> Dict[str, Any]: """ Find VASP files in a directory. diff --git a/emmet-core/emmet/core/vasp/calculation.py b/emmet-core/emmet/core/vasp/calculation.py index b6b1fc2832..9fdc685491 100644 --- a/emmet-core/emmet/core/vasp/calculation.py +++ b/emmet-core/emmet/core/vasp/calculation.py @@ -68,6 +68,14 @@ class StoreTrajectoryOption(ValueEnum): NO = "no" +class CalculationBaseModel(BaseModel): + """Wrapper around pydantic BaseModel with extra functionality. """ + + def get(self, key : Any, default_value : Any | None = None) -> Any: + if hasattr(self,key): + return self.__getattribute__(key) + return default_value + class PotcarSpec(BaseModel): """Document defining a VASP POTCAR specification.""" @@ -116,7 +124,7 @@ def from_potcar(cls, potcar: Potcar) -> List["PotcarSpec"]: return [cls.from_potcar_single(p) for p in potcar] -class CalculationInput(BaseModel): +class CalculationInput(CalculationBaseModel): """Document defining VASP calculation inputs.""" incar: Optional[Dict[str, Any]] = Field( @@ -572,7 +580,7 @@ def from_vasp_outputs( ) -class Calculation(BaseModel): +class Calculation(CalculationBaseModel): """Full VASP calculation inputs and outputs.""" dir_name: Optional[str] = Field( diff --git a/emmet-core/emmet/core/vasp/validation.py b/emmet-core/emmet/core/vasp/validation.py index 28c8648637..e794c4fd2e 100644 --- a/emmet-core/emmet/core/vasp/validation.py +++ b/emmet-core/emmet/core/vasp/validation.py @@ -89,10 +89,15 @@ def from_task_doc( run_type = task_doc.run_type inputs = task_doc.orig_inputs chemsys = task_doc.chemsys - calcs_reversed = task_doc.calcs_reversed + calcs_reversed = [ + calc if not hasattr(calc,"model_dump") else calc.model_dump() + for calc in task_doc.calcs_reversed + ] if calcs_reversed[0].get("input", {}).get("structure", None): - structure = Structure.from_dict(calcs_reversed[0]["input"]["structure"]) + structure = calcs_reversed[0]["input"]["structure"] + if isinstance(structure,dict): + structure = Structure.from_dict(structure) else: structure = task_doc.input.structure or task_doc.output.structure @@ -283,8 +288,11 @@ def _kpoint_check(input_set, inputs, calcs_reversed, data, kpts_tolerance): else: input_dict = inputs - num_kpts = input_dict.get("kpoints", {}).get("nkpoints", 0) or np.prod( - input_dict.get("kpoints", {}).get("kpoints", [1, 1, 1]) + kpoints = input_dict.get("kpoints", {}) + if not isinstance(kpoints,dict): + kpoints = kpoints.as_dict() + num_kpts = kpoints.get("nkpoints", 0) or np.prod( + kpoints.get("kpoints", [1, 1, 1]) ) data["kpts_ratio"] = num_kpts / valid_num_kpts From 1249f256c7e2278043ccf9fea991211ce3ca820f Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 20 Mar 2024 11:59:28 -0700 Subject: [PATCH 02/24] linting --- .../emmet/builders/vasp/task_validator.py | 1 - emmet-cli/emmet/cli/utils.py | 6 +-- emmet-core/emmet/core/tasks.py | 37 +++++++++++-------- emmet-core/emmet/core/vasp/calculation.py | 7 ++-- emmet-core/emmet/core/vasp/validation.py | 10 ++--- 5 files changed, 33 insertions(+), 28 deletions(-) diff --git a/emmet-builders/emmet/builders/vasp/task_validator.py b/emmet-builders/emmet/builders/vasp/task_validator.py index d75f8b49eb..0d09a05db6 100644 --- a/emmet-builders/emmet/builders/vasp/task_validator.py +++ b/emmet-builders/emmet/builders/vasp/task_validator.py @@ -7,7 +7,6 @@ from emmet.core.tasks import TaskDoc from emmet.builders.utils import get_potcar_stats from emmet.core.vasp.calc_types.enums import CalcType -from emmet.core.vasp.task_valid import TaskDocument from emmet.core.vasp.validation import DeprecationMessage, ValidationDoc diff --git a/emmet-cli/emmet/cli/utils.py b/emmet-cli/emmet/cli/utils.py index d6c8532f97..b7ffea9aa6 100644 --- a/emmet-cli/emmet/cli/utils.py +++ b/emmet-cli/emmet/cli/utils.py @@ -408,7 +408,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 logger.warning(f"{name} {launcher} already parsed -> would remove.") continue - additional_fields = {"sbxn" : sbxn, "tags": []} + additional_fields = {"sbxn": sbxn, "tags": []} snl_metas_avail = isinstance(snl_metas, dict) task_id = ( task_ids.get(launcher) if manual_taskid else task_ids[chunk_idx][count] @@ -431,10 +431,10 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 try: task_doc = TaskDoc.from_directory( - dir_name = vaspdir, + dir_name=vaspdir, additional_fields=additional_fields, volumetric_files=ctx.params["store_volumetric_data"], - task_names=ctx.params["runs"] + task_names=ctx.params["runs"], ) except Exception as ex: logger.error(f"Failed to build a TaskDoc from {vaspdir}: {ex}") diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index 32ed617ef0..d8f746e67f 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -10,7 +10,14 @@ import numpy as np from emmet.core.common import convert_datetime from emmet.core.structure import StructureMetadata -from emmet.core.vasp.calc_types import CalcType, calc_type, TaskType, run_type, RunType, task_type +from emmet.core.vasp.calc_types import ( + CalcType, + calc_type, + TaskType, + run_type, + RunType, + task_type, +) from emmet.core.vasp.calculation import ( CalculationBaseModel, Calculation, @@ -411,24 +418,21 @@ class TaskDoc(StructureMetadata, extra="allow"): # attrs on the model, it searches for them in the model extra dict first, and if it # can't find them, throws an AttributeError. It does this before looking to see if the # class has that attr defined on it. - - private_calc_type : Optional[CalcType] = Field( - None, - description="Private field used to store output of `TaskDoc.calc_type`." + + private_calc_type: Optional[CalcType] = Field( + None, description="Private field used to store output of `TaskDoc.calc_type`." ) - private_run_type : Optional[RunType] = Field( - None, - description = "Private field used to store output of `TaskDoc.run_type`." + private_run_type: Optional[RunType] = Field( + None, description="Private field used to store output of `TaskDoc.run_type`." ) - private_structure_entry : Optional[ComputedStructureEntry] = Field( + private_structure_entry: Optional[ComputedStructureEntry] = Field( None, - description="Private field used to store output of `TaskDoc.structure_entry`." + description="Private field used to store output of `TaskDoc.structure_entry`.", ) def model_post_init(self, __context: Any) -> None: - # Needed for compatibility with TaskDocument if self.task_type is None: self.task_type = task_type(self.orig_inputs) @@ -454,7 +458,7 @@ def from_directory( store_additional_json: bool = True, additional_fields: Optional[Dict[str, Any]] = None, volume_change_warning_tol: float = 0.2, - task_names : Optional[list[str]] | None = None, + task_names: Optional[list[str]] | None = None, **vasp_calculation_kwargs, ) -> _T: """ @@ -489,7 +493,9 @@ def from_directory( additional_fields = {} if additional_fields is None else additional_fields dir_name = Path(dir_name) - task_files = _find_vasp_files(dir_name, volumetric_files=volumetric_files, task_names = task_names) + task_files = _find_vasp_files( + dir_name, volumetric_files=volumetric_files, task_names=task_names + ) if len(task_files) == 0: raise FileNotFoundError("No VASP files found!") @@ -720,7 +726,8 @@ def structure_entry(self) -> ComputedStructureEntry: entry_id=self.entry.entry_id, ) return self.private_structure_entry - + + class TrajectoryDoc(BaseModel): """Model for task trajectory data.""" @@ -973,7 +980,7 @@ def _get_run_stats(calcs_reversed: List[Calculation]) -> Dict[str, RunStatistics def _find_vasp_files( path: Union[str, Path], volumetric_files: Tuple[str, ...] = _VOLUMETRIC_FILES, - task_names : Optional[list[str]] | None = None + task_names: Optional[list[str]] | None = None, ) -> Dict[str, Any]: """ Find VASP files in a directory. diff --git a/emmet-core/emmet/core/vasp/calculation.py b/emmet-core/emmet/core/vasp/calculation.py index 9fdc685491..779b9e3c85 100644 --- a/emmet-core/emmet/core/vasp/calculation.py +++ b/emmet-core/emmet/core/vasp/calculation.py @@ -69,13 +69,14 @@ class StoreTrajectoryOption(ValueEnum): class CalculationBaseModel(BaseModel): - """Wrapper around pydantic BaseModel with extra functionality. """ + """Wrapper around pydantic BaseModel with extra functionality.""" - def get(self, key : Any, default_value : Any | None = None) -> Any: - if hasattr(self,key): + def get(self, key: Any, default_value: Any | None = None) -> Any: + if hasattr(self, key): return self.__getattribute__(key) return default_value + class PotcarSpec(BaseModel): """Document defining a VASP POTCAR specification.""" diff --git a/emmet-core/emmet/core/vasp/validation.py b/emmet-core/emmet/core/vasp/validation.py index 94802d6ca0..95cef04e69 100644 --- a/emmet-core/emmet/core/vasp/validation.py +++ b/emmet-core/emmet/core/vasp/validation.py @@ -94,13 +94,13 @@ def from_task_doc( inputs = task_doc.orig_inputs chemsys = task_doc.chemsys calcs_reversed = [ - calc if not hasattr(calc,"model_dump") else calc.model_dump() + calc if not hasattr(calc, "model_dump") else calc.model_dump() for calc in task_doc.calcs_reversed ] if calcs_reversed[0].get("input", {}).get("structure", None): structure = calcs_reversed[0]["input"]["structure"] - if isinstance(structure,dict): + if isinstance(structure, dict): structure = Structure.from_dict(structure) else: structure = task_doc.input.structure or task_doc.output.structure @@ -303,11 +303,9 @@ def _kpoint_check(input_set, inputs, calcs_reversed, data, kpts_tolerance): input_dict = inputs kpoints = input_dict.get("kpoints", {}) - if not isinstance(kpoints,dict): + if not isinstance(kpoints, dict): kpoints = kpoints.as_dict() - num_kpts = kpoints.get("nkpoints", 0) or np.prod( - kpoints.get("kpoints", [1, 1, 1]) - ) + num_kpts = kpoints.get("nkpoints", 0) or np.prod(kpoints.get("kpoints", [1, 1, 1])) data["kpts_ratio"] = num_kpts / valid_num_kpts return data["kpts_ratio"] < kpts_tolerance From 9a5cc3f34f67905c471a30d35a22ee05ad960a31 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 20 Mar 2024 12:12:55 -0700 Subject: [PATCH 03/24] fix typing in BaseCalculationModel --- emmet-core/emmet/core/vasp/calculation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emmet-core/emmet/core/vasp/calculation.py b/emmet-core/emmet/core/vasp/calculation.py index 779b9e3c85..02a3fcda90 100644 --- a/emmet-core/emmet/core/vasp/calculation.py +++ b/emmet-core/emmet/core/vasp/calculation.py @@ -71,7 +71,7 @@ class StoreTrajectoryOption(ValueEnum): class CalculationBaseModel(BaseModel): """Wrapper around pydantic BaseModel with extra functionality.""" - def get(self, key: Any, default_value: Any | None = None) -> Any: + def get(self, key: Any, default_value: Optional[Any] = None) -> Any: if hasattr(self, key): return self.__getattribute__(key) return default_value From 19192714adfd806e9cd8a52a07bf96ca10da0d4c Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 20 Mar 2024 12:25:26 -0700 Subject: [PATCH 04/24] fix typing of task_names --- emmet-builders/emmet/builders/utils.py | 11 ++++++----- emmet-core/emmet/core/tasks.py | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/emmet-builders/emmet/builders/utils.py b/emmet-builders/emmet/builders/utils.py index 7a417fe983..b51dee7033 100644 --- a/emmet-builders/emmet/builders/utils.py +++ b/emmet-builders/emmet/builders/utils.py @@ -216,7 +216,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): sys.stdout = self._original_stdout -def get_potcar_stats(): +def get_potcar_stats(strict: bool = False): default_settings = EmmetBuildSettings() stats: dict[str, dict] = {} # type: ignore @@ -231,10 +231,11 @@ def get_potcar_stats(): functional = _input._config_dict["POTCAR_FUNCTIONAL"] for potcar_symbol in _input.CONFIG["POTCAR"].values(): - potcar = PotcarSingle.from_symbol_and_functional( - symbol=potcar_symbol, functional=functional - ) - summary_stats = potcar._summary_stats.copy() + if strict: + potcar = PotcarSingle.from_symbol_and_functional( + symbol=potcar_symbol, functional=functional + ) + summary_stats = potcar._summary_stats.copy() # fallback method for validation - use header hash and symbol # note that the potcar_spec assigns PotcarSingle.symbol to "titel" summary_stats["titel"] = potcar.TITEL diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index d8f746e67f..20c2b4f116 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -458,7 +458,7 @@ def from_directory( store_additional_json: bool = True, additional_fields: Optional[Dict[str, Any]] = None, volume_change_warning_tol: float = 0.2, - task_names: Optional[list[str]] | None = None, + task_names: Optional[list[str]] = None, **vasp_calculation_kwargs, ) -> _T: """ @@ -980,7 +980,7 @@ def _get_run_stats(calcs_reversed: List[Calculation]) -> Dict[str, RunStatistics def _find_vasp_files( path: Union[str, Path], volumetric_files: Tuple[str, ...] = _VOLUMETRIC_FILES, - task_names: Optional[list[str]] | None = None, + task_names: Optional[list[str]] = None, ) -> Dict[str, Any]: """ Find VASP files in a directory. From a49c457bd22ea923935435fa480abda5bccb1612 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 20 Mar 2024 12:42:15 -0700 Subject: [PATCH 05/24] Add non-strict option for potcar summary stats generation --- emmet-builders/emmet/builders/utils.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/emmet-builders/emmet/builders/utils.py b/emmet-builders/emmet/builders/utils.py index b51dee7033..6596a0cc8a 100644 --- a/emmet-builders/emmet/builders/utils.py +++ b/emmet-builders/emmet/builders/utils.py @@ -216,7 +216,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): sys.stdout = self._original_stdout -def get_potcar_stats(strict: bool = False): +def get_potcar_stats(strict: bool = True): default_settings = EmmetBuildSettings() stats: dict[str, dict] = {} # type: ignore @@ -236,10 +236,24 @@ def get_potcar_stats(strict: bool = False): symbol=potcar_symbol, functional=functional ) summary_stats = potcar._summary_stats.copy() - # fallback method for validation - use header hash and symbol - # note that the potcar_spec assigns PotcarSingle.symbol to "titel" - summary_stats["titel"] = potcar.TITEL - summary_stats["hash"] = potcar.md5_header_hash + # fallback method for validation - use header hash and symbol + # note that the potcar_spec assigns PotcarSingle.symbol to "titel" + summary_stats["titel"] = potcar.TITEL + summary_stats["hash"] = potcar.md5_header_hash + + else: + for titel_no_spc, entries in PotcarSingle._potcar_summary_stats[ + functional + ].items(): + if any(potcar_symbol in entry for entry in entries): + _titel = titel_no_spc.split(potcar_symbol) + titel = f"{_titel[0]} {potcar_symbol} " + " ".join(_titel[1:]) + summary_stats = [ + {**entry, "titel": titel, "hash": None} for entry in entries + ] + + break + stats[calc_type].update({potcar_symbol: summary_stats}) return stats From a9a66226dbc424c482d06ff3839eeddd44e78d8d Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 20 Mar 2024 14:39:09 -0700 Subject: [PATCH 06/24] fix materials docs / build --- emmet-builders/emmet/builders/vasp/materials.py | 6 ++++-- emmet-core/emmet/core/tasks.py | 12 +++++++++--- emmet-core/emmet/core/vasp/material.py | 10 +++++----- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/emmet-builders/emmet/builders/vasp/materials.py b/emmet-builders/emmet/builders/vasp/materials.py index d54ff32c1b..b7b82673d5 100644 --- a/emmet-builders/emmet/builders/vasp/materials.py +++ b/emmet-builders/emmet/builders/vasp/materials.py @@ -181,7 +181,7 @@ def get_items(self) -> Iterator[List[Dict]]: invalid_ids = set() projected_fields = [ - "last_updated", + # "last_updated", "completed_at", "task_id", "formula_pretty", @@ -195,9 +195,11 @@ def get_items(self) -> Iterator[List[Dict]]: "input.structure", # needed for entry from task_doc "output.energy", + "calcs_reversed.output.energy", "input.is_hubbard", "input.hubbards", - "input.potcar_spec", + "calcs_reversed.input.potcar_spec", + "calcs_reversed.output.structure", # needed for transform deformation structure back for grouping "transformations", # misc info for materials doc diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index 20c2b4f116..66bb650702 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -409,7 +409,7 @@ class TaskDoc(StructureMetadata, extra="allow"): ) last_updated: Optional[datetime] = Field( - None, + datetime.utcnow(), description="Timestamp for the most recent calculation for this task document", ) @@ -437,6 +437,9 @@ def model_post_init(self, __context: Any) -> None: if self.task_type is None: self.task_type = task_type(self.orig_inputs) + if self.structure is None: + self.structure = self.calcs_reversed[0].output.structure + # Make sure that the datetime field is properly formatted # (Unclear when this is not the case, please leave comment if observed) @field_validator("last_updated", mode="before") @@ -662,7 +665,10 @@ def get_entry( "energy": calcs_reversed[0].output.energy, "parameters": { # Cannot be PotcarSpec document, pymatgen expects a dict - "potcar_spec": [dict(d) for d in calcs_reversed[0].input.potcar_spec], + # Note that `potcar_spec` is optional + "potcar_spec": [dict(d) for d in calcs_reversed[0].input.potcar_spec] + if calcs_reversed[0].input.potcar_spec + else [], # Required to be compatible with MontyEncoder for the ComputedEntry "run_type": str(calcs_reversed[0].run_type), "is_hubbard": calcs_reversed[0].input.is_hubbard, @@ -716,7 +722,7 @@ def structure_entry(self) -> ComputedStructureEntry: The TaskDoc.entry with corresponding TaskDoc.structure added. """ self.private_structure_entry = ComputedStructureEntry( - structure=self.output.structure, + structure=self.structure, energy=self.entry.energy, correction=self.entry.correction, composition=self.entry.composition, diff --git a/emmet-core/emmet/core/vasp/material.py b/emmet-core/emmet/core/vasp/material.py index 171c117475..dc41f3595c 100644 --- a/emmet-core/emmet/core/vasp/material.py +++ b/emmet-core/emmet/core/vasp/material.py @@ -12,7 +12,7 @@ from emmet.core.settings import EmmetSettings from emmet.core.structure import StructureMetadata from emmet.core.vasp.calc_types import CalcType, RunType, TaskType -from emmet.core.vasp.task_valid import TaskDocument +from emmet.core.tasks import TaskDoc SETTINGS = EmmetSettings() @@ -51,7 +51,7 @@ class MaterialsDoc(CoreMaterialsDoc, StructureMetadata): @classmethod def from_tasks( cls, - task_group: List[TaskDocument], + task_group: List[TaskDoc], structure_quality_scores: Dict[ str, int ] = SETTINGS.VASP_STRUCTURE_QUALITY_SCORES, @@ -101,7 +101,7 @@ def from_tasks( # Always prefer a static over a structure opt structure_task_quality_scores = {"Structure Optimization": 1, "Static": 2} - def _structure_eval(task: TaskDocument): + def _structure_eval(task: TaskDoc): """ Helper function to order structures optimization and statics calcs by - Functional Type @@ -155,7 +155,7 @@ def _structure_eval(task: TaskDocument): # Always prefer a static over a structure opt entry_task_quality_scores = {"Structure Optimization": 1, "Static": 2} - def _entry_eval(task: TaskDocument): + def _entry_eval(task: TaskDoc): """ Helper function to order entries and statics calcs by - Spin polarization @@ -222,7 +222,7 @@ def _entry_eval(task: TaskDocument): @classmethod def construct_deprecated_material( cls, - task_group: List[TaskDocument], + task_group: List[TaskDoc], commercial_license: bool = True, ) -> "MaterialsDoc": """ From 52bf6f3e87b734f9e8e30abf464a20bcd597efae Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Fri, 22 Mar 2024 17:00:09 -0700 Subject: [PATCH 07/24] revert potcar checks, move to separate PR --- emmet-builders/emmet/builders/utils.py | 33 +++++-------------- .../emmet/builders/vasp/task_validator.py | 2 +- 2 files changed, 10 insertions(+), 25 deletions(-) diff --git a/emmet-builders/emmet/builders/utils.py b/emmet-builders/emmet/builders/utils.py index 6596a0cc8a..7a417fe983 100644 --- a/emmet-builders/emmet/builders/utils.py +++ b/emmet-builders/emmet/builders/utils.py @@ -216,7 +216,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): sys.stdout = self._original_stdout -def get_potcar_stats(strict: bool = True): +def get_potcar_stats(): default_settings = EmmetBuildSettings() stats: dict[str, dict] = {} # type: ignore @@ -231,29 +231,14 @@ def get_potcar_stats(strict: bool = True): functional = _input._config_dict["POTCAR_FUNCTIONAL"] for potcar_symbol in _input.CONFIG["POTCAR"].values(): - if strict: - potcar = PotcarSingle.from_symbol_and_functional( - symbol=potcar_symbol, functional=functional - ) - summary_stats = potcar._summary_stats.copy() - # fallback method for validation - use header hash and symbol - # note that the potcar_spec assigns PotcarSingle.symbol to "titel" - summary_stats["titel"] = potcar.TITEL - summary_stats["hash"] = potcar.md5_header_hash - - else: - for titel_no_spc, entries in PotcarSingle._potcar_summary_stats[ - functional - ].items(): - if any(potcar_symbol in entry for entry in entries): - _titel = titel_no_spc.split(potcar_symbol) - titel = f"{_titel[0]} {potcar_symbol} " + " ".join(_titel[1:]) - summary_stats = [ - {**entry, "titel": titel, "hash": None} for entry in entries - ] - - break - + potcar = PotcarSingle.from_symbol_and_functional( + symbol=potcar_symbol, functional=functional + ) + summary_stats = potcar._summary_stats.copy() + # fallback method for validation - use header hash and symbol + # note that the potcar_spec assigns PotcarSingle.symbol to "titel" + summary_stats["titel"] = potcar.TITEL + summary_stats["hash"] = potcar.md5_header_hash stats[calc_type].update({potcar_symbol: summary_stats}) return stats diff --git a/emmet-builders/emmet/builders/vasp/task_validator.py b/emmet-builders/emmet/builders/vasp/task_validator.py index 0d09a05db6..fb31a23f92 100644 --- a/emmet-builders/emmet/builders/vasp/task_validator.py +++ b/emmet-builders/emmet/builders/vasp/task_validator.py @@ -39,7 +39,7 @@ def __init__( # Set up potcar cache if appropriate if self.settings.VASP_VALIDATE_POTCAR_STATS: if not self.potcar_stats: - self.potcar_stats = get_potcar_stats() + self.potcar_stats = get_potcar_stats(strict = False) else: self.potcar_stats = None From 0f99c88e33c7411fc5b46fdc3cb48464c477531d Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Tue, 2 Apr 2024 14:01:32 -0700 Subject: [PATCH 08/24] linting --- emmet-builders/emmet/builders/vasp/task_validator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emmet-builders/emmet/builders/vasp/task_validator.py b/emmet-builders/emmet/builders/vasp/task_validator.py index fb31a23f92..b601114783 100644 --- a/emmet-builders/emmet/builders/vasp/task_validator.py +++ b/emmet-builders/emmet/builders/vasp/task_validator.py @@ -39,7 +39,7 @@ def __init__( # Set up potcar cache if appropriate if self.settings.VASP_VALIDATE_POTCAR_STATS: if not self.potcar_stats: - self.potcar_stats = get_potcar_stats(strict = False) + self.potcar_stats = get_potcar_stats(strict=False) else: self.potcar_stats = None From 6e3aa48d184cf96b6bdfa6970520c5567f3947e8 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Tue, 2 Apr 2024 17:14:38 -0700 Subject: [PATCH 09/24] continue refactor --- .../emmet/builders/vasp/materials.py | 4 +- .../emmet/builders/vasp/task_validator.py | 6 ++- .../tests/test_corrected_entries_thermo.py | 2 +- emmet-core/emmet/core/tasks.py | 44 ++++++++++--------- emmet-core/emmet/core/vasp/calculation.py | 4 +- emmet-core/emmet/core/vasp/validation.py | 4 +- emmet-core/tests/vasp/test_vasp.py | 37 +++++++++------- 7 files changed, 54 insertions(+), 47 deletions(-) diff --git a/emmet-builders/emmet/builders/vasp/materials.py b/emmet-builders/emmet/builders/vasp/materials.py index b7b82673d5..f1a86e1c6c 100644 --- a/emmet-builders/emmet/builders/vasp/materials.py +++ b/emmet-builders/emmet/builders/vasp/materials.py @@ -229,7 +229,9 @@ def process_item(self, items: List[Dict]) -> List[Dict]: were processed """ - tasks = [TaskDoc(**task) for task in items] + tasks = [ + TaskDoc(**task) for task in items + ] # [TaskDoc(**task) for task in items] formula = tasks[0].formula_pretty task_ids = [task.task_id for task in tasks] diff --git a/emmet-builders/emmet/builders/vasp/task_validator.py b/emmet-builders/emmet/builders/vasp/task_validator.py index b601114783..9b16440a6c 100644 --- a/emmet-builders/emmet/builders/vasp/task_validator.py +++ b/emmet-builders/emmet/builders/vasp/task_validator.py @@ -4,8 +4,8 @@ from maggma.core import Store from emmet.builders.settings import EmmetBuildSettings -from emmet.core.tasks import TaskDoc from emmet.builders.utils import get_potcar_stats +from emmet.core.tasks import TaskDoc from emmet.core.vasp.calc_types.enums import CalcType from emmet.core.vasp.validation import DeprecationMessage, ValidationDoc @@ -66,7 +66,9 @@ def unary_function(self, item): item (dict): a (projection of a) task doc """ if not item["output"].get("energy"): - item["output"]["energy"] = -1e20 + # Default value required for pydantic typing. `TaskDoc.output.energy` + # must be float. + item["output"]["energy"] = 1e20 task_doc = TaskDoc(**item) validation_doc = ValidationDoc.from_task_doc( task_doc=task_doc, diff --git a/emmet-builders/tests/test_corrected_entries_thermo.py b/emmet-builders/tests/test_corrected_entries_thermo.py index 620e662125..f7f03af057 100644 --- a/emmet-builders/tests/test_corrected_entries_thermo.py +++ b/emmet-builders/tests/test_corrected_entries_thermo.py @@ -34,7 +34,7 @@ def thermo_store(): @pytest.fixture def phase_diagram_store(): - return MemoryStore(key="chemsys") + return MemoryStore(key="phase_diagram_id") def test_corrected_entries_builder(corrected_entries_store, materials_store): diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index 66bb650702..c18b96c981 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -9,6 +9,7 @@ import numpy as np from emmet.core.common import convert_datetime +from emmet.core.mpid import MPID from emmet.core.structure import StructureMetadata from emmet.core.vasp.calc_types import ( CalcType, @@ -28,7 +29,14 @@ from emmet.core.vasp.task_valid import TaskState from monty.json import MontyDecoder from monty.serialization import loadfn -from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator +from pydantic import ( + BaseModel, + ConfigDict, + Field, + field_validator, + model_validator, + PrivateAttr, +) from pymatgen.analysis.structure_analyzer import oxide_type from pymatgen.core.structure import Structure from pymatgen.core.trajectory import Trajectory @@ -349,7 +357,7 @@ class TaskDoc(StructureMetadata, extra="allow"): None, description="The type of calculation." ) - task_id: Optional[str] = Field( + task_id: Optional[Union[MPID, str]] = Field( None, description="The (task) ID of this calculation, used as a universal reference across property documents." "This comes in the form: mp-******.", @@ -419,18 +427,12 @@ class TaskDoc(StructureMetadata, extra="allow"): # can't find them, throws an AttributeError. It does this before looking to see if the # class has that attr defined on it. - private_calc_type: Optional[CalcType] = Field( - None, description="Private field used to store output of `TaskDoc.calc_type`." - ) - - private_run_type: Optional[RunType] = Field( - None, description="Private field used to store output of `TaskDoc.run_type`." - ) - - private_structure_entry: Optional[ComputedStructureEntry] = Field( - None, - description="Private field used to store output of `TaskDoc.structure_entry`.", - ) + # Private field used to store output of `TaskDoc.calc_type` + _calc_type: Optional[CalcType] = PrivateAttr(None) + # Private field used to store output of `TaskDoc.run_type` + _run_type: Optional[RunType] = PrivateAttr(None) + # Private field used to store output of `TaskDoc.structure_entry`. + _structure_entry: Optional[ComputedStructureEntry] = PrivateAttr(None) def model_post_init(self, __context: Any) -> None: # Needed for compatibility with TaskDocument @@ -641,7 +643,7 @@ def from_vasprun( @staticmethod def get_entry( - calcs_reversed: List[Calculation], task_id: Optional[str] = None + calcs_reversed: List[Calculation], task_id: Optional[Union[MPID, str]] = None ) -> ComputedEntry: """ Get a computed entry from a list of VASP calculation documents. @@ -700,16 +702,16 @@ def calc_type(self) -> CalcType: params = self.calcs_reversed[0].input.parameters incar = self.calcs_reversed[0].input.incar - self.private_calc_type = calc_type(inputs, {**params, **incar}) - return self.private_calc_type + self._calc_type = calc_type(inputs, {**params, **incar}) + return self._calc_type @property def run_type(self) -> RunType: params = self.calcs_reversed[0].input.parameters incar = self.calcs_reversed[0].input.incar - self.private_run_type = run_type({**params, **incar}) - return self.private_run_type + self._run_type = run_type({**params, **incar}) + return self._run_type @property def structure_entry(self) -> ComputedStructureEntry: @@ -721,7 +723,7 @@ def structure_entry(self) -> ComputedStructureEntry: ComputedStructureEntry The TaskDoc.entry with corresponding TaskDoc.structure added. """ - self.private_structure_entry = ComputedStructureEntry( + self._structure_entry = ComputedStructureEntry( structure=self.structure, energy=self.entry.energy, correction=self.entry.correction, @@ -731,7 +733,7 @@ def structure_entry(self) -> ComputedStructureEntry: data=self.entry.data, entry_id=self.entry.entry_id, ) - return self.private_structure_entry + return self._structure_entry class TrajectoryDoc(BaseModel): diff --git a/emmet-core/emmet/core/vasp/calculation.py b/emmet-core/emmet/core/vasp/calculation.py index 02a3fcda90..c7628bde7a 100644 --- a/emmet-core/emmet/core/vasp/calculation.py +++ b/emmet-core/emmet/core/vasp/calculation.py @@ -72,9 +72,7 @@ class CalculationBaseModel(BaseModel): """Wrapper around pydantic BaseModel with extra functionality.""" def get(self, key: Any, default_value: Optional[Any] = None) -> Any: - if hasattr(self, key): - return self.__getattribute__(key) - return default_value + return getattr(self, key, default_value) class PotcarSpec(BaseModel): diff --git a/emmet-core/emmet/core/vasp/validation.py b/emmet-core/emmet/core/vasp/validation.py index d989eee00a..6103f503fd 100644 --- a/emmet-core/emmet/core/vasp/validation.py +++ b/emmet-core/emmet/core/vasp/validation.py @@ -339,14 +339,14 @@ def _potcar_stats_check(task_doc, potcar_stats: dict): data_tol = 1.0e-6 try: - potcar_details = task_doc.calcs_reversed[0]["input"]["potcar_spec"] + potcar_details = task_doc.calcs_reversed[0].model_dump()["input"]["potcar_spec"] except KeyError: # Assume it is an old calculation without potcar_spec data and treat it as passing POTCAR hash check return False use_legacy_hash_check = False - if any(len(entry.get("summary_stats", {})) == 0 for entry in potcar_details): + if any(entry.get("summary_stats", None) is None for entry in potcar_details): # potcar_spec doesn't include summary_stats kwarg needed to check potcars # fall back to header hash checking use_legacy_hash_check = True diff --git a/emmet-core/tests/vasp/test_vasp.py b/emmet-core/tests/vasp/test_vasp.py index 0d24ea6f9f..d3a0e26aed 100644 --- a/emmet-core/tests/vasp/test_vasp.py +++ b/emmet-core/tests/vasp/test_vasp.py @@ -4,7 +4,7 @@ from monty.io import zopen from emmet.core.vasp.calc_types import RunType, TaskType, run_type, task_type -from emmet.core.vasp.task_valid import TaskDocument +from emmet.core.tasks import TaskDoc from emmet.core.vasp.validation import ValidationDoc, _potcar_stats_check @@ -45,7 +45,7 @@ def tasks(test_dir): with zopen(test_dir / "test_si_tasks.json.gz") as f: data = json.load(f) - return [TaskDocument(**d) for d in data] + return [TaskDoc(**d) for d in data] def test_validator(tasks): @@ -58,7 +58,7 @@ def test_validator(tasks): def test_validator_failed_symmetry(test_dir): with zopen(test_dir / "failed_elastic_task.json.gz", "r") as f: failed_task = json.load(f) - taskdoc = TaskDocument(**failed_task) + taskdoc = TaskDoc(**failed_task) validation = ValidationDoc.from_task_doc(taskdoc) assert any("SYMMETRY" in repr(reason) for reason in validation.reasons) @@ -74,7 +74,7 @@ def task_ldau(test_dir): with zopen(test_dir / "test_task.json") as f: data = json.load(f) - return TaskDocument(**data) + return TaskDoc(**data) def test_ldau(task_ldau): @@ -87,7 +87,7 @@ def test_ldau_validation(test_dir): with open(test_dir / "old_aflow_ggau_task.json") as f: data = json.load(f) - task = TaskDocument(**data) + task = TaskDoc(**data) assert task.run_type == "GGA+U" valid = ValidationDoc.from_task_doc(task) @@ -113,21 +113,24 @@ def test_potcar_stats_check(test_dir): < filename > ) I cannot rebuild the TaskDoc without excluding the `orig_inputs` key. """ - task_doc = TaskDocument(**{key: data[key] for key in data if key != "last_updated"}) + # task_doc = TaskDocument(**{key: data[key] for key in data if key != "last_updated"}) + task_doc = TaskDoc(**data) try: # First check: generate hashes from POTCARs in TaskDoc, check should pass calc_type = str(task_doc.calc_type) expected_hashes = {calc_type: {}} - for spec in task_doc.calcs_reversed[0]["input"]["potcar_spec"]: - symbol = spec["titel"].split(" ")[1] + for spec in task_doc.calcs_reversed[0].input.potcar_spec: + symbol = spec.titel.split(" ")[1] potcar = PotcarSingle.from_symbol_and_functional( symbol=symbol, functional="PBE" ) - expected_hashes[calc_type][symbol] = { - **potcar._summary_stats, - "hash": potcar.md5_header_hash, - "titel": potcar.TITEL, - } + expected_hashes[calc_type][symbol] = [ + { + **potcar._summary_stats, + "hash": potcar.md5_header_hash, + "titel": potcar.TITEL, + } + ] assert not _potcar_stats_check(task_doc, expected_hashes) @@ -141,8 +144,8 @@ def test_potcar_stats_check(test_dir): # Third check: change data in expected hashes, check should fail wrong_hashes = {calc_type: {**expected_hashes[calc_type]}} - for key in wrong_hashes[calc_type][first_element]["stats"]["data"]: - wrong_hashes[calc_type][first_element]["stats"]["data"][key] *= 1.1 + for key in wrong_hashes[calc_type][first_element][0]["stats"]["data"]: + wrong_hashes[calc_type][first_element][0]["stats"]["data"][key] *= 1.1 assert _potcar_stats_check(task_doc, wrong_hashes) @@ -159,7 +162,7 @@ def test_potcar_stats_check(test_dir): } for potcar in legacy_data["calcs_reversed"][0]["input"]["potcar_spec"] ] - legacy_task_doc = TaskDocument( + legacy_task_doc = TaskDoc( **{key: legacy_data[key] for key in legacy_data if key != "last_updated"} ) assert not _potcar_stats_check(legacy_task_doc, expected_hashes) @@ -180,7 +183,7 @@ def test_potcar_stats_check(test_dir): legacy_data["calcs_reversed"][0]["input"]["potcar_spec"][0][ "hash" ] = legacy_data["calcs_reversed"][0]["input"]["potcar_spec"][0]["hash"][:-1] - legacy_task_doc = TaskDocument( + legacy_task_doc = TaskDoc( **{key: legacy_data[key] for key in legacy_data if key != "last_updated"} ) assert _potcar_stats_check(legacy_task_doc, expected_hashes) From d6ca6b012156c0b010f89424c203f2546c8361d5 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 3 Apr 2024 12:23:47 -0700 Subject: [PATCH 10/24] continue adding missing links between TaskDoc and TaskDocument --- .../emmet/builders/vasp/task_validator.py | 4 ---- emmet-core/emmet/core/tasks.py | 19 +++++++++++++------ emmet-core/emmet/core/vasp/validation.py | 9 ++++++--- emmet-core/tests/vasp/test_vasp.py | 2 +- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/emmet-builders/emmet/builders/vasp/task_validator.py b/emmet-builders/emmet/builders/vasp/task_validator.py index 9b16440a6c..afa9b27571 100644 --- a/emmet-builders/emmet/builders/vasp/task_validator.py +++ b/emmet-builders/emmet/builders/vasp/task_validator.py @@ -65,10 +65,6 @@ def unary_function(self, item): Args: item (dict): a (projection of a) task doc """ - if not item["output"].get("energy"): - # Default value required for pydantic typing. `TaskDoc.output.energy` - # must be float. - item["output"]["energy"] = 1e20 task_doc = TaskDoc(**item) validation_doc = ValidationDoc.from_task_doc( task_doc=task_doc, diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index c18b96c981..2fdc95849d 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -3,7 +3,7 @@ import logging import re from collections import OrderedDict -from datetime import datetime +from datetime import datetime, UTC from pathlib import Path from typing import Any, Dict, List, Optional, Tuple, Type, TypeVar, Union @@ -100,7 +100,7 @@ class OutputDoc(BaseModel): ) density: Optional[float] = Field(None, description="Density of in units of g/cc.") - energy: float = Field(..., description="Total Energy in units of eV.") + energy: Optional[float] = Field(None, description="Total Energy in units of eV.") forces: Optional[List[List[float]]] = Field( None, description="The force on each atom in units of eV/A^2." ) @@ -353,7 +353,7 @@ class TaskDoc(StructureMetadata, extra="allow"): None, description="Final output structure from the task" ) - task_type: Optional[Union[CalcType, TaskType]] = Field( + task_type: Optional[Union[TaskType, CalcType]] = Field( None, description="The type of calculation." ) @@ -417,7 +417,7 @@ class TaskDoc(StructureMetadata, extra="allow"): ) last_updated: Optional[datetime] = Field( - datetime.utcnow(), + datetime.now(UTC), description="Timestamp for the most recent calculation for this task document", ) @@ -438,6 +438,13 @@ def model_post_init(self, __context: Any) -> None: # Needed for compatibility with TaskDocument if self.task_type is None: self.task_type = task_type(self.orig_inputs) + + if isinstance(self.task_type,CalcType): + # For a while, the TaskDoc.task_type was allowed to be a CalcType or TaskType + # For backwards compatibility with TaskDocument, ensure that isinstance(TaskDoc.task_type, TaskType) + temp = str(self.task_type).split(" ") + self._run_type = RunType(temp[0]) + self.task_type = TaskType(" ".join(temp[1:])) if self.structure is None: self.structure = self.calcs_reversed[0].output.structure @@ -451,7 +458,7 @@ def last_updated_dict_ok(cls, v) -> datetime: @model_validator(mode="after") def set_entry(self) -> datetime: - if not self.entry and self.calcs_reversed: + if not self.entry and self.calcs_reversed and getattr(self.calcs_reversed[0].output,"structure",None): self.entry = self.get_entry(self.calcs_reversed, self.task_id) return self @@ -679,7 +686,7 @@ def get_entry( "data": { "oxide_type": oxide_type(calcs_reversed[0].output.structure), "aspherical": calcs_reversed[0].input.parameters.get("LASPH", False), - "last_updated": str(datetime.utcnow()), + "last_updated": str(datetime.now(UTC)), }, } return ComputedEntry.from_dict(entry_dict) diff --git a/emmet-core/emmet/core/vasp/validation.py b/emmet-core/emmet/core/vasp/validation.py index 6103f503fd..2c480d70b8 100644 --- a/emmet-core/emmet/core/vasp/validation.py +++ b/emmet-core/emmet/core/vasp/validation.py @@ -4,6 +4,7 @@ import numpy as np from pydantic import ConfigDict, Field, ImportString from pymatgen.core.structure import Structure +from pymatgen.io.vasp.inputs import Kpoints from pymatgen.io.vasp.sets import VaspInputSet from emmet.core.settings import EmmetSettings @@ -145,7 +146,7 @@ def from_task_doc( # Checking K-Points # Calculations that use KSPACING will not have a .kpoints attr - if task_type != task_type.NSCF_Line: + if task_type != TaskType.NSCF_Line: # Not validating k-point data for line-mode calculations as constructing # the k-path is too costly for the builder and the uniform input set is used. @@ -257,7 +258,7 @@ def _scf_upward_check(calcs_reversed, inputs, data, max_allowed_scf_gradient, wa def _u_value_checks(task_doc, valid_input_set, warnings): # NOTE: Reverting to old method of just using input.hubbards which is wrong in many instances - input_hubbards = task_doc.input.hubbards + input_hubbards = {} if task_doc.input.hubbards is None else task_doc.input.hubbards if valid_input_set.incar.get("LDAU", False) or len(input_hubbards) > 0: # Assemble required input_set LDAU params into dictionary @@ -303,8 +304,10 @@ def _kpoint_check(input_set, inputs, calcs_reversed, data, kpts_tolerance): input_dict = inputs kpoints = input_dict.get("kpoints", {}) - if not isinstance(kpoints, dict): + if isinstance(kpoints, Kpoints): kpoints = kpoints.as_dict() + elif kpoints is None: + kpoints = {} num_kpts = kpoints.get("nkpoints", 0) or np.prod(kpoints.get("kpoints", [1, 1, 1])) data["kpts_ratio"] = num_kpts / valid_num_kpts diff --git a/emmet-core/tests/vasp/test_vasp.py b/emmet-core/tests/vasp/test_vasp.py index d3a0e26aed..fef8f27127 100644 --- a/emmet-core/tests/vasp/test_vasp.py +++ b/emmet-core/tests/vasp/test_vasp.py @@ -80,7 +80,7 @@ def task_ldau(test_dir): def test_ldau(task_ldau): task_ldau.input.is_hubbard = True assert task_ldau.run_type == RunType.GGA_U - assert ValidationDoc.from_task_doc(task_ldau).valid is False + assert not ValidationDoc.from_task_doc(task_ldau).valid def test_ldau_validation(test_dir): From 24eeb155846588e493869e5149a434cf7442cd41 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 3 Apr 2024 12:24:00 -0700 Subject: [PATCH 11/24] linting --- emmet-core/emmet/core/tasks.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index 2fdc95849d..508ddd8fc8 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -438,8 +438,8 @@ def model_post_init(self, __context: Any) -> None: # Needed for compatibility with TaskDocument if self.task_type is None: self.task_type = task_type(self.orig_inputs) - - if isinstance(self.task_type,CalcType): + + if isinstance(self.task_type, CalcType): # For a while, the TaskDoc.task_type was allowed to be a CalcType or TaskType # For backwards compatibility with TaskDocument, ensure that isinstance(TaskDoc.task_type, TaskType) temp = str(self.task_type).split(" ") @@ -458,7 +458,11 @@ def last_updated_dict_ok(cls, v) -> datetime: @model_validator(mode="after") def set_entry(self) -> datetime: - if not self.entry and self.calcs_reversed and getattr(self.calcs_reversed[0].output,"structure",None): + if ( + not self.entry + and self.calcs_reversed + and getattr(self.calcs_reversed[0].output, "structure", None) + ): self.entry = self.get_entry(self.calcs_reversed, self.task_id) return self From 90183dec9b7b87f35f6a57c2af4b7d29ca0bf206 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 3 Apr 2024 12:32:40 -0700 Subject: [PATCH 12/24] Make sure datetime fix for deprecated utcnow works with older python --- emmet-core/emmet/core/tasks.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index 508ddd8fc8..3dbc644c94 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -3,7 +3,7 @@ import logging import re from collections import OrderedDict -from datetime import datetime, UTC +from datetime import datetime, timezone from pathlib import Path from typing import Any, Dict, List, Optional, Tuple, Type, TypeVar, Union @@ -417,7 +417,7 @@ class TaskDoc(StructureMetadata, extra="allow"): ) last_updated: Optional[datetime] = Field( - datetime.now(UTC), + datetime.now(timezone.UTC), description="Timestamp for the most recent calculation for this task document", ) @@ -690,7 +690,7 @@ def get_entry( "data": { "oxide_type": oxide_type(calcs_reversed[0].output.structure), "aspherical": calcs_reversed[0].input.parameters.get("LASPH", False), - "last_updated": str(datetime.now(UTC)), + "last_updated": str(datetime.now(timezone.UTC)), }, } return ComputedEntry.from_dict(entry_dict) From 8245ad2bf2fea9360153c9eb7ccf3a04f5956724 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 3 Apr 2024 13:13:24 -0700 Subject: [PATCH 13/24] timezone.UTC --> timezone.utc --- emmet-core/emmet/core/tasks.py | 4 ++-- test_files/vasp/Si_old_double_relax/transformations.json | 1 + test_files/vasp/Si_static/transformations.json | 1 + test_files/vasp/Si_uniform/transformations.json | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 test_files/vasp/Si_old_double_relax/transformations.json create mode 100644 test_files/vasp/Si_static/transformations.json create mode 100644 test_files/vasp/Si_uniform/transformations.json diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index 3dbc644c94..94121c3055 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -417,7 +417,7 @@ class TaskDoc(StructureMetadata, extra="allow"): ) last_updated: Optional[datetime] = Field( - datetime.now(timezone.UTC), + datetime.now(timezone.utc), description="Timestamp for the most recent calculation for this task document", ) @@ -690,7 +690,7 @@ def get_entry( "data": { "oxide_type": oxide_type(calcs_reversed[0].output.structure), "aspherical": calcs_reversed[0].input.parameters.get("LASPH", False), - "last_updated": str(datetime.now(timezone.UTC)), + "last_updated": str(datetime.now(timezone.utc)), }, } return ComputedEntry.from_dict(entry_dict) diff --git a/test_files/vasp/Si_old_double_relax/transformations.json b/test_files/vasp/Si_old_double_relax/transformations.json new file mode 100644 index 0000000000..b9d38b3cda --- /dev/null +++ b/test_files/vasp/Si_old_double_relax/transformations.json @@ -0,0 +1 @@ +{"@module": "pymatgen.alchemy.materials", "@class": "TransformedStructure", "charge": 0.0, "lattice": {"matrix": [[3.0143119793126094, -9.603349200000001e-10, 1.7403138565809477], [1.004770356723228, 2.8419204979889705, 1.7403138565809475], [3.7104483600000003e-09, 2.62368333e-09, 3.4806268003085243]], "pbc": [true, true, true], "a": 3.480627677306947, "b": 3.480627516130856, "c": 3.4806268003085243, "alpha": 59.99999806634655, "beta": 59.999999598157196, "gamma": 60.00000324448679, "volume": 29.816563224604305}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.875, 0.875, 0.875], "xyz": [3.5166970472780004, 2.486680437195779, 6.0910976992866175], "properties": {"magmom": 0.0}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.125, 0.125, 0.125], "xyz": [0.5023852924682857, 0.3552400624565399, 0.8701568141838024], "properties": {"magmom": -0.0}, "label": "Si"}], "history": [{"@module": "pymatgen.transformations.standard_transformations", "@class": "DeformStructureTransformation", "@version": null, "deformation": [[0.9, 0.0, 0.0], [0.0, 0.9, 0.0], [0.0, 0.0, 0.9]], "input_structure": {"@module": "pymatgen.core.structure", "@class": "Structure", "charge": 0.0, "lattice": {"matrix": [[3.349235532569566, -1.0670388e-09, 1.9336820628677196], [1.1164115074702534, 3.1576894422099673, 1.9336820628677194], [4.1227204e-09, 2.9152037e-09, 3.867363111453916]], "pbc": [true, true, true], "a": 3.867364085896608, "b": 3.867363906812062, "c": 3.867363111453916, "alpha": 59.99999806634655, "beta": 59.999999598157174, "gamma": 60.00000324448679, "volume": 40.90063542469727}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.875, 0.875, 0.875], "xyz": [3.9074411636422224, 2.7629782635508655, 6.7678863325406855], "properties": {"magmom": 0.0}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.125, 0.125, 0.125], "xyz": [0.5582058805203175, 0.3947111805072665, 0.9668409046486695], "properties": {"magmom": -0.0}, "label": "Si"}]}, "output_parameters": {}}], "last_modified": "2024-04-03 20:11:45.780770", "other_parameters": {}, "@version": null} diff --git a/test_files/vasp/Si_static/transformations.json b/test_files/vasp/Si_static/transformations.json new file mode 100644 index 0000000000..b163e9d9db --- /dev/null +++ b/test_files/vasp/Si_static/transformations.json @@ -0,0 +1 @@ +{"@module": "pymatgen.alchemy.materials", "@class": "TransformedStructure", "charge": 0, "lattice": {"matrix": [[3.0140082, 0.0, 1.7401383], [1.0046690999999999, 2.8416348, 1.7401383], [0.0, 0.0, 3.4802775]], "pbc": [true, true, true], "a": 3.4802768184146116, "b": 3.480277236111046, "c": 3.4802775, "alpha": 60.000006046180225, "beta": 60.0000020760122, "gamma": 60.00001029307382, "volume": 29.807569555534993}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.25, 0.25, 0.25], "xyz": [1.004669325, 0.7104087, 1.7401385249999999], "properties": {"magmom": -0.0}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.0, 0.0, 0.0], "xyz": [0.0, 0.0, 0.0], "properties": {"magmom": -0.0}, "label": "Si"}], "history": [{"@module": "pymatgen.transformations.standard_transformations", "@class": "DeformStructureTransformation", "@version": null, "deformation": [[0.9, 0.0, 0.0], [0.0, 0.9, 0.0], [0.0, 0.0, 0.9]], "input_structure": {"@module": "pymatgen.core.structure", "@class": "Structure", "charge": 0, "lattice": {"matrix": [[3.348898, 0.0, 1.933487], [1.116299, 3.157372, 1.933487], [0.0, 0.0, 3.866975]], "pbc": [true, true, true], "a": 3.8669742426829017, "b": 3.866974706790051, "c": 3.866975, "alpha": 60.000006046180225, "beta": 60.0000020760122, "gamma": 60.00001029307382, "volume": 40.88829843008916}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.25, 0.25, 0.25], "xyz": [1.11629925, 0.789343, 1.93348725], "properties": {"magmom": -0.0}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.0, 0.0, 0.0], "xyz": [0.0, 0.0, 0.0], "properties": {"magmom": -0.0}, "label": "Si"}]}, "output_parameters": {}}], "last_modified": "2024-04-03 20:11:46.019927", "other_parameters": {}, "@version": null} diff --git a/test_files/vasp/Si_uniform/transformations.json b/test_files/vasp/Si_uniform/transformations.json new file mode 100644 index 0000000000..3b3b08d7fe --- /dev/null +++ b/test_files/vasp/Si_uniform/transformations.json @@ -0,0 +1 @@ +{"@module": "pymatgen.alchemy.materials", "@class": "TransformedStructure", "charge": 0, "lattice": {"matrix": [[3.0140082, 0.0, 1.7401383], [1.0046690999999999, 2.8416348, 1.7401383], [0.0, 0.0, 3.4802775]], "pbc": [true, true, true], "a": 3.4802768184146116, "b": 3.480277236111046, "c": 3.4802775, "alpha": 60.000006046180225, "beta": 60.0000020760122, "gamma": 60.00001029307382, "volume": 29.807569555534993}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.25, 0.25, 0.25], "xyz": [1.004669325, 0.7104087, 1.7401385249999999], "properties": {}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.0, 0.0, 0.0], "xyz": [0.0, 0.0, 0.0], "properties": {}, "label": "Si"}], "history": [{"@module": "pymatgen.transformations.standard_transformations", "@class": "DeformStructureTransformation", "@version": null, "deformation": [[0.9, 0.0, 0.0], [0.0, 0.9, 0.0], [0.0, 0.0, 0.9]], "input_structure": {"@module": "pymatgen.core.structure", "@class": "Structure", "charge": 0, "lattice": {"matrix": [[3.348898, 0.0, 1.933487], [1.116299, 3.157372, 1.933487], [0.0, 0.0, 3.866975]], "pbc": [true, true, true], "a": 3.8669742426829017, "b": 3.866974706790051, "c": 3.866975, "alpha": 60.000006046180225, "beta": 60.0000020760122, "gamma": 60.00001029307382, "volume": 40.88829843008916}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.25, 0.25, 0.25], "xyz": [1.11629925, 0.789343, 1.93348725], "properties": {}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.0, 0.0, 0.0], "xyz": [0.0, 0.0, 0.0], "properties": {}, "label": "Si"}]}, "output_parameters": {}}], "last_modified": "2024-04-03 20:11:46.299172", "other_parameters": {}, "@version": null} From c6448992ae856c0c8454e6c77d3edd5c2de8cda2 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Wed, 3 Apr 2024 13:29:41 -0700 Subject: [PATCH 14/24] Refactor test to dump transformations.json to tmpdir --- emmet-core/tests/test_task.py | 11 ++++++++--- .../vasp/Si_old_double_relax/transformations.json | 1 - test_files/vasp/Si_static/transformations.json | 1 - test_files/vasp/Si_uniform/transformations.json | 1 - 4 files changed, 8 insertions(+), 6 deletions(-) delete mode 100644 test_files/vasp/Si_old_double_relax/transformations.json delete mode 100644 test_files/vasp/Si_static/transformations.json delete mode 100644 test_files/vasp/Si_uniform/transformations.json diff --git a/emmet-core/tests/test_task.py b/emmet-core/tests/test_task.py index 4999f11216..de33e092e4 100644 --- a/emmet-core/tests/test_task.py +++ b/emmet-core/tests/test_task.py @@ -109,14 +109,16 @@ def test_output_summary(test_dir, object_name, task_name): pytest.param("SiNonSCFUniform", id="SiNonSCFUniform"), ], ) -def test_task_doc(test_dir, object_name): +def test_task_doc(test_dir, object_name, tmpdir): from monty.json import jsanitize from monty.serialization import dumpfn + import os from pymatgen.alchemy.materials import TransformedStructure from pymatgen.entries.computed_entries import ComputedEntry from pymatgen.transformations.standard_transformations import ( DeformStructureTransformation, ) + import shutil from emmet.core.tasks import TaskDoc @@ -156,8 +158,11 @@ def test_task_doc(test_dir, object_name): ], ) ts_json = jsanitize(ts.as_dict()) - dumpfn(ts, f"{dir_name}/transformations.json") - test_doc = TaskDoc.from_directory(dir_name) + dumpfn(ts, f"{tmpdir}/transformations.json") + for f in os.listdir(dir_name): + if os.path.isfile(os.path.join(dir_name, f)): + shutil.copy(os.path.join(dir_name, f), tmpdir) + test_doc = TaskDoc.from_directory(tmpdir) # if other_parameters == {}, this is popped from the TaskDoc.transformations field # seems like @version is added by monty serialization # jsanitize needed because pymatgen.core.Structure.pbc is a tuple diff --git a/test_files/vasp/Si_old_double_relax/transformations.json b/test_files/vasp/Si_old_double_relax/transformations.json deleted file mode 100644 index b9d38b3cda..0000000000 --- a/test_files/vasp/Si_old_double_relax/transformations.json +++ /dev/null @@ -1 +0,0 @@ -{"@module": "pymatgen.alchemy.materials", "@class": "TransformedStructure", "charge": 0.0, "lattice": {"matrix": [[3.0143119793126094, -9.603349200000001e-10, 1.7403138565809477], [1.004770356723228, 2.8419204979889705, 1.7403138565809475], [3.7104483600000003e-09, 2.62368333e-09, 3.4806268003085243]], "pbc": [true, true, true], "a": 3.480627677306947, "b": 3.480627516130856, "c": 3.4806268003085243, "alpha": 59.99999806634655, "beta": 59.999999598157196, "gamma": 60.00000324448679, "volume": 29.816563224604305}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.875, 0.875, 0.875], "xyz": [3.5166970472780004, 2.486680437195779, 6.0910976992866175], "properties": {"magmom": 0.0}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.125, 0.125, 0.125], "xyz": [0.5023852924682857, 0.3552400624565399, 0.8701568141838024], "properties": {"magmom": -0.0}, "label": "Si"}], "history": [{"@module": "pymatgen.transformations.standard_transformations", "@class": "DeformStructureTransformation", "@version": null, "deformation": [[0.9, 0.0, 0.0], [0.0, 0.9, 0.0], [0.0, 0.0, 0.9]], "input_structure": {"@module": "pymatgen.core.structure", "@class": "Structure", "charge": 0.0, "lattice": {"matrix": [[3.349235532569566, -1.0670388e-09, 1.9336820628677196], [1.1164115074702534, 3.1576894422099673, 1.9336820628677194], [4.1227204e-09, 2.9152037e-09, 3.867363111453916]], "pbc": [true, true, true], "a": 3.867364085896608, "b": 3.867363906812062, "c": 3.867363111453916, "alpha": 59.99999806634655, "beta": 59.999999598157174, "gamma": 60.00000324448679, "volume": 40.90063542469727}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.875, 0.875, 0.875], "xyz": [3.9074411636422224, 2.7629782635508655, 6.7678863325406855], "properties": {"magmom": 0.0}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.125, 0.125, 0.125], "xyz": [0.5582058805203175, 0.3947111805072665, 0.9668409046486695], "properties": {"magmom": -0.0}, "label": "Si"}]}, "output_parameters": {}}], "last_modified": "2024-04-03 20:11:45.780770", "other_parameters": {}, "@version": null} diff --git a/test_files/vasp/Si_static/transformations.json b/test_files/vasp/Si_static/transformations.json deleted file mode 100644 index b163e9d9db..0000000000 --- a/test_files/vasp/Si_static/transformations.json +++ /dev/null @@ -1 +0,0 @@ -{"@module": "pymatgen.alchemy.materials", "@class": "TransformedStructure", "charge": 0, "lattice": {"matrix": [[3.0140082, 0.0, 1.7401383], [1.0046690999999999, 2.8416348, 1.7401383], [0.0, 0.0, 3.4802775]], "pbc": [true, true, true], "a": 3.4802768184146116, "b": 3.480277236111046, "c": 3.4802775, "alpha": 60.000006046180225, "beta": 60.0000020760122, "gamma": 60.00001029307382, "volume": 29.807569555534993}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.25, 0.25, 0.25], "xyz": [1.004669325, 0.7104087, 1.7401385249999999], "properties": {"magmom": -0.0}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.0, 0.0, 0.0], "xyz": [0.0, 0.0, 0.0], "properties": {"magmom": -0.0}, "label": "Si"}], "history": [{"@module": "pymatgen.transformations.standard_transformations", "@class": "DeformStructureTransformation", "@version": null, "deformation": [[0.9, 0.0, 0.0], [0.0, 0.9, 0.0], [0.0, 0.0, 0.9]], "input_structure": {"@module": "pymatgen.core.structure", "@class": "Structure", "charge": 0, "lattice": {"matrix": [[3.348898, 0.0, 1.933487], [1.116299, 3.157372, 1.933487], [0.0, 0.0, 3.866975]], "pbc": [true, true, true], "a": 3.8669742426829017, "b": 3.866974706790051, "c": 3.866975, "alpha": 60.000006046180225, "beta": 60.0000020760122, "gamma": 60.00001029307382, "volume": 40.88829843008916}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.25, 0.25, 0.25], "xyz": [1.11629925, 0.789343, 1.93348725], "properties": {"magmom": -0.0}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.0, 0.0, 0.0], "xyz": [0.0, 0.0, 0.0], "properties": {"magmom": -0.0}, "label": "Si"}]}, "output_parameters": {}}], "last_modified": "2024-04-03 20:11:46.019927", "other_parameters": {}, "@version": null} diff --git a/test_files/vasp/Si_uniform/transformations.json b/test_files/vasp/Si_uniform/transformations.json deleted file mode 100644 index 3b3b08d7fe..0000000000 --- a/test_files/vasp/Si_uniform/transformations.json +++ /dev/null @@ -1 +0,0 @@ -{"@module": "pymatgen.alchemy.materials", "@class": "TransformedStructure", "charge": 0, "lattice": {"matrix": [[3.0140082, 0.0, 1.7401383], [1.0046690999999999, 2.8416348, 1.7401383], [0.0, 0.0, 3.4802775]], "pbc": [true, true, true], "a": 3.4802768184146116, "b": 3.480277236111046, "c": 3.4802775, "alpha": 60.000006046180225, "beta": 60.0000020760122, "gamma": 60.00001029307382, "volume": 29.807569555534993}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.25, 0.25, 0.25], "xyz": [1.004669325, 0.7104087, 1.7401385249999999], "properties": {}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.0, 0.0, 0.0], "xyz": [0.0, 0.0, 0.0], "properties": {}, "label": "Si"}], "history": [{"@module": "pymatgen.transformations.standard_transformations", "@class": "DeformStructureTransformation", "@version": null, "deformation": [[0.9, 0.0, 0.0], [0.0, 0.9, 0.0], [0.0, 0.0, 0.9]], "input_structure": {"@module": "pymatgen.core.structure", "@class": "Structure", "charge": 0, "lattice": {"matrix": [[3.348898, 0.0, 1.933487], [1.116299, 3.157372, 1.933487], [0.0, 0.0, 3.866975]], "pbc": [true, true, true], "a": 3.8669742426829017, "b": 3.866974706790051, "c": 3.866975, "alpha": 60.000006046180225, "beta": 60.0000020760122, "gamma": 60.00001029307382, "volume": 40.88829843008916}, "properties": {}, "sites": [{"species": [{"element": "Si", "occu": 1}], "abc": [0.25, 0.25, 0.25], "xyz": [1.11629925, 0.789343, 1.93348725], "properties": {}, "label": "Si"}, {"species": [{"element": "Si", "occu": 1}], "abc": [0.0, 0.0, 0.0], "xyz": [0.0, 0.0, 0.0], "properties": {}, "label": "Si"}]}, "output_parameters": {}}], "last_modified": "2024-04-03 20:11:46.299172", "other_parameters": {}, "@version": null} From ca4011a4361c1d6c70ad914c0184f09bc7f99024 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Thu, 11 Apr 2024 14:29:39 -0700 Subject: [PATCH 15/24] first pass removing atomate dependence for VaspCalcDb --- emmet-cli/emmet/cli/db.py | 300 +++++++++++++++++++++++++++++++++ emmet-cli/emmet/cli/utils.py | 26 +-- emmet-cli/requirements.txt | 1 - emmet-core/emmet/core/tasks.py | 7 +- emmet-core/emmet/core/utils.py | 4 + 5 files changed, 322 insertions(+), 16 deletions(-) create mode 100644 emmet-cli/emmet/cli/db.py diff --git a/emmet-cli/emmet/cli/db.py b/emmet-cli/emmet/cli/db.py new file mode 100644 index 0000000000..ea784719c5 --- /dev/null +++ b/emmet-cli/emmet/cli/db.py @@ -0,0 +1,300 @@ +""" Instantiate database objects for emmet cli. """ +from __future__ import annotations +from bson import ObjectId +import json +import logging +from maggma.core import Store +from maggma.stores import GridFSStore, MongoStore, MongoURIStore, S3Store +from monty.json import jsanitize, MontyDecoder, MontyEncoder +from pymongo import ReturnDocument +from typing import Literal, TYPE_CHECKING, Union, Optional +import zlib + +from emmet.core.utils import utcnow + +if TYPE_CHECKING: + from emmet.core.tasks import TaskDoc + from typing import Any + +logger = logging.getLogger("emmet") + +class TaskStore: + + _get_store_from_type : dict[str,Store] = { + "mongo": MongoStore, + "s3": S3Store, + "gridfs": GridFSStore, + "mongo_uri": MongoURIStore, + } + + _object_names : tuple[str,...] = ( + "dos", + "bandstructure", + "chgcar", + "locpot", + "aeccar0", + "aeccar1", + "aeccar2", + "elfcar", + ) + + def __init__( + self, + store_kwargs : dict, + store_type : Optional[Literal["mongo","s3","gridfs","mongo_uri"]] = None + ) -> None: + + self._store_kwargs = store_kwargs + self._store_type = store_type + + if all( + store_kwargs.get(k) for k in ("@module","@class",) + ): + self.store = MontyDecoder().process_decoded(store_kwargs) + + elif store_type and self._get_store_from_type.get(store_type): + store = self._get_store_from_type[store_type] + store_kwargs = { + k: v for k, v in store_kwargs.items() + if k in Store.__init__.__code__.co_varnames + store.__init__.__code__.co_varnames + } + self.store = store(**store_kwargs) + else: + raise ValueError("TaskStore cannot construct desired store!") + + self.store.connect() + self.db = self.store._coll + self.collection = self.db[store_kwargs.get("collection")] + + self.large_data_store = None + if isinstance(self.store, (MongoStore, MongoURIStore)): + gridfs_store_kwargs = store_kwargs.copy() + gridfs_store_kwargs["collection_name"] = gridfs_store_kwargs.get( + "gridfs_collection", + gridfs_store_kwargs["collection_name"] + ) + self.large_data_store = GridFSStore(**gridfs_store_kwargs) + + elif isinstance(self.store, S3Store): + self.large_data_store = self.store + + if self.large_data_store: + self.large_data_store.connect() + self.large_data_db = self.large_data_store._coll + + @classmethod + def from_db_file(cls, db_file) -> TaskStore: + from monty.serialization import loadfn + + store_kwargs = loadfn(db_file,cls=None) + if store_kwargs.get("collection") and not store_kwargs.get("collection_name"): + store_kwargs["collection_name"] = store_kwargs["collection"] + + store_kwargs.pop("aliases", None) + + if not all(store_kwargs.get(key) for key in ("username","password")): + for mode in ("admin","readonly"): + if all( + store_kwargs.get(f"{mode}_{key}") for key in ("user","password") + ): + store_kwargs["username"] = store_kwargs[f"{mode}_user"] + store_kwargs["password"] = store_kwargs[f"{mode}_password"] + break + + return cls(store_kwargs, store_type = "mongo") + + def insert(self, dct : dict, update_duplicates : bool = True) -> Union[str | None]: + """ + Insert the task document to the database collection. + + Args: + dct (dict): task document + update_duplicates (bool): whether to update the duplicates + """ + + result = self.collection.find_one( + {"dir_name": dct["dir_name"]}, ["dir_name", "task_id"] + ) + if result is None or update_duplicates: + dct["last_updated"] = utcnow() + if result is None: + logger.info("No duplicate!") + if ("task_id" not in dct) or (not dct["task_id"]): + dct["task_id"] = self.db.counter.find_one_and_update( + {"_id": "taskid"}, + {"$inc": {"c": 1}}, + return_document=ReturnDocument.AFTER, + )["c"] + logger.info(f"Inserting {dct['dir_name']} with taskid = {dct['task_id']}") + elif update_duplicates: + dct["task_id"] = result["task_id"] + logger.info(f"Updating {dct['dir_name']} with taskid = {dct['task_id']}") + dct = jsanitize(dct, allow_bson=True) + self.collection.update_one( + {"dir_name": dct["dir_name"]}, {"$set": dct}, upsert=True + ) + return dct["task_id"] + + else: + logger.info(f"Skipping duplicate {dct['dir_name']}") + + def insert_task(self, task_doc : TaskDoc) -> int: + """ + Inserts a TaskDoc into the database. + Handles putting DOS, band structure and charge density into GridFS as needed. + During testing, a percentage of runs on some clusters had corrupted AECCAR files + when even if everything else about the calculation looked OK. + So we do a quick check here and only record the AECCARs if they are valid + + Args: + task_doc (dict): the task document + Returns: + (int) - task_id of inserted document + """ + + big_data_to_store = {} + + def extract_from_calcs_reversed(obj_key : str) -> Any: + """ + Grab the data from calcs_reversed.0.obj_key and store on gridfs directly or some Maggma store + Args: + obj_key: Key of the data in calcs_reversed.0 to store + """ + calcs_r_data = task_doc["calcs_reversed"][0][obj_key] + + # remove the big object from all calcs_reversed + # this can catch situations where the drone added the data to more than one calc. + for i_calcs in range(len(task_doc["calcs_reversed"])): + if obj_key in task_doc["calcs_reversed"][i_calcs]: + del task_doc["calcs_reversed"][i_calcs][obj_key] + return calcs_r_data + + # drop the data from the task_document and keep them in a separate dictionary (big_data_to_store) + if self.large_data_store and task_doc.get("calcs_reversed"): + for data_key in self._object_names: + if data_key in task_doc["calcs_reversed"][0]: + big_data_to_store[data_key] = extract_from_calcs_reversed(data_key) + + # insert the task document + t_id = self.insert(task_doc) + + if "calcs_reversed" in task_doc: + # upload the data to a particular location and store the reference to that location in the task database + for data_key, data_val in big_data_to_store.items(): + fs_di_, compression_type_ = self.insert_object( + dct=data_val, + collection=f"{data_key}_fs", + task_id=t_id, + ) + self.collection.update_one( + {"task_id": t_id}, + { + "$set": { + f"calcs_reversed.0.{data_key}_compression": compression_type_ + } + }, + ) + self.collection.update_one( + {"task_id": t_id}, + {"$set": {f"calcs_reversed.0.{data_key}_fs_id": fs_di_}}, + ) + return t_id + + def insert_object(self, *args, **kwargs) -> tuple[int, str]: + """Insert the object into big object storage, try maggma_store if + it is available, if not try storing directly to girdfs. + + Returns: + fs_id: The id of the stored object + compression_type: The compress method of the stored object + """ + if isinstance(self.large_data_store, GridFSStore): + return self.insert_gridfs(*args, **kwargs) + else: + return self.insert_maggma_store(*args, **kwargs) + + def insert_gridfs( + self, + dct : dict, + collection : str = "fs", + compression_type : Optional[Literal["zlib"]] = "zlib", + oid : Optional[ObjectId] = None, + task_id : Optional[Union[int,str]] = None + ) -> tuple[int, str]: + """ + Insert the given document into GridFS. + + Args: + dct (dict): the document + collection (string): the GridFS collection name + compression_type (str = Literal["zlib"]or None) : Whether to compress the data using a known compressor + oid (ObjectId()): the _id of the file; if specified, it must not already exist in GridFS + task_id(int or str): the task_id to store into the gridfs metadata + Returns: + file id, the type of compression used. + """ + oid = oid or ObjectId() + if isinstance(oid,ObjectId): + oid = str(oid) + + # always perform the string conversion when inserting directly to gridfs + dct = json.dumps(dct, cls=MontyEncoder) + if compression_type == "zlib": + d = zlib.compress(dct.encode()) + + metadata = {"compression": compression_type} + if task_id: + metadata["task_id"] = task_id + # Putting task id in the metadata subdocument as per mongo specs: + # https://github.com/mongodb/specifications/blob/master/source/gridfs/gridfs-spec.rst#terms + fs_id = self.large_data_db.put(d, _id=oid, metadata=metadata) + + return fs_id, compression_type + + def insert_maggma_store( + self, + dct: Any, + collection: str, + oid: Optional[Union[str, ObjectId]] = None, + task_id: Optional[Any] = None + ) -> tuple[int, str]: + """ + Insert the given document into a Maggma store, first check if the store is already + + Args: + data: the document to be stored + collection (string): the name prefix for the maggma store + oid (str or ObjectId): the _id of the file; if specified, it must not already exist in GridFS + task_id(int or str): the task_id to store into the gridfs metadata + Returns: + file id, the type of compression used. + """ + oid = oid or ObjectId() + if isinstance(oid,ObjectId): + oid = str(oid) + + compression_type = None + + doc = { + "fs_id": oid, + "maggma_store_type": self.get_store(collection).__class__.__name__, + "compression": compression_type, + "data": dct, + } + + search_keys = ["fs_id",] + + if task_id is not None: + search_keys.append("task_id") + doc["task_id"] = str(task_id) + elif isinstance(dct, dict) and "task_id" in dct: + search_keys.append("task_id") + doc["task_id"] = str(dct["task_id"]) + + if getattr(self.large_data_store, "compression", False): + compression_type = "zlib" + doc["compression"] = "zlib" + + self.store.update([doc], search_keys) + + return oid, compression_type diff --git a/emmet-cli/emmet/cli/utils.py b/emmet-cli/emmet/cli/utils.py index b7ffea9aa6..546d9b822b 100644 --- a/emmet-cli/emmet/cli/utils.py +++ b/emmet-cli/emmet/cli/utils.py @@ -5,7 +5,6 @@ import shutil import stat from collections import defaultdict -from datetime import datetime from enum import Enum from fnmatch import fnmatch from glob import glob @@ -14,7 +13,6 @@ import click import mgzip from botocore.exceptions import EndpointConnectionError -from atomate.vasp.database import VaspCalcDb from dotty_dict import dotty from fireworks.fw_config import FW_BLOCK_FORMAT from mongogrant.client import Client @@ -22,7 +20,9 @@ from pymatgen.util.provenance import StructureNL from pymongo.errors import DocumentTooLarge from emmet.core.tasks import TaskDoc +from emmet.core.utils import utcnow from emmet.core.vasp.validation import ValidationDoc +from emmet.cli.db import TaskStore from pymatgen.entries.compatibility import MaterialsProject2020Compatibility from emmet.cli import SETTINGS @@ -64,7 +64,7 @@ def ensure_indexes(indexes, colls): def calcdb_from_mgrant(spec_or_dbfile): if os.path.exists(spec_or_dbfile): - return VaspCalcDb.from_db_file(spec_or_dbfile) + return TaskStore.from_db_file(spec_or_dbfile) client = Client() role = "rw" # NOTE need write access to source to ensure indexes @@ -72,14 +72,16 @@ def calcdb_from_mgrant(spec_or_dbfile): auth = client.get_auth(host, dbname_or_alias, role) if auth is None: raise Exception("No valid auth credentials available!") - return VaspCalcDb( - auth["host"], - 27017, - auth["db"], - "tasks", - auth["username"], - auth["password"], - authSource=auth["db"], + return TaskStore( + store_kwargs = { + "host": auth["host"], + "port": 27017, + "database": auth["db"], + "collection": "tasks", + "user": auth["username"], + "password": auth["password"], + "authSource": auth["db"], + } ) @@ -148,7 +150,7 @@ def get_subdir(dn): def get_timestamp_dir(prefix="launcher"): - time_now = datetime.utcnow().strftime(FW_BLOCK_FORMAT) + time_now = utcnow().strftime(FW_BLOCK_FORMAT) return "_".join([prefix, time_now]) diff --git a/emmet-cli/requirements.txt b/emmet-cli/requirements.txt index c0b0fd9e2d..0a15fd9b63 100644 --- a/emmet-cli/requirements.txt +++ b/emmet-cli/requirements.txt @@ -6,7 +6,6 @@ oauth2client==4.1.3 google-api-python-client==1.8.0 bravado==10.6.0 zipstream-new==1.1.7 -atomate==0.9.4 mongogrant==0.3.1 colorama==0.4.3 mgzip==0.2.1 diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index 94121c3055..aab257036e 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -3,7 +3,7 @@ import logging import re from collections import OrderedDict -from datetime import datetime, timezone +from datetime import datetime from pathlib import Path from typing import Any, Dict, List, Optional, Tuple, Type, TypeVar, Union @@ -11,6 +11,7 @@ from emmet.core.common import convert_datetime from emmet.core.mpid import MPID from emmet.core.structure import StructureMetadata +from emmet.core.utils import utcnow from emmet.core.vasp.calc_types import ( CalcType, calc_type, @@ -417,7 +418,7 @@ class TaskDoc(StructureMetadata, extra="allow"): ) last_updated: Optional[datetime] = Field( - datetime.now(timezone.utc), + utcnow(), description="Timestamp for the most recent calculation for this task document", ) @@ -690,7 +691,7 @@ def get_entry( "data": { "oxide_type": oxide_type(calcs_reversed[0].output.structure), "aspherical": calcs_reversed[0].input.parameters.get("LASPH", False), - "last_updated": str(datetime.now(timezone.utc)), + "last_updated": str(utcnow()), }, } return ComputedEntry.from_dict(entry_dict) diff --git a/emmet-core/emmet/core/utils.py b/emmet-core/emmet/core/utils.py index f48ab5b5c0..660c0ab261 100644 --- a/emmet-core/emmet/core/utils.py +++ b/emmet-core/emmet/core/utils.py @@ -343,3 +343,7 @@ class {enum_name}(ValueEnum): items = [f' {const} = "{val}"' for const, val in items.items()] return header + "\n".join(items) + +def utcnow() -> datetime.datetime: + """ Get UTC time right now. """ + return datetime.datetime.now(datetime.timezone.utc) \ No newline at end of file From 75e83e2fce9cabacafdcaceee918060277742ca8 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Thu, 11 Apr 2024 15:24:45 -0700 Subject: [PATCH 16/24] linting --- emmet-cli/emmet/cli/db.py | 81 +++++++++++++++++++--------------- emmet-cli/emmet/cli/utils.py | 2 +- emmet-core/emmet/core/utils.py | 5 ++- 3 files changed, 50 insertions(+), 38 deletions(-) diff --git a/emmet-cli/emmet/cli/db.py b/emmet-cli/emmet/cli/db.py index ea784719c5..ce15cb91ea 100644 --- a/emmet-cli/emmet/cli/db.py +++ b/emmet-cli/emmet/cli/db.py @@ -18,16 +18,16 @@ logger = logging.getLogger("emmet") -class TaskStore: - _get_store_from_type : dict[str,Store] = { +class TaskStore: + _get_store_from_type: dict[str, Store] = { "mongo": MongoStore, "s3": S3Store, "gridfs": GridFSStore, "mongo_uri": MongoURIStore, } - _object_names : tuple[str,...] = ( + _object_names: tuple[str, ...] = ( "dos", "bandstructure", "chgcar", @@ -40,28 +40,34 @@ class TaskStore: def __init__( self, - store_kwargs : dict, - store_type : Optional[Literal["mongo","s3","gridfs","mongo_uri"]] = None + store_kwargs: dict, + store_type: Optional[Literal["mongo", "s3", "gridfs", "mongo_uri"]] = None, ) -> None: - self._store_kwargs = store_kwargs self._store_type = store_type - + if all( - store_kwargs.get(k) for k in ("@module","@class",) + store_kwargs.get(k) + for k in ( + "@module", + "@class", + ) ): self.store = MontyDecoder().process_decoded(store_kwargs) - + elif store_type and self._get_store_from_type.get(store_type): - store = self._get_store_from_type[store_type] + store = self._get_store_from_type[store_type] store_kwargs = { - k: v for k, v in store_kwargs.items() - if k in Store.__init__.__code__.co_varnames + store.__init__.__code__.co_varnames + k: v + for k, v in store_kwargs.items() + if k + in Store.__init__.__code__.co_varnames + + store.__init__.__code__.co_varnames } self.store = store(**store_kwargs) else: raise ValueError("TaskStore cannot construct desired store!") - + self.store.connect() self.db = self.store._coll self.collection = self.db[store_kwargs.get("collection")] @@ -70,8 +76,7 @@ def __init__( if isinstance(self.store, (MongoStore, MongoURIStore)): gridfs_store_kwargs = store_kwargs.copy() gridfs_store_kwargs["collection_name"] = gridfs_store_kwargs.get( - "gridfs_collection", - gridfs_store_kwargs["collection_name"] + "gridfs_collection", gridfs_store_kwargs["collection_name"] ) self.large_data_store = GridFSStore(**gridfs_store_kwargs) @@ -86,24 +91,24 @@ def __init__( def from_db_file(cls, db_file) -> TaskStore: from monty.serialization import loadfn - store_kwargs = loadfn(db_file,cls=None) + store_kwargs = loadfn(db_file, cls=None) if store_kwargs.get("collection") and not store_kwargs.get("collection_name"): store_kwargs["collection_name"] = store_kwargs["collection"] store_kwargs.pop("aliases", None) - if not all(store_kwargs.get(key) for key in ("username","password")): - for mode in ("admin","readonly"): + if not all(store_kwargs.get(key) for key in ("username", "password")): + for mode in ("admin", "readonly"): if all( - store_kwargs.get(f"{mode}_{key}") for key in ("user","password") + store_kwargs.get(f"{mode}_{key}") for key in ("user", "password") ): store_kwargs["username"] = store_kwargs[f"{mode}_user"] store_kwargs["password"] = store_kwargs[f"{mode}_password"] break - return cls(store_kwargs, store_type = "mongo") + return cls(store_kwargs, store_type="mongo") - def insert(self, dct : dict, update_duplicates : bool = True) -> Union[str | None]: + def insert(self, dct: dict, update_duplicates: bool = True) -> Union[str | None]: """ Insert the task document to the database collection. @@ -125,20 +130,24 @@ def insert(self, dct : dict, update_duplicates : bool = True) -> Union[str | Non {"$inc": {"c": 1}}, return_document=ReturnDocument.AFTER, )["c"] - logger.info(f"Inserting {dct['dir_name']} with taskid = {dct['task_id']}") + logger.info( + f"Inserting {dct['dir_name']} with taskid = {dct['task_id']}" + ) elif update_duplicates: dct["task_id"] = result["task_id"] - logger.info(f"Updating {dct['dir_name']} with taskid = {dct['task_id']}") + logger.info( + f"Updating {dct['dir_name']} with taskid = {dct['task_id']}" + ) dct = jsanitize(dct, allow_bson=True) self.collection.update_one( {"dir_name": dct["dir_name"]}, {"$set": dct}, upsert=True ) return dct["task_id"] - + else: logger.info(f"Skipping duplicate {dct['dir_name']}") - def insert_task(self, task_doc : TaskDoc) -> int: + def insert_task(self, task_doc: TaskDoc) -> int: """ Inserts a TaskDoc into the database. Handles putting DOS, band structure and charge density into GridFS as needed. @@ -154,7 +163,7 @@ def insert_task(self, task_doc : TaskDoc) -> int: big_data_to_store = {} - def extract_from_calcs_reversed(obj_key : str) -> Any: + def extract_from_calcs_reversed(obj_key: str) -> Any: """ Grab the data from calcs_reversed.0.obj_key and store on gridfs directly or some Maggma store Args: @@ -215,11 +224,11 @@ def insert_object(self, *args, **kwargs) -> tuple[int, str]: def insert_gridfs( self, - dct : dict, - collection : str = "fs", - compression_type : Optional[Literal["zlib"]] = "zlib", - oid : Optional[ObjectId] = None, - task_id : Optional[Union[int,str]] = None + dct: dict, + collection: str = "fs", + compression_type: Optional[Literal["zlib"]] = "zlib", + oid: Optional[ObjectId] = None, + task_id: Optional[Union[int, str]] = None, ) -> tuple[int, str]: """ Insert the given document into GridFS. @@ -234,7 +243,7 @@ def insert_gridfs( file id, the type of compression used. """ oid = oid or ObjectId() - if isinstance(oid,ObjectId): + if isinstance(oid, ObjectId): oid = str(oid) # always perform the string conversion when inserting directly to gridfs @@ -256,7 +265,7 @@ def insert_maggma_store( dct: Any, collection: str, oid: Optional[Union[str, ObjectId]] = None, - task_id: Optional[Any] = None + task_id: Optional[Any] = None, ) -> tuple[int, str]: """ Insert the given document into a Maggma store, first check if the store is already @@ -270,7 +279,7 @@ def insert_maggma_store( file id, the type of compression used. """ oid = oid or ObjectId() - if isinstance(oid,ObjectId): + if isinstance(oid, ObjectId): oid = str(oid) compression_type = None @@ -282,7 +291,9 @@ def insert_maggma_store( "data": dct, } - search_keys = ["fs_id",] + search_keys = [ + "fs_id", + ] if task_id is not None: search_keys.append("task_id") diff --git a/emmet-cli/emmet/cli/utils.py b/emmet-cli/emmet/cli/utils.py index 546d9b822b..420c97a23f 100644 --- a/emmet-cli/emmet/cli/utils.py +++ b/emmet-cli/emmet/cli/utils.py @@ -73,7 +73,7 @@ def calcdb_from_mgrant(spec_or_dbfile): if auth is None: raise Exception("No valid auth credentials available!") return TaskStore( - store_kwargs = { + store_kwargs={ "host": auth["host"], "port": 27017, "database": auth["db"], diff --git a/emmet-core/emmet/core/utils.py b/emmet-core/emmet/core/utils.py index 660c0ab261..07293693bd 100644 --- a/emmet-core/emmet/core/utils.py +++ b/emmet-core/emmet/core/utils.py @@ -344,6 +344,7 @@ class {enum_name}(ValueEnum): return header + "\n".join(items) + def utcnow() -> datetime.datetime: - """ Get UTC time right now. """ - return datetime.datetime.now(datetime.timezone.utc) \ No newline at end of file + """Get UTC time right now.""" + return datetime.datetime.now(datetime.timezone.utc) From 9b850c0ea8ac6292089487d9e283cdce1d9ed5fb Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Mon, 15 Apr 2024 16:34:27 -0700 Subject: [PATCH 17/24] remove atomate dependence in emmet-cli --- emmet-cli/emmet/cli/db.py | 6 +++--- emmet-cli/setup.py | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/emmet-cli/emmet/cli/db.py b/emmet-cli/emmet/cli/db.py index ce15cb91ea..693511da04 100644 --- a/emmet-cli/emmet/cli/db.py +++ b/emmet-cli/emmet/cli/db.py @@ -20,6 +20,7 @@ class TaskStore: + _get_store_from_type: dict[str, Store] = { "mongo": MongoStore, "s3": S3Store, @@ -225,7 +226,6 @@ def insert_object(self, *args, **kwargs) -> tuple[int, str]: def insert_gridfs( self, dct: dict, - collection: str = "fs", compression_type: Optional[Literal["zlib"]] = "zlib", oid: Optional[ObjectId] = None, task_id: Optional[Union[int, str]] = None, @@ -268,12 +268,12 @@ def insert_maggma_store( task_id: Optional[Any] = None, ) -> tuple[int, str]: """ - Insert the given document into a Maggma store, first check if the store is already + Insert the given document into a Maggma store. Args: data: the document to be stored collection (string): the name prefix for the maggma store - oid (str or ObjectId): the _id of the file; if specified, it must not already exist in GridFS + oid (str, ObjectId, None): the _id of the file; if specified, it must not already exist in GridFS task_id(int or str): the task_id to store into the gridfs metadata Returns: file id, the type of compression used. diff --git a/emmet-cli/setup.py b/emmet-cli/setup.py index 8c29e48d8b..3fbb677e39 100644 --- a/emmet-cli/setup.py +++ b/emmet-cli/setup.py @@ -18,7 +18,6 @@ "click", "colorama", "mongogrant", - "atomate", "mgzip", "slurmpy", "github3.py", From 13b52d5e368f6d30e2d2374978c56737e8cce04d Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Mon, 15 Apr 2024 16:34:51 -0700 Subject: [PATCH 18/24] linting --- emmet-cli/emmet/cli/db.py | 1 - 1 file changed, 1 deletion(-) diff --git a/emmet-cli/emmet/cli/db.py b/emmet-cli/emmet/cli/db.py index 693511da04..49479950ee 100644 --- a/emmet-cli/emmet/cli/db.py +++ b/emmet-cli/emmet/cli/db.py @@ -20,7 +20,6 @@ class TaskStore: - _get_store_from_type: dict[str, Store] = { "mongo": MongoStore, "s3": S3Store, From 084fe61119d628a5a3375e8e24084b9dae45130c Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Tue, 21 May 2024 13:16:48 -0700 Subject: [PATCH 19/24] revert cli changes, move to separate pr --- emmet-cli/emmet/cli/db.py | 310 ----------------------------------- emmet-cli/emmet/cli/utils.py | 70 ++++---- emmet-cli/requirements.txt | 1 + emmet-cli/setup.py | 1 + 4 files changed, 39 insertions(+), 343 deletions(-) delete mode 100644 emmet-cli/emmet/cli/db.py diff --git a/emmet-cli/emmet/cli/db.py b/emmet-cli/emmet/cli/db.py deleted file mode 100644 index 49479950ee..0000000000 --- a/emmet-cli/emmet/cli/db.py +++ /dev/null @@ -1,310 +0,0 @@ -""" Instantiate database objects for emmet cli. """ -from __future__ import annotations -from bson import ObjectId -import json -import logging -from maggma.core import Store -from maggma.stores import GridFSStore, MongoStore, MongoURIStore, S3Store -from monty.json import jsanitize, MontyDecoder, MontyEncoder -from pymongo import ReturnDocument -from typing import Literal, TYPE_CHECKING, Union, Optional -import zlib - -from emmet.core.utils import utcnow - -if TYPE_CHECKING: - from emmet.core.tasks import TaskDoc - from typing import Any - -logger = logging.getLogger("emmet") - - -class TaskStore: - _get_store_from_type: dict[str, Store] = { - "mongo": MongoStore, - "s3": S3Store, - "gridfs": GridFSStore, - "mongo_uri": MongoURIStore, - } - - _object_names: tuple[str, ...] = ( - "dos", - "bandstructure", - "chgcar", - "locpot", - "aeccar0", - "aeccar1", - "aeccar2", - "elfcar", - ) - - def __init__( - self, - store_kwargs: dict, - store_type: Optional[Literal["mongo", "s3", "gridfs", "mongo_uri"]] = None, - ) -> None: - self._store_kwargs = store_kwargs - self._store_type = store_type - - if all( - store_kwargs.get(k) - for k in ( - "@module", - "@class", - ) - ): - self.store = MontyDecoder().process_decoded(store_kwargs) - - elif store_type and self._get_store_from_type.get(store_type): - store = self._get_store_from_type[store_type] - store_kwargs = { - k: v - for k, v in store_kwargs.items() - if k - in Store.__init__.__code__.co_varnames - + store.__init__.__code__.co_varnames - } - self.store = store(**store_kwargs) - else: - raise ValueError("TaskStore cannot construct desired store!") - - self.store.connect() - self.db = self.store._coll - self.collection = self.db[store_kwargs.get("collection")] - - self.large_data_store = None - if isinstance(self.store, (MongoStore, MongoURIStore)): - gridfs_store_kwargs = store_kwargs.copy() - gridfs_store_kwargs["collection_name"] = gridfs_store_kwargs.get( - "gridfs_collection", gridfs_store_kwargs["collection_name"] - ) - self.large_data_store = GridFSStore(**gridfs_store_kwargs) - - elif isinstance(self.store, S3Store): - self.large_data_store = self.store - - if self.large_data_store: - self.large_data_store.connect() - self.large_data_db = self.large_data_store._coll - - @classmethod - def from_db_file(cls, db_file) -> TaskStore: - from monty.serialization import loadfn - - store_kwargs = loadfn(db_file, cls=None) - if store_kwargs.get("collection") and not store_kwargs.get("collection_name"): - store_kwargs["collection_name"] = store_kwargs["collection"] - - store_kwargs.pop("aliases", None) - - if not all(store_kwargs.get(key) for key in ("username", "password")): - for mode in ("admin", "readonly"): - if all( - store_kwargs.get(f"{mode}_{key}") for key in ("user", "password") - ): - store_kwargs["username"] = store_kwargs[f"{mode}_user"] - store_kwargs["password"] = store_kwargs[f"{mode}_password"] - break - - return cls(store_kwargs, store_type="mongo") - - def insert(self, dct: dict, update_duplicates: bool = True) -> Union[str | None]: - """ - Insert the task document to the database collection. - - Args: - dct (dict): task document - update_duplicates (bool): whether to update the duplicates - """ - - result = self.collection.find_one( - {"dir_name": dct["dir_name"]}, ["dir_name", "task_id"] - ) - if result is None or update_duplicates: - dct["last_updated"] = utcnow() - if result is None: - logger.info("No duplicate!") - if ("task_id" not in dct) or (not dct["task_id"]): - dct["task_id"] = self.db.counter.find_one_and_update( - {"_id": "taskid"}, - {"$inc": {"c": 1}}, - return_document=ReturnDocument.AFTER, - )["c"] - logger.info( - f"Inserting {dct['dir_name']} with taskid = {dct['task_id']}" - ) - elif update_duplicates: - dct["task_id"] = result["task_id"] - logger.info( - f"Updating {dct['dir_name']} with taskid = {dct['task_id']}" - ) - dct = jsanitize(dct, allow_bson=True) - self.collection.update_one( - {"dir_name": dct["dir_name"]}, {"$set": dct}, upsert=True - ) - return dct["task_id"] - - else: - logger.info(f"Skipping duplicate {dct['dir_name']}") - - def insert_task(self, task_doc: TaskDoc) -> int: - """ - Inserts a TaskDoc into the database. - Handles putting DOS, band structure and charge density into GridFS as needed. - During testing, a percentage of runs on some clusters had corrupted AECCAR files - when even if everything else about the calculation looked OK. - So we do a quick check here and only record the AECCARs if they are valid - - Args: - task_doc (dict): the task document - Returns: - (int) - task_id of inserted document - """ - - big_data_to_store = {} - - def extract_from_calcs_reversed(obj_key: str) -> Any: - """ - Grab the data from calcs_reversed.0.obj_key and store on gridfs directly or some Maggma store - Args: - obj_key: Key of the data in calcs_reversed.0 to store - """ - calcs_r_data = task_doc["calcs_reversed"][0][obj_key] - - # remove the big object from all calcs_reversed - # this can catch situations where the drone added the data to more than one calc. - for i_calcs in range(len(task_doc["calcs_reversed"])): - if obj_key in task_doc["calcs_reversed"][i_calcs]: - del task_doc["calcs_reversed"][i_calcs][obj_key] - return calcs_r_data - - # drop the data from the task_document and keep them in a separate dictionary (big_data_to_store) - if self.large_data_store and task_doc.get("calcs_reversed"): - for data_key in self._object_names: - if data_key in task_doc["calcs_reversed"][0]: - big_data_to_store[data_key] = extract_from_calcs_reversed(data_key) - - # insert the task document - t_id = self.insert(task_doc) - - if "calcs_reversed" in task_doc: - # upload the data to a particular location and store the reference to that location in the task database - for data_key, data_val in big_data_to_store.items(): - fs_di_, compression_type_ = self.insert_object( - dct=data_val, - collection=f"{data_key}_fs", - task_id=t_id, - ) - self.collection.update_one( - {"task_id": t_id}, - { - "$set": { - f"calcs_reversed.0.{data_key}_compression": compression_type_ - } - }, - ) - self.collection.update_one( - {"task_id": t_id}, - {"$set": {f"calcs_reversed.0.{data_key}_fs_id": fs_di_}}, - ) - return t_id - - def insert_object(self, *args, **kwargs) -> tuple[int, str]: - """Insert the object into big object storage, try maggma_store if - it is available, if not try storing directly to girdfs. - - Returns: - fs_id: The id of the stored object - compression_type: The compress method of the stored object - """ - if isinstance(self.large_data_store, GridFSStore): - return self.insert_gridfs(*args, **kwargs) - else: - return self.insert_maggma_store(*args, **kwargs) - - def insert_gridfs( - self, - dct: dict, - compression_type: Optional[Literal["zlib"]] = "zlib", - oid: Optional[ObjectId] = None, - task_id: Optional[Union[int, str]] = None, - ) -> tuple[int, str]: - """ - Insert the given document into GridFS. - - Args: - dct (dict): the document - collection (string): the GridFS collection name - compression_type (str = Literal["zlib"]or None) : Whether to compress the data using a known compressor - oid (ObjectId()): the _id of the file; if specified, it must not already exist in GridFS - task_id(int or str): the task_id to store into the gridfs metadata - Returns: - file id, the type of compression used. - """ - oid = oid or ObjectId() - if isinstance(oid, ObjectId): - oid = str(oid) - - # always perform the string conversion when inserting directly to gridfs - dct = json.dumps(dct, cls=MontyEncoder) - if compression_type == "zlib": - d = zlib.compress(dct.encode()) - - metadata = {"compression": compression_type} - if task_id: - metadata["task_id"] = task_id - # Putting task id in the metadata subdocument as per mongo specs: - # https://github.com/mongodb/specifications/blob/master/source/gridfs/gridfs-spec.rst#terms - fs_id = self.large_data_db.put(d, _id=oid, metadata=metadata) - - return fs_id, compression_type - - def insert_maggma_store( - self, - dct: Any, - collection: str, - oid: Optional[Union[str, ObjectId]] = None, - task_id: Optional[Any] = None, - ) -> tuple[int, str]: - """ - Insert the given document into a Maggma store. - - Args: - data: the document to be stored - collection (string): the name prefix for the maggma store - oid (str, ObjectId, None): the _id of the file; if specified, it must not already exist in GridFS - task_id(int or str): the task_id to store into the gridfs metadata - Returns: - file id, the type of compression used. - """ - oid = oid or ObjectId() - if isinstance(oid, ObjectId): - oid = str(oid) - - compression_type = None - - doc = { - "fs_id": oid, - "maggma_store_type": self.get_store(collection).__class__.__name__, - "compression": compression_type, - "data": dct, - } - - search_keys = [ - "fs_id", - ] - - if task_id is not None: - search_keys.append("task_id") - doc["task_id"] = str(task_id) - elif isinstance(dct, dict) and "task_id" in dct: - search_keys.append("task_id") - doc["task_id"] = str(dct["task_id"]) - - if getattr(self.large_data_store, "compression", False): - compression_type = "zlib" - doc["compression"] = "zlib" - - self.store.update([doc], search_keys) - - return oid, compression_type diff --git a/emmet-cli/emmet/cli/utils.py b/emmet-cli/emmet/cli/utils.py index 420c97a23f..973e6251f0 100644 --- a/emmet-cli/emmet/cli/utils.py +++ b/emmet-cli/emmet/cli/utils.py @@ -5,6 +5,7 @@ import shutil import stat from collections import defaultdict +from datetime import datetime from enum import Enum from fnmatch import fnmatch from glob import glob @@ -13,16 +14,16 @@ import click import mgzip from botocore.exceptions import EndpointConnectionError +from atomate.vasp.database import VaspCalcDb +from atomate.vasp.drones import VaspDrone from dotty_dict import dotty from fireworks.fw_config import FW_BLOCK_FORMAT from mongogrant.client import Client from pymatgen.core import Structure from pymatgen.util.provenance import StructureNL from pymongo.errors import DocumentTooLarge -from emmet.core.tasks import TaskDoc -from emmet.core.utils import utcnow +from emmet.core.vasp.task_valid import TaskDocument from emmet.core.vasp.validation import ValidationDoc -from emmet.cli.db import TaskStore from pymatgen.entries.compatibility import MaterialsProject2020Compatibility from emmet.cli import SETTINGS @@ -64,7 +65,7 @@ def ensure_indexes(indexes, colls): def calcdb_from_mgrant(spec_or_dbfile): if os.path.exists(spec_or_dbfile): - return TaskStore.from_db_file(spec_or_dbfile) + return VaspCalcDb.from_db_file(spec_or_dbfile) client = Client() role = "rw" # NOTE need write access to source to ensure indexes @@ -72,16 +73,14 @@ def calcdb_from_mgrant(spec_or_dbfile): auth = client.get_auth(host, dbname_or_alias, role) if auth is None: raise Exception("No valid auth credentials available!") - return TaskStore( - store_kwargs={ - "host": auth["host"], - "port": 27017, - "database": auth["db"], - "collection": "tasks", - "user": auth["username"], - "password": auth["password"], - "authSource": auth["db"], - } + return VaspCalcDb( + auth["host"], + 27017, + auth["db"], + "tasks", + auth["username"], + auth["password"], + authSource=auth["db"], ) @@ -150,7 +149,7 @@ def get_subdir(dn): def get_timestamp_dir(prefix="launcher"): - time_now = utcnow().strftime(FW_BLOCK_FORMAT) + time_now = datetime.utcnow().strftime(FW_BLOCK_FORMAT) return "_".join([prefix, time_now]) @@ -383,7 +382,11 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 projection = {"tags": 1, "task_id": 1} # projection = {"tags": 1, "task_id": 1, "calcs_reversed": 1} count = 0 - + drone = VaspDrone( + additional_fields={"tags": tags}, + store_volumetric_data=ctx.params["store_volumetric_data"], + runs=ctx.params["runs"], + ) # fs_keys = ["bandstructure", "dos", "chgcar", "locpot", "elfcar"] # for i in range(3): # fs_keys.append(f"aeccar{i}") @@ -410,7 +413,13 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 logger.warning(f"{name} {launcher} already parsed -> would remove.") continue - additional_fields = {"sbxn": sbxn, "tags": []} + try: + task_doc = drone.assimilate(vaspdir) + except Exception as ex: + logger.error(f"Failed to assimilate {vaspdir}: {ex}") + continue + + task_doc["sbxn"] = sbxn snl_metas_avail = isinstance(snl_metas, dict) task_id = ( task_ids.get(launcher) if manual_taskid else task_ids[chunk_idx][count] @@ -420,7 +429,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 logger.error(f"Unable to determine task_id for {launcher}") continue - additional_fields["task_id"] = task_id + task_doc["task_id"] = task_id logger.info(f"Using {task_id} for {launcher}.") if docs: @@ -428,22 +437,17 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 # (run through set to implicitly remove duplicate tags) if docs[0]["tags"]: existing_tags = list(set(docs[0]["tags"])) - additional_fields["tags"] += existing_tags + task_doc["tags"] += existing_tags logger.info(f"Adding existing tags {existing_tags} to {tags}.") try: - task_doc = TaskDoc.from_directory( - dir_name=vaspdir, - additional_fields=additional_fields, - volumetric_files=ctx.params["store_volumetric_data"], - task_names=ctx.params["runs"], - ) - except Exception as ex: - logger.error(f"Failed to build a TaskDoc from {vaspdir}: {ex}") + task_document = TaskDocument(**task_doc) + except Exception as exc: + logger.error(f"Unable to construct a valid TaskDocument: {exc}") continue try: - validation_doc = ValidationDoc.from_task_doc(task_doc) + validation_doc = ValidationDoc.from_task_doc(task_document) except Exception as exc: logger.error(f"Unable to construct a valid ValidationDoc: {exc}") continue @@ -457,7 +461,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 try: entry = MaterialsProject2020Compatibility().process_entry( - task_doc.structure_entry + task_document.structure_entry ) except Exception as exc: logger.error(f"Unable to apply corrections: {exc}") @@ -475,7 +479,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 if references: kwargs["references"] = references - struct = task_doc.input.structure + struct = Structure.from_dict(task_doc["input"]["structure"]) snl = StructureNL(struct, authors, **kwargs) snl_dct = snl.as_dict() snl_dct.update(get_meta_from_structure(struct)) @@ -484,7 +488,7 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 logger.info(f"Created SNL object for {snl_id}.") if run: - if task_doc.state == "successful": + if task_doc["state"] == "successful": if docs and no_dupe_check: # new_calc = task_doc["calcs_reversed"][0] # existing_calc = docs[0]["calcs_reversed"][0] @@ -511,12 +515,12 @@ def parse_vasp_dirs(vaspdirs, tag, task_ids, snl_metas): # noqa: C901 # return count # TODO remove try: - target.insert_task(task_doc.model_dump(), use_gridfs=True) + target.insert_task(task_doc, use_gridfs=True) except EndpointConnectionError as exc: logger.error(f"Connection failed for {task_id}: {exc}") continue except DocumentTooLarge: - output = dotty(task_doc.calcs_reversed[0].output.as_dict()) + output = dotty(task_doc["calcs_reversed"][0]["output"]) pop_keys = [ "normalmode_eigenvecs", "force_constants", diff --git a/emmet-cli/requirements.txt b/emmet-cli/requirements.txt index 0a15fd9b63..c0b0fd9e2d 100644 --- a/emmet-cli/requirements.txt +++ b/emmet-cli/requirements.txt @@ -6,6 +6,7 @@ oauth2client==4.1.3 google-api-python-client==1.8.0 bravado==10.6.0 zipstream-new==1.1.7 +atomate==0.9.4 mongogrant==0.3.1 colorama==0.4.3 mgzip==0.2.1 diff --git a/emmet-cli/setup.py b/emmet-cli/setup.py index 3fbb677e39..8c29e48d8b 100644 --- a/emmet-cli/setup.py +++ b/emmet-cli/setup.py @@ -18,6 +18,7 @@ "click", "colorama", "mongogrant", + "atomate", "mgzip", "slurmpy", "github3.py", From 292c5d3bd21135222ac9b5f33bc4b403bc31d7d4 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Tue, 21 May 2024 13:33:24 -0700 Subject: [PATCH 20/24] decrease pymatgen version because of breaking change; awaiting release --- emmet-builders/requirements/ubuntu-latest_py3.10.txt | 2 +- emmet-builders/requirements/ubuntu-latest_py3.11.txt | 2 +- emmet-builders/requirements/ubuntu-latest_py3.9.txt | 2 +- emmet-core/requirements/ubuntu-latest_py3.10.txt | 2 +- emmet-core/requirements/ubuntu-latest_py3.11.txt | 2 +- emmet-core/requirements/ubuntu-latest_py3.9.txt | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/emmet-builders/requirements/ubuntu-latest_py3.10.txt b/emmet-builders/requirements/ubuntu-latest_py3.10.txt index 1ac009a2c5..701fd16820 100644 --- a/emmet-builders/requirements/ubuntu-latest_py3.10.txt +++ b/emmet-builders/requirements/ubuntu-latest_py3.10.txt @@ -323,7 +323,7 @@ pydash==8.0.1 # via maggma pygments==2.18.0 # via rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # chgnet # emmet-core diff --git a/emmet-builders/requirements/ubuntu-latest_py3.11.txt b/emmet-builders/requirements/ubuntu-latest_py3.11.txt index 3f4b9c8b73..3acfbc9b32 100644 --- a/emmet-builders/requirements/ubuntu-latest_py3.11.txt +++ b/emmet-builders/requirements/ubuntu-latest_py3.11.txt @@ -319,7 +319,7 @@ pydash==8.0.1 # via maggma pygments==2.18.0 # via rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # chgnet # emmet-core diff --git a/emmet-builders/requirements/ubuntu-latest_py3.9.txt b/emmet-builders/requirements/ubuntu-latest_py3.9.txt index daa5ff1fc7..1e8bbce205 100644 --- a/emmet-builders/requirements/ubuntu-latest_py3.9.txt +++ b/emmet-builders/requirements/ubuntu-latest_py3.9.txt @@ -331,7 +331,7 @@ pydash==8.0.1 # via maggma pygments==2.18.0 # via rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # chgnet # emmet-core diff --git a/emmet-core/requirements/ubuntu-latest_py3.10.txt b/emmet-core/requirements/ubuntu-latest_py3.10.txt index b39b8eeff7..b34e8df7a2 100644 --- a/emmet-core/requirements/ubuntu-latest_py3.10.txt +++ b/emmet-core/requirements/ubuntu-latest_py3.10.txt @@ -68,7 +68,7 @@ pydantic-core==2.18.2 # via pydantic pydantic-settings==2.2.1 # via emmet-core (setup.py) -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via emmet-core (setup.py) pyparsing==3.1.2 # via matplotlib diff --git a/emmet-core/requirements/ubuntu-latest_py3.11.txt b/emmet-core/requirements/ubuntu-latest_py3.11.txt index 968fbd4c92..bf2baf53ff 100644 --- a/emmet-core/requirements/ubuntu-latest_py3.11.txt +++ b/emmet-core/requirements/ubuntu-latest_py3.11.txt @@ -68,7 +68,7 @@ pydantic-core==2.18.2 # via pydantic pydantic-settings==2.2.1 # via emmet-core (setup.py) -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via emmet-core (setup.py) pyparsing==3.1.2 # via matplotlib diff --git a/emmet-core/requirements/ubuntu-latest_py3.9.txt b/emmet-core/requirements/ubuntu-latest_py3.9.txt index 049258cbd7..c6f4d5c43d 100644 --- a/emmet-core/requirements/ubuntu-latest_py3.9.txt +++ b/emmet-core/requirements/ubuntu-latest_py3.9.txt @@ -72,7 +72,7 @@ pydantic-core==2.18.2 # via pydantic pydantic-settings==2.2.1 # via emmet-core (setup.py) -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via emmet-core (setup.py) pyparsing==3.1.2 # via matplotlib From 7ab775f80825db5bfab8816b8b65196aab143dd4 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Tue, 21 May 2024 13:43:12 -0700 Subject: [PATCH 21/24] pymatgen dependency change --- emmet-builders/requirements/ubuntu-latest_py3.10.txt | 2 +- emmet-builders/requirements/ubuntu-latest_py3.11.txt | 2 +- emmet-builders/requirements/ubuntu-latest_py3.9.txt | 2 +- emmet-core/requirements/ubuntu-latest_py3.10.txt | 2 +- emmet-core/requirements/ubuntu-latest_py3.11.txt | 2 +- emmet-core/requirements/ubuntu-latest_py3.9.txt | 2 +- emmet-core/setup.py | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/emmet-builders/requirements/ubuntu-latest_py3.10.txt b/emmet-builders/requirements/ubuntu-latest_py3.10.txt index 701fd16820..1ac009a2c5 100644 --- a/emmet-builders/requirements/ubuntu-latest_py3.10.txt +++ b/emmet-builders/requirements/ubuntu-latest_py3.10.txt @@ -323,7 +323,7 @@ pydash==8.0.1 # via maggma pygments==2.18.0 # via rich -pymatgen==2024.4.13 +pymatgen==2024.5.1 # via # chgnet # emmet-core diff --git a/emmet-builders/requirements/ubuntu-latest_py3.11.txt b/emmet-builders/requirements/ubuntu-latest_py3.11.txt index 3acfbc9b32..3f4b9c8b73 100644 --- a/emmet-builders/requirements/ubuntu-latest_py3.11.txt +++ b/emmet-builders/requirements/ubuntu-latest_py3.11.txt @@ -319,7 +319,7 @@ pydash==8.0.1 # via maggma pygments==2.18.0 # via rich -pymatgen==2024.4.13 +pymatgen==2024.5.1 # via # chgnet # emmet-core diff --git a/emmet-builders/requirements/ubuntu-latest_py3.9.txt b/emmet-builders/requirements/ubuntu-latest_py3.9.txt index 1e8bbce205..daa5ff1fc7 100644 --- a/emmet-builders/requirements/ubuntu-latest_py3.9.txt +++ b/emmet-builders/requirements/ubuntu-latest_py3.9.txt @@ -331,7 +331,7 @@ pydash==8.0.1 # via maggma pygments==2.18.0 # via rich -pymatgen==2024.4.13 +pymatgen==2024.5.1 # via # chgnet # emmet-core diff --git a/emmet-core/requirements/ubuntu-latest_py3.10.txt b/emmet-core/requirements/ubuntu-latest_py3.10.txt index b34e8df7a2..b39b8eeff7 100644 --- a/emmet-core/requirements/ubuntu-latest_py3.10.txt +++ b/emmet-core/requirements/ubuntu-latest_py3.10.txt @@ -68,7 +68,7 @@ pydantic-core==2.18.2 # via pydantic pydantic-settings==2.2.1 # via emmet-core (setup.py) -pymatgen==2024.4.13 +pymatgen==2024.5.1 # via emmet-core (setup.py) pyparsing==3.1.2 # via matplotlib diff --git a/emmet-core/requirements/ubuntu-latest_py3.11.txt b/emmet-core/requirements/ubuntu-latest_py3.11.txt index bf2baf53ff..968fbd4c92 100644 --- a/emmet-core/requirements/ubuntu-latest_py3.11.txt +++ b/emmet-core/requirements/ubuntu-latest_py3.11.txt @@ -68,7 +68,7 @@ pydantic-core==2.18.2 # via pydantic pydantic-settings==2.2.1 # via emmet-core (setup.py) -pymatgen==2024.4.13 +pymatgen==2024.5.1 # via emmet-core (setup.py) pyparsing==3.1.2 # via matplotlib diff --git a/emmet-core/requirements/ubuntu-latest_py3.9.txt b/emmet-core/requirements/ubuntu-latest_py3.9.txt index c6f4d5c43d..049258cbd7 100644 --- a/emmet-core/requirements/ubuntu-latest_py3.9.txt +++ b/emmet-core/requirements/ubuntu-latest_py3.9.txt @@ -72,7 +72,7 @@ pydantic-core==2.18.2 # via pydantic pydantic-settings==2.2.1 # via emmet-core (setup.py) -pymatgen==2024.4.13 +pymatgen==2024.5.1 # via emmet-core (setup.py) pyparsing==3.1.2 # via matplotlib diff --git a/emmet-core/setup.py b/emmet-core/setup.py index 7ef8756b0d..9893f18266 100644 --- a/emmet-core/setup.py +++ b/emmet-core/setup.py @@ -27,7 +27,7 @@ }, include_package_data=True, install_requires=[ - "pymatgen>=2023.10.11", + "pymatgen<=2024.4.13", "monty>=2024.2.2", "pydantic>=2.0", "pydantic-settings>=2.0", From 2e27989b6fc577510c2367d71fd9a8825af946c3 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Tue, 21 May 2024 15:18:01 -0700 Subject: [PATCH 22/24] add batch_id to tasks, mark certain glue code for removal pending db update --- emmet-core/emmet/core/base.py | 3 ++- emmet-core/emmet/core/tasks.py | 19 +++++++++++++++++++ emmet-core/setup.py | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/emmet-core/emmet/core/base.py b/emmet-core/emmet/core/base.py index 0492dcb447..9985d80fb0 100644 --- a/emmet-core/emmet/core/base.py +++ b/emmet-core/emmet/core/base.py @@ -11,6 +11,7 @@ from emmet.core import __version__ from emmet.core.common import convert_datetime +from emmet.core.utils import utcnow T = TypeVar("T", bound="EmmetBaseModel") @@ -34,7 +35,7 @@ class EmmetMeta(BaseModel): ) build_date: Optional[datetime] = Field( # type: ignore - default_factory=datetime.utcnow, + default_factory=utcnow, description="The build date for this document.", ) diff --git a/emmet-core/emmet/core/tasks.py b/emmet-core/emmet/core/tasks.py index aab257036e..158a3c7972 100644 --- a/emmet-core/emmet/core/tasks.py +++ b/emmet-core/emmet/core/tasks.py @@ -422,6 +422,11 @@ class TaskDoc(StructureMetadata, extra="allow"): description="Timestamp for the most recent calculation for this task document", ) + batch_id: Optional[str] = Field( + None, + description="Identifier for this calculation; should provide rough information about the calculation origin and purpose.", + ) + # Note that these private fields are needed because TaskDoc permits extra info # added to the model, unlike TaskDocument. Because of this, when pydantic looks up # attrs on the model, it searches for them in the model extra dict first, and if it @@ -447,6 +452,7 @@ def model_post_init(self, __context: Any) -> None: self._run_type = RunType(temp[0]) self.task_type = TaskType(" ".join(temp[1:])) + # TODO: remove after imposing TaskDoc schema on older tasks in collection if self.structure is None: self.structure = self.calcs_reversed[0].output.structure @@ -457,6 +463,19 @@ def model_post_init(self, __context: Any) -> None: def last_updated_dict_ok(cls, v) -> datetime: return convert_datetime(cls, v) + @field_validator("batch_id", mode="before") + @classmethod + def _validate_batch_id(cls, v) -> str: + if v is not None: + invalid_chars = set( + char for char in v if (not char.isalnum()) or (char not in {"-", "_"}) + ) + if len(invalid_chars) > 0: + raise ValueError( + f"Invalid characters in batch_id:\n{' '.join(invalid_chars)}" + ) + return v + @model_validator(mode="after") def set_entry(self) -> datetime: if ( diff --git a/emmet-core/setup.py b/emmet-core/setup.py index 9893f18266..04b381aa32 100644 --- a/emmet-core/setup.py +++ b/emmet-core/setup.py @@ -27,7 +27,7 @@ }, include_package_data=True, install_requires=[ - "pymatgen<=2024.4.13", + "pymatgen==2024.4.13", "monty>=2024.2.2", "pydantic>=2.0", "pydantic-settings>=2.0", From 591861860ed6fc0fd7d2365c4bb59ad9640a7ac2 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Tue, 21 May 2024 15:48:20 -0700 Subject: [PATCH 23/24] kludge ci workflow dependency to pin pymatgen version --- .../ubuntu-latest_py3.10_extras.txt | 2 +- .../ubuntu-latest_py3.10_extras.txt-e | 524 +++++++++++++ .../ubuntu-latest_py3.11_extras.txt | 2 +- .../ubuntu-latest_py3.11_extras.txt-e | 510 +++++++++++++ .../ubuntu-latest_py3.9_extras.txt | 2 +- .../ubuntu-latest_py3.9_extras.txt-e | 541 ++++++++++++++ .../ubuntu-latest_py3.10_extras.txt | 2 +- .../ubuntu-latest_py3.10_extras.txt-e | 681 +++++++++++++++++ .../ubuntu-latest_py3.11_extras.txt | 2 +- .../ubuntu-latest_py3.11_extras.txt-e | 668 +++++++++++++++++ .../ubuntu-latest_py3.9_extras.txt | 2 +- .../ubuntu-latest_py3.9_extras.txt-e | 701 ++++++++++++++++++ .../ubuntu-latest_py3.10_extras.txt | 2 +- .../ubuntu-latest_py3.10_extras.txt-e | 687 +++++++++++++++++ .../ubuntu-latest_py3.11_extras.txt | 2 +- .../ubuntu-latest_py3.11_extras.txt-e | 674 +++++++++++++++++ .../ubuntu-latest_py3.9_extras.txt | 2 +- .../ubuntu-latest_py3.9_extras.txt-e | 533 +++++++++++++ 18 files changed, 5528 insertions(+), 9 deletions(-) create mode 100644 emmet-api/requirements/ubuntu-latest_py3.10_extras.txt-e create mode 100644 emmet-api/requirements/ubuntu-latest_py3.11_extras.txt-e create mode 100644 emmet-api/requirements/ubuntu-latest_py3.9_extras.txt-e create mode 100644 emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt-e create mode 100644 emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt-e create mode 100644 emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt-e create mode 100644 emmet-core/requirements/ubuntu-latest_py3.10_extras.txt-e create mode 100644 emmet-core/requirements/ubuntu-latest_py3.11_extras.txt-e create mode 100644 emmet-core/requirements/ubuntu-latest_py3.9_extras.txt-e diff --git a/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt b/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt index 01589a655d..2501ae65f7 100644 --- a/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt +++ b/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt @@ -336,7 +336,7 @@ pygments==2.18.0 # via # mkdocs-material # rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # emmet-core # pymatgen-analysis-alloys diff --git a/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt-e b/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt-e new file mode 100644 index 0000000000..01589a655d --- /dev/null +++ b/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt-e @@ -0,0 +1,524 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.10_extras.txt +# +aioitertools==0.11.0 + # via maggma +annotated-types==0.6.0 + # via pydantic +anyio==4.3.0 + # via + # httpx + # starlette + # watchfiles +asgi-logger==0.1.0 + # via emmet-api (setup.py) +asgiref==3.8.1 + # via asgi-logger +attrs==23.2.0 + # via + # cattrs + # ddtrace + # jsonschema + # referencing +bcrypt==4.1.3 + # via paramiko +blinker==1.8.2 + # via flask +boto3==1.34.99 + # via + # emmet-api (setup.py) + # maggma +botocore==1.34.99 + # via + # boto3 + # s3transfer +bracex==2.4 + # via wcmatch +bytecode==0.15.1 + # via ddtrace +cattrs==23.2.3 + # via ddtrace +certifi==2024.2.2 + # via + # httpcore + # httpx + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +click==8.1.7 + # via + # flask + # mkdocs + # mkdocstrings + # mongogrant + # typer + # uvicorn +colorama==0.4.6 + # via griffe +contourpy==1.2.1 + # via matplotlib +coverage[toml]==7.5.1 + # via pytest-cov +cryptography==42.0.7 + # via paramiko +csscompressor==0.9.5 + # via mkdocs-minify-plugin +cycler==0.12.1 + # via matplotlib +ddsketch==3.0.1 + # via ddtrace +ddtrace==2.8.4 + # via emmet-api (setup.py) +deprecated==1.2.14 + # via opentelemetry-api +distlib==0.3.8 + # via virtualenv +dnspython==2.6.1 + # via + # email-validator + # maggma + # pymongo +email-validator==2.1.1 + # via fastapi +emmet-core==0.83.6 + # via emmet-api (setup.py) +envier==0.5.1 + # via ddtrace +exceptiongroup==1.2.1 + # via + # anyio + # cattrs + # pytest +fastapi==0.111.0 + # via + # emmet-api (setup.py) + # fastapi-cli + # maggma +fastapi-cli==0.0.2 + # via fastapi +filelock==3.14.0 + # via virtualenv +flake8==7.0.0 + # via emmet-api (setup.py) +flask==3.0.3 + # via mongogrant +fonttools==4.51.0 + # via matplotlib +future==1.0.0 + # via uncertainties +ghp-import==2.1.0 + # via mkdocs +griffe==0.44.0 + # via mkdocstrings-python +gunicorn==22.0.0 + # via emmet-api (setup.py) +h11==0.14.0 + # via + # httpcore + # uvicorn +htmlmin2==0.1.13 + # via mkdocs-minify-plugin +httpcore==1.0.5 + # via httpx +httptools==0.6.1 + # via uvicorn +httpx==0.27.0 + # via fastapi +identify==2.5.36 + # via pre-commit +idna==3.7 + # via + # anyio + # email-validator + # httpx + # requests +importlib-metadata==7.0.0 + # via opentelemetry-api +iniconfig==2.0.0 + # via pytest +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via + # emmet-api (setup.py) + # fastapi + # flask + # mkdocs + # mkdocs-material + # mkdocstrings +jmespath==1.0.1 + # via + # boto3 + # botocore +joblib==1.4.2 + # via pymatgen +jsmin==3.0.1 + # via mkdocs-minify-plugin +jsonschema==4.22.0 + # via maggma +jsonschema-specifications==2023.12.1 + # via jsonschema +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +livereload==2.6.3 + # via emmet-api (setup.py) +maggma==0.66.0 + # via emmet-api (setup.py) +markdown==3.6 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # pymdown-extensions +markdown-it-py==3.0.0 + # via rich +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings + # werkzeug +matplotlib==3.8.4 + # via pymatgen +mccabe==0.7.0 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via + # mkdocs + # mkdocs-get-deps +mkdocs==1.6.0 + # via + # emmet-api (setup.py) + # mkdocs-autorefs + # mkdocs-awesome-pages-plugin + # mkdocs-markdownextradata-plugin + # mkdocs-material + # mkdocs-minify-plugin + # mkdocstrings +mkdocs-autorefs==1.0.1 + # via mkdocstrings +mkdocs-awesome-pages-plugin==2.9.2 + # via emmet-api (setup.py) +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-markdownextradata-plugin==0.2.5 + # via emmet-api (setup.py) +mkdocs-material==8.2.16 + # via emmet-api (setup.py) +mkdocs-material-extensions==1.3.1 + # via + # emmet-api (setup.py) + # mkdocs-material +mkdocs-minify-plugin==0.8.0 + # via emmet-api (setup.py) +mkdocstrings[python]==0.25.1 + # via + # emmet-api (setup.py) + # mkdocstrings-python +mkdocstrings-python==1.10.0 + # via mkdocstrings +mongogrant==0.3.3 + # via maggma +mongomock==4.1.2 + # via maggma +monty==2024.4.17 + # via + # emmet-core + # maggma + # pymatgen +mpmath==1.3.0 + # via sympy +msgpack==1.0.8 + # via maggma +mypy==1.10.0 + # via emmet-api (setup.py) +mypy-extensions==1.0.0 + # via + # emmet-api (setup.py) + # mypy +natsort==8.4.0 + # via mkdocs-awesome-pages-plugin +networkx==3.3 + # via pymatgen +nodeenv==1.8.0 + # via pre-commit +numpy==1.26.4 + # via + # contourpy + # maggma + # matplotlib + # pandas + # pymatgen + # scipy + # shapely + # spglib +opentelemetry-api==1.24.0 + # via ddtrace +orjson==3.10.3 + # via + # fastapi + # maggma +packaging==24.0 + # via + # gunicorn + # matplotlib + # mkdocs + # mongomock + # plotly + # pytest +palettable==3.3.3 + # via pymatgen +pandas==2.2.2 + # via pymatgen +paramiko==3.4.0 + # via sshtunnel +pathspec==0.12.1 + # via mkdocs +pillow==10.3.0 + # via matplotlib +platformdirs==4.2.1 + # via + # mkdocs-get-deps + # mkdocstrings + # virtualenv +plotly==5.22.0 + # via pymatgen +pluggy==1.5.0 + # via pytest +pre-commit==3.7.0 + # via emmet-api (setup.py) +protobuf==5.26.1 + # via ddtrace +pybtex==0.24.0 + # via + # emmet-core + # pymatgen +pycodestyle==2.11.1 + # via + # emmet-api (setup.py) + # flake8 +pycparser==2.22 + # via cffi +pydantic==2.7.1 + # via + # emmet-core + # fastapi + # maggma + # pydantic-settings +pydantic-core==2.18.2 + # via pydantic +pydantic-settings==2.2.1 + # via + # emmet-core + # maggma +pydash==8.0.1 + # via maggma +pydocstyle==6.3.0 + # via emmet-api (setup.py) +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 + # via + # mkdocs-material + # rich +pymatgen==2024.5.1 + # via + # emmet-core + # pymatgen-analysis-alloys +pymatgen-analysis-alloys==0.0.6 + # via emmet-api (setup.py) +pymdown-extensions==10.8.1 + # via + # mkdocs-material + # mkdocstrings +pymongo==4.7.1 + # via + # maggma + # mongogrant +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.2 + # via matplotlib +pytest==8.2.0 + # via + # emmet-api (setup.py) + # pytest-cov +pytest-cov==5.0.0 + # via emmet-api (setup.py) +python-dateutil==2.9.0.post0 + # via + # botocore + # ghp-import + # maggma + # matplotlib + # pandas +python-dotenv==1.0.1 + # via + # pydantic-settings + # uvicorn +python-multipart==0.0.9 + # via fastapi +pytz==2024.1 + # via pandas +pyyaml==6.0.1 + # via + # mkdocs + # mkdocs-get-deps + # mkdocs-markdownextradata-plugin + # pre-commit + # pybtex + # pymdown-extensions + # pyyaml-env-tag + # uvicorn +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.0.3 + # via maggma +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # mongogrant + # pymatgen +rich==13.7.1 + # via typer +rpds-py==0.18.1 + # via + # jsonschema + # referencing +ruamel-yaml==0.18.6 + # via + # maggma + # pymatgen +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +s3transfer==0.10.1 + # via boto3 +scipy==1.13.0 + # via pymatgen +sentinels==1.0.0 + # via mongomock +setproctitle==1.3.3 + # via emmet-api (setup.py) +shapely==2.0.4 + # via + # emmet-api (setup.py) + # pymatgen-analysis-alloys +shellingham==1.5.4 + # via typer +six==1.16.0 + # via + # ddsketch + # ddtrace + # livereload + # pybtex + # python-dateutil +sniffio==1.3.1 + # via + # anyio + # httpx +snowballstemmer==2.2.0 + # via pydocstyle +spglib==2.4.0 + # via pymatgen +sqlparse==0.5.0 + # via ddtrace +sshtunnel==0.4.0 + # via maggma +starlette==0.37.2 + # via fastapi +sympy==1.12 + # via pymatgen +tabulate==0.9.0 + # via pymatgen +tenacity==8.3.0 + # via plotly +tomli==2.0.1 + # via + # coverage + # mypy + # pytest +tornado==6.4 + # via livereload +tqdm==4.66.4 + # via + # maggma + # pymatgen +typer==0.12.3 + # via fastapi-cli +types-requests==2.31.0.20240406 + # via emmet-api (setup.py) +types-setuptools==69.5.0.20240423 + # via emmet-api (setup.py) +typing-extensions==4.11.0 + # via + # anyio + # asgiref + # cattrs + # ddtrace + # emmet-core + # fastapi + # mypy + # pydantic + # pydantic-core + # pydash + # typer + # uvicorn +tzdata==2024.1 + # via pandas +ujson==5.9.0 + # via fastapi +uncertainties==3.1.7 + # via pymatgen +urllib3==2.2.1 + # via + # botocore + # requests + # types-requests +uvicorn[standard]==0.29.0 + # via + # fastapi + # fastapi-cli + # maggma +uvloop==0.19.0 + # via uvicorn +virtualenv==20.26.1 + # via pre-commit +watchdog==4.0.0 + # via mkdocs +watchfiles==0.21.0 + # via uvicorn +wcmatch==8.5.1 + # via mkdocs-awesome-pages-plugin +websockets==12.0 + # via uvicorn +werkzeug==3.0.3 + # via flask +wincertstore==0.2 + # via emmet-api (setup.py) +wrapt==1.16.0 + # via deprecated +xmltodict==0.13.0 + # via ddtrace +zipp==3.18.1 + # via importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt b/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt index ab6a9da5fa..d2a0402a61 100644 --- a/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt +++ b/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt @@ -331,7 +331,7 @@ pygments==2.18.0 # via # mkdocs-material # rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # emmet-core # pymatgen-analysis-alloys diff --git a/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt-e b/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt-e new file mode 100644 index 0000000000..ab6a9da5fa --- /dev/null +++ b/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt-e @@ -0,0 +1,510 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.11_extras.txt +# +aioitertools==0.11.0 + # via maggma +annotated-types==0.6.0 + # via pydantic +anyio==4.3.0 + # via + # httpx + # starlette + # watchfiles +asgi-logger==0.1.0 + # via emmet-api (setup.py) +asgiref==3.8.1 + # via asgi-logger +attrs==23.2.0 + # via + # cattrs + # ddtrace + # jsonschema + # referencing +bcrypt==4.1.3 + # via paramiko +blinker==1.8.2 + # via flask +boto3==1.34.99 + # via + # emmet-api (setup.py) + # maggma +botocore==1.34.99 + # via + # boto3 + # s3transfer +bracex==2.4 + # via wcmatch +bytecode==0.15.1 + # via ddtrace +cattrs==23.2.3 + # via ddtrace +certifi==2024.2.2 + # via + # httpcore + # httpx + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +click==8.1.7 + # via + # flask + # mkdocs + # mkdocstrings + # mongogrant + # typer + # uvicorn +colorama==0.4.6 + # via griffe +contourpy==1.2.1 + # via matplotlib +coverage[toml]==7.5.1 + # via pytest-cov +cryptography==42.0.7 + # via paramiko +csscompressor==0.9.5 + # via mkdocs-minify-plugin +cycler==0.12.1 + # via matplotlib +ddsketch==3.0.1 + # via ddtrace +ddtrace==2.8.4 + # via emmet-api (setup.py) +deprecated==1.2.14 + # via opentelemetry-api +distlib==0.3.8 + # via virtualenv +dnspython==2.6.1 + # via + # email-validator + # maggma + # pymongo +email-validator==2.1.1 + # via fastapi +emmet-core==0.83.6 + # via emmet-api (setup.py) +envier==0.5.1 + # via ddtrace +fastapi==0.111.0 + # via + # emmet-api (setup.py) + # fastapi-cli + # maggma +fastapi-cli==0.0.2 + # via fastapi +filelock==3.14.0 + # via virtualenv +flake8==7.0.0 + # via emmet-api (setup.py) +flask==3.0.3 + # via mongogrant +fonttools==4.51.0 + # via matplotlib +future==1.0.0 + # via uncertainties +ghp-import==2.1.0 + # via mkdocs +griffe==0.44.0 + # via mkdocstrings-python +gunicorn==22.0.0 + # via emmet-api (setup.py) +h11==0.14.0 + # via + # httpcore + # uvicorn +htmlmin2==0.1.13 + # via mkdocs-minify-plugin +httpcore==1.0.5 + # via httpx +httptools==0.6.1 + # via uvicorn +httpx==0.27.0 + # via fastapi +identify==2.5.36 + # via pre-commit +idna==3.7 + # via + # anyio + # email-validator + # httpx + # requests +importlib-metadata==7.0.0 + # via opentelemetry-api +iniconfig==2.0.0 + # via pytest +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via + # emmet-api (setup.py) + # fastapi + # flask + # mkdocs + # mkdocs-material + # mkdocstrings +jmespath==1.0.1 + # via + # boto3 + # botocore +joblib==1.4.2 + # via pymatgen +jsmin==3.0.1 + # via mkdocs-minify-plugin +jsonschema==4.22.0 + # via maggma +jsonschema-specifications==2023.12.1 + # via jsonschema +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +livereload==2.6.3 + # via emmet-api (setup.py) +maggma==0.66.0 + # via emmet-api (setup.py) +markdown==3.6 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # pymdown-extensions +markdown-it-py==3.0.0 + # via rich +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings + # werkzeug +matplotlib==3.8.4 + # via pymatgen +mccabe==0.7.0 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via + # mkdocs + # mkdocs-get-deps +mkdocs==1.6.0 + # via + # emmet-api (setup.py) + # mkdocs-autorefs + # mkdocs-awesome-pages-plugin + # mkdocs-markdownextradata-plugin + # mkdocs-material + # mkdocs-minify-plugin + # mkdocstrings +mkdocs-autorefs==1.0.1 + # via mkdocstrings +mkdocs-awesome-pages-plugin==2.9.2 + # via emmet-api (setup.py) +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-markdownextradata-plugin==0.2.5 + # via emmet-api (setup.py) +mkdocs-material==8.2.16 + # via emmet-api (setup.py) +mkdocs-material-extensions==1.3.1 + # via + # emmet-api (setup.py) + # mkdocs-material +mkdocs-minify-plugin==0.8.0 + # via emmet-api (setup.py) +mkdocstrings[python]==0.25.1 + # via + # emmet-api (setup.py) + # mkdocstrings-python +mkdocstrings-python==1.10.0 + # via mkdocstrings +mongogrant==0.3.3 + # via maggma +mongomock==4.1.2 + # via maggma +monty==2024.4.17 + # via + # emmet-core + # maggma + # pymatgen +mpmath==1.3.0 + # via sympy +msgpack==1.0.8 + # via maggma +mypy==1.10.0 + # via emmet-api (setup.py) +mypy-extensions==1.0.0 + # via + # emmet-api (setup.py) + # mypy +natsort==8.4.0 + # via mkdocs-awesome-pages-plugin +networkx==3.3 + # via pymatgen +nodeenv==1.8.0 + # via pre-commit +numpy==1.26.4 + # via + # contourpy + # maggma + # matplotlib + # pandas + # pymatgen + # scipy + # shapely + # spglib +opentelemetry-api==1.24.0 + # via ddtrace +orjson==3.10.3 + # via + # fastapi + # maggma +packaging==24.0 + # via + # gunicorn + # matplotlib + # mkdocs + # mongomock + # plotly + # pytest +palettable==3.3.3 + # via pymatgen +pandas==2.2.2 + # via pymatgen +paramiko==3.4.0 + # via sshtunnel +pathspec==0.12.1 + # via mkdocs +pillow==10.3.0 + # via matplotlib +platformdirs==4.2.1 + # via + # mkdocs-get-deps + # mkdocstrings + # virtualenv +plotly==5.22.0 + # via pymatgen +pluggy==1.5.0 + # via pytest +pre-commit==3.7.0 + # via emmet-api (setup.py) +protobuf==5.26.1 + # via ddtrace +pybtex==0.24.0 + # via + # emmet-core + # pymatgen +pycodestyle==2.11.1 + # via + # emmet-api (setup.py) + # flake8 +pycparser==2.22 + # via cffi +pydantic==2.7.1 + # via + # emmet-core + # fastapi + # maggma + # pydantic-settings +pydantic-core==2.18.2 + # via pydantic +pydantic-settings==2.2.1 + # via + # emmet-core + # maggma +pydash==8.0.1 + # via maggma +pydocstyle==6.3.0 + # via emmet-api (setup.py) +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 + # via + # mkdocs-material + # rich +pymatgen==2024.5.1 + # via + # emmet-core + # pymatgen-analysis-alloys +pymatgen-analysis-alloys==0.0.6 + # via emmet-api (setup.py) +pymdown-extensions==10.8.1 + # via + # mkdocs-material + # mkdocstrings +pymongo==4.7.1 + # via + # maggma + # mongogrant +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.2 + # via matplotlib +pytest==8.2.0 + # via + # emmet-api (setup.py) + # pytest-cov +pytest-cov==5.0.0 + # via emmet-api (setup.py) +python-dateutil==2.9.0.post0 + # via + # botocore + # ghp-import + # maggma + # matplotlib + # pandas +python-dotenv==1.0.1 + # via + # pydantic-settings + # uvicorn +python-multipart==0.0.9 + # via fastapi +pytz==2024.1 + # via pandas +pyyaml==6.0.1 + # via + # mkdocs + # mkdocs-get-deps + # mkdocs-markdownextradata-plugin + # pre-commit + # pybtex + # pymdown-extensions + # pyyaml-env-tag + # uvicorn +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.0.3 + # via maggma +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # mongogrant + # pymatgen +rich==13.7.1 + # via typer +rpds-py==0.18.1 + # via + # jsonschema + # referencing +ruamel-yaml==0.18.6 + # via + # maggma + # pymatgen +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +s3transfer==0.10.1 + # via boto3 +scipy==1.13.0 + # via pymatgen +sentinels==1.0.0 + # via mongomock +setproctitle==1.3.3 + # via emmet-api (setup.py) +shapely==2.0.4 + # via + # emmet-api (setup.py) + # pymatgen-analysis-alloys +shellingham==1.5.4 + # via typer +six==1.16.0 + # via + # ddsketch + # ddtrace + # livereload + # pybtex + # python-dateutil +sniffio==1.3.1 + # via + # anyio + # httpx +snowballstemmer==2.2.0 + # via pydocstyle +spglib==2.4.0 + # via pymatgen +sqlparse==0.5.0 + # via ddtrace +sshtunnel==0.4.0 + # via maggma +starlette==0.37.2 + # via fastapi +sympy==1.12 + # via pymatgen +tabulate==0.9.0 + # via pymatgen +tenacity==8.3.0 + # via plotly +tornado==6.4 + # via livereload +tqdm==4.66.4 + # via + # maggma + # pymatgen +typer==0.12.3 + # via fastapi-cli +types-requests==2.31.0.20240406 + # via emmet-api (setup.py) +types-setuptools==69.5.0.20240423 + # via emmet-api (setup.py) +typing-extensions==4.11.0 + # via + # ddtrace + # emmet-core + # fastapi + # mypy + # pydantic + # pydantic-core + # pydash + # typer +tzdata==2024.1 + # via pandas +ujson==5.9.0 + # via fastapi +uncertainties==3.1.7 + # via pymatgen +urllib3==2.2.1 + # via + # botocore + # requests + # types-requests +uvicorn[standard]==0.29.0 + # via + # fastapi + # fastapi-cli + # maggma +uvloop==0.19.0 + # via uvicorn +virtualenv==20.26.1 + # via pre-commit +watchdog==4.0.0 + # via mkdocs +watchfiles==0.21.0 + # via uvicorn +wcmatch==8.5.1 + # via mkdocs-awesome-pages-plugin +websockets==12.0 + # via uvicorn +werkzeug==3.0.3 + # via flask +wincertstore==0.2 + # via emmet-api (setup.py) +wrapt==1.16.0 + # via deprecated +xmltodict==0.13.0 + # via ddtrace +zipp==3.18.1 + # via importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt b/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt index 6680b8f845..f07b2dbdd5 100644 --- a/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt +++ b/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt @@ -346,7 +346,7 @@ pygments==2.18.0 # via # mkdocs-material # rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # emmet-core # pymatgen-analysis-alloys diff --git a/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt-e b/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt-e new file mode 100644 index 0000000000..6680b8f845 --- /dev/null +++ b/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt-e @@ -0,0 +1,541 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.9_extras.txt +# +aioitertools==0.11.0 + # via maggma +annotated-types==0.6.0 + # via pydantic +anyio==4.3.0 + # via + # httpx + # starlette + # watchfiles +asgi-logger==0.1.0 + # via emmet-api (setup.py) +asgiref==3.8.1 + # via asgi-logger +attrs==23.2.0 + # via + # cattrs + # ddtrace + # jsonschema + # referencing +bcrypt==4.1.3 + # via paramiko +blinker==1.8.2 + # via flask +boto3==1.34.99 + # via + # emmet-api (setup.py) + # maggma +botocore==1.34.99 + # via + # boto3 + # s3transfer +bracex==2.4 + # via wcmatch +bytecode==0.15.1 + # via ddtrace +cattrs==23.2.3 + # via ddtrace +certifi==2024.2.2 + # via + # httpcore + # httpx + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +click==8.1.7 + # via + # flask + # mkdocs + # mkdocstrings + # mongogrant + # typer + # uvicorn +colorama==0.4.6 + # via griffe +contourpy==1.2.1 + # via matplotlib +coverage[toml]==7.5.1 + # via pytest-cov +cryptography==42.0.7 + # via paramiko +csscompressor==0.9.5 + # via mkdocs-minify-plugin +cycler==0.12.1 + # via matplotlib +ddsketch==3.0.1 + # via ddtrace +ddtrace==2.8.4 + # via emmet-api (setup.py) +deprecated==1.2.14 + # via opentelemetry-api +distlib==0.3.8 + # via virtualenv +dnspython==2.6.1 + # via + # email-validator + # maggma + # pymongo +email-validator==2.1.1 + # via fastapi +emmet-core==0.83.6 + # via emmet-api (setup.py) +envier==0.5.1 + # via ddtrace +exceptiongroup==1.2.1 + # via + # anyio + # cattrs + # pytest +fastapi==0.111.0 + # via + # emmet-api (setup.py) + # fastapi-cli + # maggma +fastapi-cli==0.0.2 + # via fastapi +filelock==3.14.0 + # via virtualenv +flake8==7.0.0 + # via emmet-api (setup.py) +flask==3.0.3 + # via mongogrant +fonttools==4.51.0 + # via matplotlib +future==1.0.0 + # via uncertainties +ghp-import==2.1.0 + # via mkdocs +griffe==0.44.0 + # via mkdocstrings-python +gunicorn==22.0.0 + # via emmet-api (setup.py) +h11==0.14.0 + # via + # httpcore + # uvicorn +htmlmin2==0.1.13 + # via mkdocs-minify-plugin +httpcore==1.0.5 + # via httpx +httptools==0.6.1 + # via uvicorn +httpx==0.27.0 + # via fastapi +identify==2.5.36 + # via pre-commit +idna==3.7 + # via + # anyio + # email-validator + # httpx + # requests +importlib-metadata==7.0.0 + # via + # flask + # markdown + # mkdocs + # mkdocs-get-deps + # mkdocstrings + # opentelemetry-api +importlib-resources==6.4.0 + # via + # matplotlib + # spglib +iniconfig==2.0.0 + # via pytest +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via + # emmet-api (setup.py) + # fastapi + # flask + # mkdocs + # mkdocs-material + # mkdocstrings +jmespath==1.0.1 + # via + # boto3 + # botocore +joblib==1.4.2 + # via pymatgen +jsmin==3.0.1 + # via mkdocs-minify-plugin +jsonschema==4.22.0 + # via maggma +jsonschema-specifications==2023.12.1 + # via jsonschema +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +livereload==2.6.3 + # via emmet-api (setup.py) +maggma==0.66.0 + # via emmet-api (setup.py) +markdown==3.6 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # pymdown-extensions +markdown-it-py==3.0.0 + # via rich +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings + # werkzeug +matplotlib==3.8.4 + # via pymatgen +mccabe==0.7.0 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via + # mkdocs + # mkdocs-get-deps +mkdocs==1.6.0 + # via + # emmet-api (setup.py) + # mkdocs-autorefs + # mkdocs-awesome-pages-plugin + # mkdocs-markdownextradata-plugin + # mkdocs-material + # mkdocs-minify-plugin + # mkdocstrings +mkdocs-autorefs==1.0.1 + # via mkdocstrings +mkdocs-awesome-pages-plugin==2.9.2 + # via emmet-api (setup.py) +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-markdownextradata-plugin==0.2.5 + # via emmet-api (setup.py) +mkdocs-material==8.2.16 + # via emmet-api (setup.py) +mkdocs-material-extensions==1.3.1 + # via + # emmet-api (setup.py) + # mkdocs-material +mkdocs-minify-plugin==0.8.0 + # via emmet-api (setup.py) +mkdocstrings[python]==0.25.1 + # via + # emmet-api (setup.py) + # mkdocstrings-python +mkdocstrings-python==1.10.0 + # via mkdocstrings +mongogrant==0.3.3 + # via maggma +mongomock==4.1.2 + # via maggma +monty==2024.4.17 + # via + # emmet-core + # maggma + # pymatgen +mpmath==1.3.0 + # via sympy +msgpack==1.0.8 + # via maggma +mypy==1.10.0 + # via emmet-api (setup.py) +mypy-extensions==1.0.0 + # via + # emmet-api (setup.py) + # mypy +natsort==8.4.0 + # via mkdocs-awesome-pages-plugin +networkx==3.2.1 + # via pymatgen +nodeenv==1.8.0 + # via pre-commit +numpy==1.26.4 + # via + # contourpy + # maggma + # matplotlib + # pandas + # pymatgen + # scipy + # shapely + # spglib +opentelemetry-api==1.24.0 + # via ddtrace +orjson==3.10.3 + # via + # fastapi + # maggma +packaging==24.0 + # via + # gunicorn + # matplotlib + # mkdocs + # mongomock + # plotly + # pytest +palettable==3.3.3 + # via pymatgen +pandas==2.2.2 + # via pymatgen +paramiko==3.4.0 + # via sshtunnel +pathspec==0.12.1 + # via mkdocs +pillow==10.3.0 + # via matplotlib +platformdirs==4.2.1 + # via + # mkdocs-get-deps + # mkdocstrings + # virtualenv +plotly==5.22.0 + # via pymatgen +pluggy==1.5.0 + # via pytest +pre-commit==3.7.0 + # via emmet-api (setup.py) +protobuf==5.26.1 + # via ddtrace +pybtex==0.24.0 + # via + # emmet-core + # pymatgen +pycodestyle==2.11.1 + # via + # emmet-api (setup.py) + # flake8 +pycparser==2.22 + # via cffi +pydantic==2.7.1 + # via + # emmet-core + # fastapi + # maggma + # pydantic-settings +pydantic-core==2.18.2 + # via pydantic +pydantic-settings==2.2.1 + # via + # emmet-core + # maggma +pydash==8.0.1 + # via maggma +pydocstyle==6.3.0 + # via emmet-api (setup.py) +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 + # via + # mkdocs-material + # rich +pymatgen==2024.5.1 + # via + # emmet-core + # pymatgen-analysis-alloys +pymatgen-analysis-alloys==0.0.6 + # via emmet-api (setup.py) +pymdown-extensions==10.8.1 + # via + # mkdocs-material + # mkdocstrings +pymongo==4.7.1 + # via + # maggma + # mongogrant +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.2 + # via matplotlib +pytest==8.2.0 + # via + # emmet-api (setup.py) + # pytest-cov +pytest-cov==5.0.0 + # via emmet-api (setup.py) +python-dateutil==2.9.0.post0 + # via + # botocore + # ghp-import + # maggma + # matplotlib + # pandas +python-dotenv==1.0.1 + # via + # pydantic-settings + # uvicorn +python-multipart==0.0.9 + # via fastapi +pytz==2024.1 + # via pandas +pyyaml==6.0.1 + # via + # mkdocs + # mkdocs-get-deps + # mkdocs-markdownextradata-plugin + # pre-commit + # pybtex + # pymdown-extensions + # pyyaml-env-tag + # uvicorn +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.0.3 + # via maggma +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # mongogrant + # pymatgen +rich==13.7.1 + # via typer +rpds-py==0.18.1 + # via + # jsonschema + # referencing +ruamel-yaml==0.18.6 + # via + # maggma + # pymatgen +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +s3transfer==0.10.1 + # via boto3 +scipy==1.13.0 + # via pymatgen +sentinels==1.0.0 + # via mongomock +setproctitle==1.3.3 + # via emmet-api (setup.py) +shapely==2.0.4 + # via + # emmet-api (setup.py) + # pymatgen-analysis-alloys +shellingham==1.5.4 + # via typer +six==1.16.0 + # via + # ddsketch + # ddtrace + # livereload + # pybtex + # python-dateutil +sniffio==1.3.1 + # via + # anyio + # httpx +snowballstemmer==2.2.0 + # via pydocstyle +spglib==2.4.0 + # via pymatgen +sqlparse==0.5.0 + # via ddtrace +sshtunnel==0.4.0 + # via maggma +starlette==0.37.2 + # via fastapi +sympy==1.12 + # via pymatgen +tabulate==0.9.0 + # via pymatgen +tenacity==8.3.0 + # via plotly +tomli==2.0.1 + # via + # coverage + # mypy + # pytest +tornado==6.4 + # via livereload +tqdm==4.66.4 + # via + # maggma + # pymatgen +typer==0.12.3 + # via fastapi-cli +types-requests==2.31.0.6 + # via emmet-api (setup.py) +types-setuptools==69.5.0.20240423 + # via emmet-api (setup.py) +types-urllib3==1.26.25.14 + # via types-requests +typing-extensions==4.11.0 + # via + # aioitertools + # anyio + # asgiref + # bytecode + # cattrs + # ddtrace + # emmet-core + # fastapi + # mkdocstrings + # mypy + # pydantic + # pydantic-core + # pydash + # starlette + # typer + # uvicorn +tzdata==2024.1 + # via pandas +ujson==5.9.0 + # via fastapi +uncertainties==3.1.7 + # via pymatgen +urllib3==1.26.18 + # via + # botocore + # requests +uvicorn[standard]==0.29.0 + # via + # fastapi + # fastapi-cli + # maggma +uvloop==0.19.0 + # via uvicorn +virtualenv==20.26.1 + # via pre-commit +watchdog==4.0.0 + # via mkdocs +watchfiles==0.21.0 + # via uvicorn +wcmatch==8.5.1 + # via mkdocs-awesome-pages-plugin +websockets==12.0 + # via uvicorn +werkzeug==3.0.3 + # via flask +wincertstore==0.2 + # via emmet-api (setup.py) +wrapt==1.16.0 + # via deprecated +xmltodict==0.13.0 + # via ddtrace +zipp==3.18.1 + # via + # importlib-metadata + # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt b/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt index a93aa1d7bc..6b71fbadb3 100644 --- a/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt +++ b/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt @@ -440,7 +440,7 @@ pygments==2.18.0 # via # mkdocs-material # rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # chgnet # emmet-core diff --git a/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt-e b/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt-e new file mode 100644 index 0000000000..a93aa1d7bc --- /dev/null +++ b/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt-e @@ -0,0 +1,681 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.10_extras.txt +# +aiohttp==3.9.5 + # via fsspec +aioitertools==0.11.0 + # via maggma +aiosignal==1.3.1 + # via aiohttp +annotated-types==0.6.0 + # via pydantic +anyio==4.3.0 + # via + # httpx + # starlette + # watchfiles +ase==3.22.1 + # via + # chgnet + # matcalc + # matgl +async-timeout==4.0.3 + # via aiohttp +attrs==23.2.0 + # via + # aiohttp + # jsonschema + # referencing +bcrypt==4.1.3 + # via paramiko +blinker==1.8.2 + # via flask +boto3==1.34.99 + # via maggma +botocore==1.34.99 + # via + # boto3 + # s3transfer +bracex==2.4 + # via wcmatch +certifi==2024.2.2 + # via + # httpcore + # httpx + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +chgnet==0.3.5 + # via emmet-core +click==8.1.7 + # via + # flask + # mkdocs + # mkdocstrings + # mongogrant + # typer + # uvicorn +colorama==0.4.6 + # via + # griffe + # pretty-errors +contourpy==1.2.1 + # via matplotlib +coverage[toml]==7.5.1 + # via pytest-cov +cryptography==42.0.7 + # via paramiko +csscompressor==0.9.5 + # via mkdocs-minify-plugin +cycler==0.12.1 + # via matplotlib +cython==3.0.10 + # via chgnet +dgl==2.1.0 + # via matgl +distlib==0.3.8 + # via virtualenv +dnspython==2.6.1 + # via + # email-validator + # maggma + # pymongo +email-validator==2.1.1 + # via fastapi +emmet-core[all,ml]==0.83.6 + # via + # emmet-builders (setup.py) + # mp-api +exceptiongroup==1.2.1 + # via + # anyio + # pytest +fastapi==0.111.0 + # via + # fastapi-cli + # maggma +fastapi-cli==0.0.2 + # via fastapi +filelock==3.14.0 + # via + # torch + # triton + # virtualenv +flake8==7.0.0 + # via emmet-builders (setup.py) +flask==3.0.3 + # via mongogrant +fonttools==4.51.0 + # via matplotlib +frozenlist==1.4.1 + # via + # aiohttp + # aiosignal +fsspec[http]==2024.3.1 + # via + # pytorch-lightning + # torch +future==1.0.0 + # via uncertainties +ghp-import==2.1.0 + # via mkdocs +griffe==0.44.0 + # via mkdocstrings-python +h11==0.14.0 + # via + # httpcore + # uvicorn +h5py==3.11.0 + # via phonopy +htmlmin2==0.1.13 + # via mkdocs-minify-plugin +httpcore==1.0.5 + # via httpx +httptools==0.6.1 + # via uvicorn +httpx==0.27.0 + # via fastapi +identify==2.5.36 + # via pre-commit +idna==3.7 + # via + # anyio + # email-validator + # httpx + # requests + # yarl +inflect==7.2.1 + # via robocrys +iniconfig==2.0.0 + # via pytest +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via + # emmet-builders (setup.py) + # fastapi + # flask + # mkdocs + # mkdocs-material + # mkdocstrings + # torch +jmespath==1.0.1 + # via + # boto3 + # botocore +joblib==1.4.2 + # via + # matcalc + # pymatgen + # pymatgen-analysis-diffusion + # scikit-learn +jsmin==3.0.1 + # via mkdocs-minify-plugin +jsonschema==4.22.0 + # via maggma +jsonschema-specifications==2023.12.1 + # via jsonschema +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +lightning-utilities==0.11.2 + # via + # pytorch-lightning + # torchmetrics +livereload==2.6.3 + # via emmet-builders (setup.py) +maggma==0.66.0 + # via + # emmet-builders (setup.py) + # mp-api +markdown==3.6 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # pymdown-extensions +markdown-it-py==3.0.0 + # via rich +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings + # werkzeug +matcalc==0.0.4 + # via emmet-core +matgl==1.0.0 + # via emmet-core +matminer==0.9.2 + # via + # emmet-builders (setup.py) + # robocrys +matplotlib==3.8.4 + # via + # ase + # phonopy + # pymatgen +mccabe==0.7.0 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via + # mkdocs + # mkdocs-get-deps +mkdocs==1.6.0 + # via + # emmet-builders (setup.py) + # mkdocs-autorefs + # mkdocs-awesome-pages-plugin + # mkdocs-markdownextradata-plugin + # mkdocs-material + # mkdocs-minify-plugin + # mkdocstrings +mkdocs-autorefs==1.0.1 + # via mkdocstrings +mkdocs-awesome-pages-plugin==2.9.2 + # via emmet-builders (setup.py) +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-markdownextradata-plugin==0.2.5 + # via emmet-builders (setup.py) +mkdocs-material==8.2.16 + # via emmet-builders (setup.py) +mkdocs-material-extensions==1.3.1 + # via + # emmet-builders (setup.py) + # mkdocs-material +mkdocs-minify-plugin==0.8.0 + # via emmet-builders (setup.py) +mkdocstrings[python]==0.25.1 + # via + # emmet-builders (setup.py) + # mkdocstrings-python +mkdocstrings-python==1.10.0 + # via mkdocstrings +mongogrant==0.3.3 + # via maggma +mongomock==4.1.2 + # via maggma +monty==2024.4.17 + # via + # emmet-core + # maggma + # matminer + # mp-api + # pymatgen + # robocrys +more-itertools==10.2.0 + # via inflect +mp-api==0.41.2 + # via robocrys +mpmath==1.3.0 + # via sympy +msgpack==1.0.8 + # via + # maggma + # mp-api +multidict==6.0.5 + # via + # aiohttp + # yarl +mypy==1.10.0 + # via emmet-builders (setup.py) +mypy-extensions==1.0.0 + # via + # emmet-builders (setup.py) + # mypy +natsort==8.4.0 + # via mkdocs-awesome-pages-plugin +networkx==3.3 + # via + # dgl + # pymatgen + # robocrys + # torch +nodeenv==1.8.0 + # via pre-commit +numpy==1.26.4 + # via + # ase + # chgnet + # contourpy + # dgl + # h5py + # maggma + # matminer + # matplotlib + # pandas + # phonopy + # pymatgen + # pytorch-lightning + # robocrys + # scikit-learn + # scipy + # seekpath + # shapely + # spglib + # torchmetrics +nvidia-cublas-cu12==12.1.3.1 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch +nvidia-cuda-cupti-cu12==12.1.105 + # via torch +nvidia-cuda-nvrtc-cu12==12.1.105 + # via torch +nvidia-cuda-runtime-cu12==12.1.105 + # via torch +nvidia-cudnn-cu12==8.9.2.26 + # via torch +nvidia-cufft-cu12==11.0.2.54 + # via torch +nvidia-curand-cu12==10.3.2.106 + # via torch +nvidia-cusolver-cu12==11.4.5.107 + # via torch +nvidia-cusparse-cu12==12.1.0.106 + # via + # nvidia-cusolver-cu12 + # torch +nvidia-ml-py3==7.352.0 + # via chgnet +nvidia-nccl-cu12==2.20.5 + # via torch +nvidia-nvjitlink-cu12==12.4.127 + # via + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 +nvidia-nvtx-cu12==12.1.105 + # via torch +orjson==3.10.3 + # via + # fastapi + # maggma +packaging==24.0 + # via + # lightning-utilities + # matplotlib + # mkdocs + # mongomock + # plotly + # pytest + # pytorch-lightning + # torchmetrics +palettable==3.3.3 + # via pymatgen +pandas==2.2.2 + # via + # matminer + # pymatgen +paramiko==3.4.0 + # via sshtunnel +pathspec==0.12.1 + # via mkdocs +phonopy==2.23.1 + # via matcalc +pillow==10.3.0 + # via matplotlib +platformdirs==4.2.1 + # via + # mkdocs-get-deps + # mkdocstrings + # virtualenv +plotly==5.22.0 + # via pymatgen +pluggy==1.5.0 + # via pytest +pre-commit==3.7.0 + # via emmet-builders (setup.py) +pretty-errors==1.2.25 + # via torchmetrics +psutil==5.9.8 + # via dgl +pubchempy==1.0.4 + # via robocrys +pybtex==0.24.0 + # via + # emmet-core + # pymatgen + # robocrys +pycodestyle==2.11.1 + # via + # emmet-builders (setup.py) + # flake8 +pycparser==2.22 + # via cffi +pydantic==2.7.1 + # via + # emmet-core + # fastapi + # maggma + # pydantic-settings +pydantic-core==2.18.2 + # via pydantic +pydantic-settings==2.2.1 + # via + # emmet-core + # maggma +pydash==8.0.1 + # via maggma +pydocstyle==6.3.0 + # via emmet-builders (setup.py) +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 + # via + # mkdocs-material + # rich +pymatgen==2024.5.1 + # via + # chgnet + # emmet-core + # matcalc + # matgl + # matminer + # mp-api + # pymatgen-analysis-alloys + # pymatgen-analysis-diffusion + # robocrys +pymatgen-analysis-alloys==0.0.6 + # via emmet-core +pymatgen-analysis-diffusion==2023.8.15 + # via emmet-core +pymdown-extensions==10.8.1 + # via + # mkdocs-material + # mkdocstrings +pymongo==4.7.1 + # via + # maggma + # matminer + # mongogrant +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.2 + # via matplotlib +pytest==8.2.0 + # via + # emmet-builders (setup.py) + # pytest-cov +pytest-cov==5.0.0 + # via emmet-builders (setup.py) +python-dateutil==2.9.0.post0 + # via + # botocore + # ghp-import + # maggma + # matplotlib + # pandas +python-dotenv==1.0.1 + # via + # pydantic-settings + # uvicorn +python-multipart==0.0.9 + # via fastapi +pytorch-lightning==2.2.4 + # via matgl +pytz==2024.1 + # via pandas +pyyaml==6.0.1 + # via + # mkdocs + # mkdocs-get-deps + # mkdocs-markdownextradata-plugin + # phonopy + # pre-commit + # pybtex + # pymdown-extensions + # pytorch-lightning + # pyyaml-env-tag + # uvicorn +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.0.3 + # via maggma +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # dgl + # matminer + # mongogrant + # mp-api + # pymatgen + # torchdata +rich==13.7.1 + # via typer +robocrys==0.2.9 + # via emmet-core +rpds-py==0.18.1 + # via + # jsonschema + # referencing +ruamel-yaml==0.18.6 + # via + # maggma + # pymatgen + # robocrys +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +s3transfer==0.10.1 + # via boto3 +scikit-learn==1.4.2 + # via matminer +scipy==1.13.0 + # via + # ase + # dgl + # pymatgen + # robocrys + # scikit-learn +seekpath==2.1.0 + # via emmet-core +sentinels==1.0.0 + # via mongomock +shapely==2.0.4 + # via pymatgen-analysis-alloys +shellingham==1.5.4 + # via typer +six==1.16.0 + # via + # livereload + # pybtex + # python-dateutil +smart-open==7.0.4 + # via mp-api +sniffio==1.3.1 + # via + # anyio + # httpx +snowballstemmer==2.2.0 + # via pydocstyle +spglib==2.4.0 + # via + # phonopy + # pymatgen + # robocrys + # seekpath +sshtunnel==0.4.0 + # via maggma +starlette==0.37.2 + # via fastapi +sympy==1.12 + # via + # matminer + # pymatgen + # torch +tabulate==0.9.0 + # via pymatgen +tenacity==8.3.0 + # via plotly +threadpoolctl==3.5.0 + # via scikit-learn +tomli==2.0.1 + # via + # coverage + # mypy + # pytest +torch==2.3.0 + # via + # chgnet + # matgl + # pytorch-lightning + # torchdata + # torchmetrics +torchdata==0.7.1 + # via dgl +torchmetrics==1.4.0 + # via pytorch-lightning +tornado==6.4 + # via livereload +tqdm==4.66.4 + # via + # dgl + # maggma + # matminer + # pymatgen + # pytorch-lightning +triton==2.3.0 + # via torch +typeguard==4.2.1 + # via inflect +typer==0.12.3 + # via fastapi-cli +types-requests==2.31.0.20240406 + # via emmet-builders (setup.py) +types-setuptools==69.5.0.20240423 + # via emmet-builders (setup.py) +typing-extensions==4.11.0 + # via + # anyio + # emmet-core + # fastapi + # inflect + # lightning-utilities + # mp-api + # mypy + # pydantic + # pydantic-core + # pydash + # pytorch-lightning + # torch + # typeguard + # typer + # uvicorn +tzdata==2024.1 + # via pandas +ujson==5.9.0 + # via fastapi +uncertainties==3.1.7 + # via pymatgen +urllib3==2.2.1 + # via + # botocore + # requests + # torchdata + # types-requests +uvicorn[standard]==0.29.0 + # via + # fastapi + # fastapi-cli + # maggma +uvloop==0.19.0 + # via uvicorn +virtualenv==20.26.1 + # via pre-commit +watchdog==4.0.0 + # via mkdocs +watchfiles==0.21.0 + # via uvicorn +wcmatch==8.5.1 + # via mkdocs-awesome-pages-plugin +websockets==12.0 + # via uvicorn +werkzeug==3.0.3 + # via flask +wincertstore==0.2 + # via emmet-builders (setup.py) +wrapt==1.16.0 + # via smart-open +yarl==1.9.4 + # via aiohttp + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt b/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt index 45aab844a1..c1c66618f3 100644 --- a/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt +++ b/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt @@ -434,7 +434,7 @@ pygments==2.18.0 # via # mkdocs-material # rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # chgnet # emmet-core diff --git a/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt-e b/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt-e new file mode 100644 index 0000000000..45aab844a1 --- /dev/null +++ b/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt-e @@ -0,0 +1,668 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.11_extras.txt +# +aiohttp==3.9.5 + # via fsspec +aioitertools==0.11.0 + # via maggma +aiosignal==1.3.1 + # via aiohttp +annotated-types==0.6.0 + # via pydantic +anyio==4.3.0 + # via + # httpx + # starlette + # watchfiles +ase==3.22.1 + # via + # chgnet + # matcalc + # matgl +attrs==23.2.0 + # via + # aiohttp + # jsonschema + # referencing +bcrypt==4.1.3 + # via paramiko +blinker==1.8.2 + # via flask +boto3==1.34.99 + # via maggma +botocore==1.34.99 + # via + # boto3 + # s3transfer +bracex==2.4 + # via wcmatch +certifi==2024.2.2 + # via + # httpcore + # httpx + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +chgnet==0.3.5 + # via emmet-core +click==8.1.7 + # via + # flask + # mkdocs + # mkdocstrings + # mongogrant + # typer + # uvicorn +colorama==0.4.6 + # via + # griffe + # pretty-errors +contourpy==1.2.1 + # via matplotlib +coverage[toml]==7.5.1 + # via pytest-cov +cryptography==42.0.7 + # via paramiko +csscompressor==0.9.5 + # via mkdocs-minify-plugin +cycler==0.12.1 + # via matplotlib +cython==3.0.10 + # via chgnet +dgl==2.1.0 + # via matgl +distlib==0.3.8 + # via virtualenv +dnspython==2.6.1 + # via + # email-validator + # maggma + # pymongo +email-validator==2.1.1 + # via fastapi +emmet-core[all,ml]==0.83.6 + # via + # emmet-builders (setup.py) + # mp-api +fastapi==0.111.0 + # via + # fastapi-cli + # maggma +fastapi-cli==0.0.2 + # via fastapi +filelock==3.14.0 + # via + # torch + # triton + # virtualenv +flake8==7.0.0 + # via emmet-builders (setup.py) +flask==3.0.3 + # via mongogrant +fonttools==4.51.0 + # via matplotlib +frozenlist==1.4.1 + # via + # aiohttp + # aiosignal +fsspec[http]==2024.3.1 + # via + # pytorch-lightning + # torch +future==1.0.0 + # via uncertainties +ghp-import==2.1.0 + # via mkdocs +griffe==0.44.0 + # via mkdocstrings-python +h11==0.14.0 + # via + # httpcore + # uvicorn +h5py==3.11.0 + # via phonopy +htmlmin2==0.1.13 + # via mkdocs-minify-plugin +httpcore==1.0.5 + # via httpx +httptools==0.6.1 + # via uvicorn +httpx==0.27.0 + # via fastapi +identify==2.5.36 + # via pre-commit +idna==3.7 + # via + # anyio + # email-validator + # httpx + # requests + # yarl +inflect==7.2.1 + # via robocrys +iniconfig==2.0.0 + # via pytest +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via + # emmet-builders (setup.py) + # fastapi + # flask + # mkdocs + # mkdocs-material + # mkdocstrings + # torch +jmespath==1.0.1 + # via + # boto3 + # botocore +joblib==1.4.2 + # via + # matcalc + # pymatgen + # pymatgen-analysis-diffusion + # scikit-learn +jsmin==3.0.1 + # via mkdocs-minify-plugin +jsonschema==4.22.0 + # via maggma +jsonschema-specifications==2023.12.1 + # via jsonschema +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +lightning-utilities==0.11.2 + # via + # pytorch-lightning + # torchmetrics +livereload==2.6.3 + # via emmet-builders (setup.py) +maggma==0.66.0 + # via + # emmet-builders (setup.py) + # mp-api +markdown==3.6 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # pymdown-extensions +markdown-it-py==3.0.0 + # via rich +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings + # werkzeug +matcalc==0.0.4 + # via emmet-core +matgl==1.0.0 + # via emmet-core +matminer==0.9.2 + # via + # emmet-builders (setup.py) + # robocrys +matplotlib==3.8.4 + # via + # ase + # phonopy + # pymatgen +mccabe==0.7.0 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via + # mkdocs + # mkdocs-get-deps +mkdocs==1.6.0 + # via + # emmet-builders (setup.py) + # mkdocs-autorefs + # mkdocs-awesome-pages-plugin + # mkdocs-markdownextradata-plugin + # mkdocs-material + # mkdocs-minify-plugin + # mkdocstrings +mkdocs-autorefs==1.0.1 + # via mkdocstrings +mkdocs-awesome-pages-plugin==2.9.2 + # via emmet-builders (setup.py) +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-markdownextradata-plugin==0.2.5 + # via emmet-builders (setup.py) +mkdocs-material==8.2.16 + # via emmet-builders (setup.py) +mkdocs-material-extensions==1.3.1 + # via + # emmet-builders (setup.py) + # mkdocs-material +mkdocs-minify-plugin==0.8.0 + # via emmet-builders (setup.py) +mkdocstrings[python]==0.25.1 + # via + # emmet-builders (setup.py) + # mkdocstrings-python +mkdocstrings-python==1.10.0 + # via mkdocstrings +mongogrant==0.3.3 + # via maggma +mongomock==4.1.2 + # via maggma +monty==2024.4.17 + # via + # emmet-core + # maggma + # matminer + # mp-api + # pymatgen + # robocrys +more-itertools==10.2.0 + # via inflect +mp-api==0.41.2 + # via robocrys +mpmath==1.3.0 + # via sympy +msgpack==1.0.8 + # via + # maggma + # mp-api +multidict==6.0.5 + # via + # aiohttp + # yarl +mypy==1.10.0 + # via emmet-builders (setup.py) +mypy-extensions==1.0.0 + # via + # emmet-builders (setup.py) + # mypy +natsort==8.4.0 + # via mkdocs-awesome-pages-plugin +networkx==3.3 + # via + # dgl + # pymatgen + # robocrys + # torch +nodeenv==1.8.0 + # via pre-commit +numpy==1.26.4 + # via + # ase + # chgnet + # contourpy + # dgl + # h5py + # maggma + # matminer + # matplotlib + # pandas + # phonopy + # pymatgen + # pytorch-lightning + # robocrys + # scikit-learn + # scipy + # seekpath + # shapely + # spglib + # torchmetrics +nvidia-cublas-cu12==12.1.3.1 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch +nvidia-cuda-cupti-cu12==12.1.105 + # via torch +nvidia-cuda-nvrtc-cu12==12.1.105 + # via torch +nvidia-cuda-runtime-cu12==12.1.105 + # via torch +nvidia-cudnn-cu12==8.9.2.26 + # via torch +nvidia-cufft-cu12==11.0.2.54 + # via torch +nvidia-curand-cu12==10.3.2.106 + # via torch +nvidia-cusolver-cu12==11.4.5.107 + # via torch +nvidia-cusparse-cu12==12.1.0.106 + # via + # nvidia-cusolver-cu12 + # torch +nvidia-ml-py3==7.352.0 + # via chgnet +nvidia-nccl-cu12==2.20.5 + # via torch +nvidia-nvjitlink-cu12==12.4.127 + # via + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 +nvidia-nvtx-cu12==12.1.105 + # via torch +orjson==3.10.3 + # via + # fastapi + # maggma +packaging==24.0 + # via + # lightning-utilities + # matplotlib + # mkdocs + # mongomock + # plotly + # pytest + # pytorch-lightning + # torchmetrics +palettable==3.3.3 + # via pymatgen +pandas==2.2.2 + # via + # matminer + # pymatgen +paramiko==3.4.0 + # via sshtunnel +pathspec==0.12.1 + # via mkdocs +phonopy==2.23.1 + # via matcalc +pillow==10.3.0 + # via matplotlib +platformdirs==4.2.1 + # via + # mkdocs-get-deps + # mkdocstrings + # virtualenv +plotly==5.22.0 + # via pymatgen +pluggy==1.5.0 + # via pytest +pre-commit==3.7.0 + # via emmet-builders (setup.py) +pretty-errors==1.2.25 + # via torchmetrics +psutil==5.9.8 + # via dgl +pubchempy==1.0.4 + # via robocrys +pybtex==0.24.0 + # via + # emmet-core + # pymatgen + # robocrys +pycodestyle==2.11.1 + # via + # emmet-builders (setup.py) + # flake8 +pycparser==2.22 + # via cffi +pydantic==2.7.1 + # via + # emmet-core + # fastapi + # maggma + # pydantic-settings +pydantic-core==2.18.2 + # via pydantic +pydantic-settings==2.2.1 + # via + # emmet-core + # maggma +pydash==8.0.1 + # via maggma +pydocstyle==6.3.0 + # via emmet-builders (setup.py) +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 + # via + # mkdocs-material + # rich +pymatgen==2024.5.1 + # via + # chgnet + # emmet-core + # matcalc + # matgl + # matminer + # mp-api + # pymatgen-analysis-alloys + # pymatgen-analysis-diffusion + # robocrys +pymatgen-analysis-alloys==0.0.6 + # via emmet-core +pymatgen-analysis-diffusion==2023.8.15 + # via emmet-core +pymdown-extensions==10.8.1 + # via + # mkdocs-material + # mkdocstrings +pymongo==4.7.1 + # via + # maggma + # matminer + # mongogrant +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.2 + # via matplotlib +pytest==8.2.0 + # via + # emmet-builders (setup.py) + # pytest-cov +pytest-cov==5.0.0 + # via emmet-builders (setup.py) +python-dateutil==2.9.0.post0 + # via + # botocore + # ghp-import + # maggma + # matplotlib + # pandas +python-dotenv==1.0.1 + # via + # pydantic-settings + # uvicorn +python-multipart==0.0.9 + # via fastapi +pytorch-lightning==2.2.4 + # via matgl +pytz==2024.1 + # via pandas +pyyaml==6.0.1 + # via + # mkdocs + # mkdocs-get-deps + # mkdocs-markdownextradata-plugin + # phonopy + # pre-commit + # pybtex + # pymdown-extensions + # pytorch-lightning + # pyyaml-env-tag + # uvicorn +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.0.3 + # via maggma +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # dgl + # matminer + # mongogrant + # mp-api + # pymatgen + # torchdata +rich==13.7.1 + # via typer +robocrys==0.2.9 + # via emmet-core +rpds-py==0.18.1 + # via + # jsonschema + # referencing +ruamel-yaml==0.18.6 + # via + # maggma + # pymatgen + # robocrys +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +s3transfer==0.10.1 + # via boto3 +scikit-learn==1.4.2 + # via matminer +scipy==1.13.0 + # via + # ase + # dgl + # pymatgen + # robocrys + # scikit-learn +seekpath==2.1.0 + # via emmet-core +sentinels==1.0.0 + # via mongomock +shapely==2.0.4 + # via pymatgen-analysis-alloys +shellingham==1.5.4 + # via typer +six==1.16.0 + # via + # livereload + # pybtex + # python-dateutil +smart-open==7.0.4 + # via mp-api +sniffio==1.3.1 + # via + # anyio + # httpx +snowballstemmer==2.2.0 + # via pydocstyle +spglib==2.4.0 + # via + # phonopy + # pymatgen + # robocrys + # seekpath +sshtunnel==0.4.0 + # via maggma +starlette==0.37.2 + # via fastapi +sympy==1.12 + # via + # matminer + # pymatgen + # torch +tabulate==0.9.0 + # via pymatgen +tenacity==8.3.0 + # via plotly +threadpoolctl==3.5.0 + # via scikit-learn +torch==2.3.0 + # via + # chgnet + # matgl + # pytorch-lightning + # torchdata + # torchmetrics +torchdata==0.7.1 + # via dgl +torchmetrics==1.4.0 + # via pytorch-lightning +tornado==6.4 + # via livereload +tqdm==4.66.4 + # via + # dgl + # maggma + # matminer + # pymatgen + # pytorch-lightning +triton==2.3.0 + # via torch +typeguard==4.2.1 + # via inflect +typer==0.12.3 + # via fastapi-cli +types-requests==2.31.0.20240406 + # via emmet-builders (setup.py) +types-setuptools==69.5.0.20240423 + # via emmet-builders (setup.py) +typing-extensions==4.11.0 + # via + # emmet-core + # fastapi + # inflect + # lightning-utilities + # mp-api + # mypy + # pydantic + # pydantic-core + # pydash + # pytorch-lightning + # torch + # typeguard + # typer +tzdata==2024.1 + # via pandas +ujson==5.9.0 + # via fastapi +uncertainties==3.1.7 + # via pymatgen +urllib3==2.2.1 + # via + # botocore + # requests + # torchdata + # types-requests +uvicorn[standard]==0.29.0 + # via + # fastapi + # fastapi-cli + # maggma +uvloop==0.19.0 + # via uvicorn +virtualenv==20.26.1 + # via pre-commit +watchdog==4.0.0 + # via mkdocs +watchfiles==0.21.0 + # via uvicorn +wcmatch==8.5.1 + # via mkdocs-awesome-pages-plugin +websockets==12.0 + # via uvicorn +werkzeug==3.0.3 + # via flask +wincertstore==0.2 + # via emmet-builders (setup.py) +wrapt==1.16.0 + # via smart-open +yarl==1.9.4 + # via aiohttp + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt b/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt index 6407874eec..e977526c03 100644 --- a/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt +++ b/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt @@ -452,7 +452,7 @@ pygments==2.18.0 # via # mkdocs-material # rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # chgnet # emmet-core diff --git a/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt-e b/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt-e new file mode 100644 index 0000000000..6407874eec --- /dev/null +++ b/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt-e @@ -0,0 +1,701 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.9_extras.txt +# +aiohttp==3.9.5 + # via fsspec +aioitertools==0.11.0 + # via maggma +aiosignal==1.3.1 + # via aiohttp +annotated-types==0.6.0 + # via pydantic +anyio==4.3.0 + # via + # httpx + # starlette + # watchfiles +ase==3.22.1 + # via + # chgnet + # matcalc + # matgl +async-timeout==4.0.3 + # via aiohttp +attrs==23.2.0 + # via + # aiohttp + # jsonschema + # referencing +bcrypt==4.1.3 + # via paramiko +blinker==1.8.2 + # via flask +boto3==1.34.99 + # via maggma +botocore==1.34.99 + # via + # boto3 + # s3transfer +bracex==2.4 + # via wcmatch +certifi==2024.2.2 + # via + # httpcore + # httpx + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +chgnet==0.3.5 + # via emmet-core +click==8.1.7 + # via + # flask + # mkdocs + # mkdocstrings + # mongogrant + # typer + # uvicorn +colorama==0.4.6 + # via + # griffe + # pretty-errors +contourpy==1.2.1 + # via matplotlib +coverage[toml]==7.5.1 + # via pytest-cov +cryptography==42.0.7 + # via paramiko +csscompressor==0.9.5 + # via mkdocs-minify-plugin +cycler==0.12.1 + # via matplotlib +cython==3.0.10 + # via chgnet +dgl==2.1.0 + # via matgl +distlib==0.3.8 + # via virtualenv +dnspython==2.6.1 + # via + # email-validator + # maggma + # pymongo +email-validator==2.1.1 + # via fastapi +emmet-core[all,ml]==0.83.6 + # via + # emmet-builders (setup.py) + # mp-api +exceptiongroup==1.2.1 + # via + # anyio + # pytest +fastapi==0.111.0 + # via + # fastapi-cli + # maggma +fastapi-cli==0.0.2 + # via fastapi +filelock==3.14.0 + # via + # torch + # triton + # virtualenv +flake8==7.0.0 + # via emmet-builders (setup.py) +flask==3.0.3 + # via mongogrant +fonttools==4.51.0 + # via matplotlib +frozenlist==1.4.1 + # via + # aiohttp + # aiosignal +fsspec[http]==2024.3.1 + # via + # pytorch-lightning + # torch +future==1.0.0 + # via uncertainties +ghp-import==2.1.0 + # via mkdocs +griffe==0.44.0 + # via mkdocstrings-python +h11==0.14.0 + # via + # httpcore + # uvicorn +h5py==3.11.0 + # via phonopy +htmlmin2==0.1.13 + # via mkdocs-minify-plugin +httpcore==1.0.5 + # via httpx +httptools==0.6.1 + # via uvicorn +httpx==0.27.0 + # via fastapi +identify==2.5.36 + # via pre-commit +idna==3.7 + # via + # anyio + # email-validator + # httpx + # requests + # yarl +importlib-metadata==7.1.0 + # via + # flask + # markdown + # mkdocs + # mkdocs-get-deps + # mkdocstrings + # typeguard +importlib-resources==6.4.0 + # via + # matplotlib + # spglib +inflect==7.2.1 + # via robocrys +iniconfig==2.0.0 + # via pytest +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via + # emmet-builders (setup.py) + # fastapi + # flask + # mkdocs + # mkdocs-material + # mkdocstrings + # torch +jmespath==1.0.1 + # via + # boto3 + # botocore +joblib==1.4.2 + # via + # matcalc + # pymatgen + # pymatgen-analysis-diffusion + # scikit-learn +jsmin==3.0.1 + # via mkdocs-minify-plugin +jsonschema==4.22.0 + # via maggma +jsonschema-specifications==2023.12.1 + # via jsonschema +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +lightning-utilities==0.11.2 + # via + # pytorch-lightning + # torchmetrics +livereload==2.6.3 + # via emmet-builders (setup.py) +maggma==0.66.0 + # via + # emmet-builders (setup.py) + # mp-api +markdown==3.6 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # pymdown-extensions +markdown-it-py==3.0.0 + # via rich +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings + # werkzeug +matcalc==0.0.4 + # via emmet-core +matgl==1.0.0 + # via emmet-core +matminer==0.9.2 + # via + # emmet-builders (setup.py) + # robocrys +matplotlib==3.8.4 + # via + # ase + # phonopy + # pymatgen +mccabe==0.7.0 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via + # mkdocs + # mkdocs-get-deps +mkdocs==1.6.0 + # via + # emmet-builders (setup.py) + # mkdocs-autorefs + # mkdocs-awesome-pages-plugin + # mkdocs-markdownextradata-plugin + # mkdocs-material + # mkdocs-minify-plugin + # mkdocstrings +mkdocs-autorefs==1.0.1 + # via mkdocstrings +mkdocs-awesome-pages-plugin==2.9.2 + # via emmet-builders (setup.py) +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-markdownextradata-plugin==0.2.5 + # via emmet-builders (setup.py) +mkdocs-material==8.2.16 + # via emmet-builders (setup.py) +mkdocs-material-extensions==1.3.1 + # via + # emmet-builders (setup.py) + # mkdocs-material +mkdocs-minify-plugin==0.8.0 + # via emmet-builders (setup.py) +mkdocstrings[python]==0.25.1 + # via + # emmet-builders (setup.py) + # mkdocstrings-python +mkdocstrings-python==1.10.0 + # via mkdocstrings +mongogrant==0.3.3 + # via maggma +mongomock==4.1.2 + # via maggma +monty==2024.4.17 + # via + # emmet-core + # maggma + # matminer + # mp-api + # pymatgen + # robocrys +more-itertools==10.2.0 + # via inflect +mp-api==0.41.2 + # via robocrys +mpmath==1.3.0 + # via sympy +msgpack==1.0.8 + # via + # maggma + # mp-api +multidict==6.0.5 + # via + # aiohttp + # yarl +mypy==1.10.0 + # via emmet-builders (setup.py) +mypy-extensions==1.0.0 + # via + # emmet-builders (setup.py) + # mypy +natsort==8.4.0 + # via mkdocs-awesome-pages-plugin +networkx==3.2.1 + # via + # dgl + # pymatgen + # robocrys + # torch +nodeenv==1.8.0 + # via pre-commit +numpy==1.26.4 + # via + # ase + # chgnet + # contourpy + # dgl + # h5py + # maggma + # matminer + # matplotlib + # pandas + # phonopy + # pymatgen + # pytorch-lightning + # robocrys + # scikit-learn + # scipy + # seekpath + # shapely + # spglib + # torchmetrics +nvidia-cublas-cu12==12.1.3.1 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch +nvidia-cuda-cupti-cu12==12.1.105 + # via torch +nvidia-cuda-nvrtc-cu12==12.1.105 + # via torch +nvidia-cuda-runtime-cu12==12.1.105 + # via torch +nvidia-cudnn-cu12==8.9.2.26 + # via torch +nvidia-cufft-cu12==11.0.2.54 + # via torch +nvidia-curand-cu12==10.3.2.106 + # via torch +nvidia-cusolver-cu12==11.4.5.107 + # via torch +nvidia-cusparse-cu12==12.1.0.106 + # via + # nvidia-cusolver-cu12 + # torch +nvidia-ml-py3==7.352.0 + # via chgnet +nvidia-nccl-cu12==2.20.5 + # via torch +nvidia-nvjitlink-cu12==12.4.127 + # via + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 +nvidia-nvtx-cu12==12.1.105 + # via torch +orjson==3.10.3 + # via + # fastapi + # maggma +packaging==24.0 + # via + # lightning-utilities + # matplotlib + # mkdocs + # mongomock + # plotly + # pytest + # pytorch-lightning + # torchmetrics +palettable==3.3.3 + # via pymatgen +pandas==2.2.2 + # via + # matminer + # pymatgen +paramiko==3.4.0 + # via sshtunnel +pathspec==0.12.1 + # via mkdocs +phonopy==2.23.1 + # via matcalc +pillow==10.3.0 + # via matplotlib +platformdirs==4.2.1 + # via + # mkdocs-get-deps + # mkdocstrings + # virtualenv +plotly==5.22.0 + # via pymatgen +pluggy==1.5.0 + # via pytest +pre-commit==3.7.0 + # via emmet-builders (setup.py) +pretty-errors==1.2.25 + # via torchmetrics +psutil==5.9.8 + # via dgl +pubchempy==1.0.4 + # via robocrys +pybtex==0.24.0 + # via + # emmet-core + # pymatgen + # robocrys +pycodestyle==2.11.1 + # via + # emmet-builders (setup.py) + # flake8 +pycparser==2.22 + # via cffi +pydantic==2.7.1 + # via + # emmet-core + # fastapi + # maggma + # pydantic-settings +pydantic-core==2.18.2 + # via pydantic +pydantic-settings==2.2.1 + # via + # emmet-core + # maggma +pydash==8.0.1 + # via maggma +pydocstyle==6.3.0 + # via emmet-builders (setup.py) +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 + # via + # mkdocs-material + # rich +pymatgen==2024.5.1 + # via + # chgnet + # emmet-core + # matcalc + # matgl + # matminer + # mp-api + # pymatgen-analysis-alloys + # pymatgen-analysis-diffusion + # robocrys +pymatgen-analysis-alloys==0.0.6 + # via emmet-core +pymatgen-analysis-diffusion==2023.8.15 + # via emmet-core +pymdown-extensions==10.8.1 + # via + # mkdocs-material + # mkdocstrings +pymongo==4.7.1 + # via + # maggma + # matminer + # mongogrant +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.2 + # via matplotlib +pytest==8.2.0 + # via + # emmet-builders (setup.py) + # pytest-cov +pytest-cov==5.0.0 + # via emmet-builders (setup.py) +python-dateutil==2.9.0.post0 + # via + # botocore + # ghp-import + # maggma + # matplotlib + # pandas +python-dotenv==1.0.1 + # via + # pydantic-settings + # uvicorn +python-multipart==0.0.9 + # via fastapi +pytorch-lightning==2.2.4 + # via matgl +pytz==2024.1 + # via pandas +pyyaml==6.0.1 + # via + # mkdocs + # mkdocs-get-deps + # mkdocs-markdownextradata-plugin + # phonopy + # pre-commit + # pybtex + # pymdown-extensions + # pytorch-lightning + # pyyaml-env-tag + # uvicorn +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.0.3 + # via maggma +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # dgl + # matminer + # mongogrant + # mp-api + # pymatgen + # torchdata +rich==13.7.1 + # via typer +robocrys==0.2.9 + # via emmet-core +rpds-py==0.18.1 + # via + # jsonschema + # referencing +ruamel-yaml==0.18.6 + # via + # maggma + # pymatgen + # robocrys +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +s3transfer==0.10.1 + # via boto3 +scikit-learn==1.4.2 + # via matminer +scipy==1.13.0 + # via + # ase + # dgl + # pymatgen + # robocrys + # scikit-learn +seekpath==2.1.0 + # via emmet-core +sentinels==1.0.0 + # via mongomock +shapely==2.0.4 + # via pymatgen-analysis-alloys +shellingham==1.5.4 + # via typer +six==1.16.0 + # via + # livereload + # pybtex + # python-dateutil +smart-open==7.0.4 + # via mp-api +sniffio==1.3.1 + # via + # anyio + # httpx +snowballstemmer==2.2.0 + # via pydocstyle +spglib==2.4.0 + # via + # phonopy + # pymatgen + # robocrys + # seekpath +sshtunnel==0.4.0 + # via maggma +starlette==0.37.2 + # via fastapi +sympy==1.12 + # via + # matminer + # pymatgen + # torch +tabulate==0.9.0 + # via pymatgen +tenacity==8.3.0 + # via plotly +threadpoolctl==3.5.0 + # via scikit-learn +tomli==2.0.1 + # via + # coverage + # mypy + # pytest +torch==2.3.0 + # via + # chgnet + # matgl + # pytorch-lightning + # torchdata + # torchmetrics +torchdata==0.7.1 + # via dgl +torchmetrics==1.4.0 + # via pytorch-lightning +tornado==6.4 + # via livereload +tqdm==4.66.4 + # via + # dgl + # maggma + # matminer + # pymatgen + # pytorch-lightning +triton==2.3.0 + # via torch +typeguard==4.2.1 + # via inflect +typer==0.12.3 + # via fastapi-cli +types-requests==2.31.0.6 + # via emmet-builders (setup.py) +types-setuptools==69.5.0.20240423 + # via emmet-builders (setup.py) +types-urllib3==1.26.25.14 + # via types-requests +typing-extensions==4.11.0 + # via + # aioitertools + # anyio + # emmet-core + # fastapi + # inflect + # lightning-utilities + # mkdocstrings + # mp-api + # mypy + # pydantic + # pydantic-core + # pydash + # pytorch-lightning + # starlette + # torch + # typeguard + # typer + # uvicorn +tzdata==2024.1 + # via pandas +ujson==5.9.0 + # via fastapi +uncertainties==3.1.7 + # via pymatgen +urllib3==1.26.18 + # via + # botocore + # requests + # torchdata +uvicorn[standard]==0.29.0 + # via + # fastapi + # fastapi-cli + # maggma +uvloop==0.19.0 + # via uvicorn +virtualenv==20.26.1 + # via pre-commit +watchdog==4.0.0 + # via mkdocs +watchfiles==0.21.0 + # via uvicorn +wcmatch==8.5.1 + # via mkdocs-awesome-pages-plugin +websockets==12.0 + # via uvicorn +werkzeug==3.0.3 + # via flask +wincertstore==0.2 + # via emmet-builders (setup.py) +wrapt==1.16.0 + # via smart-open +yarl==1.9.4 + # via aiohttp +zipp==3.18.1 + # via + # importlib-metadata + # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt b/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt index 402a669005..32191f10e1 100644 --- a/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt +++ b/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt @@ -443,7 +443,7 @@ pygments==2.18.0 # via # mkdocs-material # rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # chgnet # emmet-core diff --git a/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt-e b/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt-e new file mode 100644 index 0000000000..402a669005 --- /dev/null +++ b/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt-e @@ -0,0 +1,687 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.10_extras.txt +# +aiohttp==3.9.5 + # via fsspec +aioitertools==0.11.0 + # via maggma +aiosignal==1.3.1 + # via aiohttp +annotated-types==0.6.0 + # via pydantic +anyio==4.3.0 + # via + # httpx + # starlette + # watchfiles +ase==3.22.1 + # via + # chgnet + # matcalc + # matgl +async-timeout==4.0.3 + # via aiohttp +attrs==23.2.0 + # via + # aiohttp + # jsonschema + # referencing +bcrypt==4.1.3 + # via paramiko +blinker==1.8.2 + # via flask +boto3==1.34.99 + # via maggma +botocore==1.34.99 + # via + # boto3 + # s3transfer +bracex==2.4 + # via wcmatch +certifi==2024.2.2 + # via + # httpcore + # httpx + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +chgnet==0.3.5 + # via emmet-core (setup.py) +click==8.1.7 + # via + # flask + # mkdocs + # mkdocstrings + # mongogrant + # typer + # uvicorn +colorama==0.4.6 + # via + # griffe + # pretty-errors +contourpy==1.2.1 + # via matplotlib +coverage[toml]==7.5.1 + # via pytest-cov +cryptography==42.0.7 + # via paramiko +csscompressor==0.9.5 + # via mkdocs-minify-plugin +custodian==2024.4.18 + # via emmet-core (setup.py) +cycler==0.12.1 + # via matplotlib +cython==3.0.10 + # via chgnet +dgl==2.1.0 + # via matgl +distlib==0.3.8 + # via virtualenv +dnspython==2.6.1 + # via + # email-validator + # maggma + # pymongo +email-validator==2.1.1 + # via fastapi +emmet-core==0.83.6 + # via mp-api +exceptiongroup==1.2.1 + # via + # anyio + # pytest +fastapi==0.111.0 + # via + # fastapi-cli + # maggma +fastapi-cli==0.0.2 + # via fastapi +filelock==3.14.0 + # via + # torch + # triton + # virtualenv +flake8==7.0.0 + # via emmet-core (setup.py) +flask==3.0.3 + # via mongogrant +fonttools==4.51.0 + # via matplotlib +frozenlist==1.4.1 + # via + # aiohttp + # aiosignal +fsspec[http]==2024.3.1 + # via + # pytorch-lightning + # torch +future==1.0.0 + # via uncertainties +ghp-import==2.1.0 + # via mkdocs +griffe==0.44.0 + # via mkdocstrings-python +h11==0.14.0 + # via + # httpcore + # uvicorn +h5py==3.11.0 + # via phonopy +htmlmin2==0.1.13 + # via mkdocs-minify-plugin +httpcore==1.0.5 + # via httpx +httptools==0.6.1 + # via uvicorn +httpx==0.27.0 + # via fastapi +identify==2.5.36 + # via pre-commit +idna==3.7 + # via + # anyio + # email-validator + # httpx + # requests + # yarl +inflect==7.2.1 + # via robocrys +iniconfig==2.0.0 + # via pytest +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via + # emmet-core (setup.py) + # fastapi + # flask + # mkdocs + # mkdocs-material + # mkdocstrings + # torch +jmespath==1.0.1 + # via + # boto3 + # botocore +joblib==1.4.2 + # via + # matcalc + # pymatgen + # pymatgen-analysis-diffusion + # scikit-learn +jsmin==3.0.1 + # via mkdocs-minify-plugin +jsonschema==4.22.0 + # via maggma +jsonschema-specifications==2023.12.1 + # via jsonschema +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +lightning-utilities==0.11.2 + # via + # pytorch-lightning + # torchmetrics +livereload==2.6.3 + # via emmet-core (setup.py) +maggma==0.66.0 + # via mp-api +markdown==3.6 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # pymdown-extensions +markdown-it-py==3.0.0 + # via rich +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings + # werkzeug +matcalc==0.0.4 + # via emmet-core (setup.py) +matgl==1.0.0 + # via emmet-core (setup.py) +matminer==0.9.2 + # via robocrys +matplotlib==3.8.4 + # via + # ase + # phonopy + # pymatgen +mccabe==0.7.0 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via + # mkdocs + # mkdocs-get-deps +mkdocs==1.6.0 + # via + # emmet-core (setup.py) + # mkdocs-autorefs + # mkdocs-awesome-pages-plugin + # mkdocs-markdownextradata-plugin + # mkdocs-material + # mkdocs-minify-plugin + # mkdocstrings +mkdocs-autorefs==1.0.1 + # via mkdocstrings +mkdocs-awesome-pages-plugin==2.9.2 + # via emmet-core (setup.py) +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-markdownextradata-plugin==0.2.5 + # via emmet-core (setup.py) +mkdocs-material==8.2.16 + # via emmet-core (setup.py) +mkdocs-material-extensions==1.3.1 + # via + # emmet-core (setup.py) + # mkdocs-material +mkdocs-minify-plugin==0.8.0 + # via emmet-core (setup.py) +mkdocstrings[python]==0.25.1 + # via + # emmet-core (setup.py) + # mkdocstrings-python +mkdocstrings-python==1.10.0 + # via mkdocstrings +mongogrant==0.3.3 + # via maggma +mongomock==4.1.2 + # via maggma +monty==2024.4.17 + # via + # custodian + # emmet-core + # emmet-core (setup.py) + # maggma + # matminer + # mp-api + # pymatgen + # robocrys +more-itertools==10.2.0 + # via inflect +mp-api==0.41.2 + # via robocrys +mpmath==1.3.0 + # via sympy +msgpack==1.0.8 + # via + # maggma + # mp-api +multidict==6.0.5 + # via + # aiohttp + # yarl +mypy==1.10.0 + # via emmet-core (setup.py) +mypy-extensions==1.0.0 + # via + # emmet-core (setup.py) + # mypy +natsort==8.4.0 + # via mkdocs-awesome-pages-plugin +networkx==3.3 + # via + # dgl + # pymatgen + # robocrys + # torch +nodeenv==1.8.0 + # via pre-commit +numpy==1.26.4 + # via + # ase + # chgnet + # contourpy + # dgl + # h5py + # maggma + # matminer + # matplotlib + # pandas + # phonopy + # pymatgen + # pytorch-lightning + # robocrys + # scikit-learn + # scipy + # seekpath + # shapely + # spglib + # torchmetrics +nvidia-cublas-cu12==12.1.3.1 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch +nvidia-cuda-cupti-cu12==12.1.105 + # via torch +nvidia-cuda-nvrtc-cu12==12.1.105 + # via torch +nvidia-cuda-runtime-cu12==12.1.105 + # via torch +nvidia-cudnn-cu12==8.9.2.26 + # via torch +nvidia-cufft-cu12==11.0.2.54 + # via torch +nvidia-curand-cu12==10.3.2.106 + # via torch +nvidia-cusolver-cu12==11.4.5.107 + # via torch +nvidia-cusparse-cu12==12.1.0.106 + # via + # nvidia-cusolver-cu12 + # torch +nvidia-ml-py3==7.352.0 + # via chgnet +nvidia-nccl-cu12==2.20.5 + # via torch +nvidia-nvjitlink-cu12==12.4.127 + # via + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 +nvidia-nvtx-cu12==12.1.105 + # via torch +orjson==3.10.3 + # via + # fastapi + # maggma +packaging==24.0 + # via + # lightning-utilities + # matplotlib + # mkdocs + # mongomock + # plotly + # pytest + # pytorch-lightning + # torchmetrics +palettable==3.3.3 + # via pymatgen +pandas==2.2.2 + # via + # matminer + # pymatgen +paramiko==3.4.0 + # via sshtunnel +pathspec==0.12.1 + # via mkdocs +phonopy==2.23.1 + # via matcalc +pillow==10.3.0 + # via matplotlib +platformdirs==4.2.1 + # via + # mkdocs-get-deps + # mkdocstrings + # virtualenv +plotly==5.22.0 + # via pymatgen +pluggy==1.5.0 + # via pytest +pre-commit==3.7.0 + # via emmet-core (setup.py) +pretty-errors==1.2.25 + # via torchmetrics +psutil==5.9.8 + # via + # custodian + # dgl +pubchempy==1.0.4 + # via robocrys +pybtex==0.24.0 + # via + # emmet-core + # emmet-core (setup.py) + # pymatgen + # robocrys +pycodestyle==2.11.1 + # via + # emmet-core (setup.py) + # flake8 +pycparser==2.22 + # via cffi +pydantic==2.7.1 + # via + # emmet-core + # emmet-core (setup.py) + # fastapi + # maggma + # pydantic-settings +pydantic-core==2.18.2 + # via pydantic +pydantic-settings==2.2.1 + # via + # emmet-core + # emmet-core (setup.py) + # maggma +pydash==8.0.1 + # via maggma +pydocstyle==6.3.0 + # via emmet-core (setup.py) +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 + # via + # mkdocs-material + # rich +pymatgen==2024.5.1 + # via + # chgnet + # emmet-core + # emmet-core (setup.py) + # matcalc + # matgl + # matminer + # mp-api + # pymatgen-analysis-alloys + # pymatgen-analysis-diffusion + # robocrys +pymatgen-analysis-alloys==0.0.6 + # via emmet-core (setup.py) +pymatgen-analysis-diffusion==2023.8.15 + # via emmet-core (setup.py) +pymdown-extensions==10.8.1 + # via + # mkdocs-material + # mkdocstrings +pymongo==4.7.1 + # via + # maggma + # matminer + # mongogrant +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.2 + # via matplotlib +pytest==8.2.0 + # via + # emmet-core (setup.py) + # pytest-cov +pytest-cov==5.0.0 + # via emmet-core (setup.py) +python-dateutil==2.9.0.post0 + # via + # botocore + # ghp-import + # maggma + # matplotlib + # pandas +python-dotenv==1.0.1 + # via + # pydantic-settings + # uvicorn +python-multipart==0.0.9 + # via fastapi +pytorch-lightning==2.2.4 + # via matgl +pytz==2024.1 + # via pandas +pyyaml==6.0.1 + # via + # mkdocs + # mkdocs-get-deps + # mkdocs-markdownextradata-plugin + # phonopy + # pre-commit + # pybtex + # pymdown-extensions + # pytorch-lightning + # pyyaml-env-tag + # uvicorn +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.0.3 + # via maggma +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # dgl + # matminer + # mongogrant + # mp-api + # pymatgen + # torchdata +rich==13.7.1 + # via typer +robocrys==0.2.9 + # via emmet-core (setup.py) +rpds-py==0.18.1 + # via + # jsonschema + # referencing +ruamel-yaml==0.18.6 + # via + # custodian + # maggma + # pymatgen + # robocrys +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +s3transfer==0.10.1 + # via boto3 +scikit-learn==1.4.2 + # via matminer +scipy==1.13.0 + # via + # ase + # dgl + # pymatgen + # robocrys + # scikit-learn +seekpath==2.1.0 + # via emmet-core (setup.py) +sentinels==1.0.0 + # via mongomock +shapely==2.0.4 + # via pymatgen-analysis-alloys +shellingham==1.5.4 + # via typer +six==1.16.0 + # via + # livereload + # pybtex + # python-dateutil +smart-open==7.0.4 + # via mp-api +sniffio==1.3.1 + # via + # anyio + # httpx +snowballstemmer==2.2.0 + # via pydocstyle +spglib==2.4.0 + # via + # phonopy + # pymatgen + # robocrys + # seekpath +sshtunnel==0.4.0 + # via maggma +starlette==0.37.2 + # via fastapi +sympy==1.12 + # via + # matminer + # pymatgen + # torch +tabulate==0.9.0 + # via pymatgen +tenacity==8.3.0 + # via plotly +threadpoolctl==3.5.0 + # via scikit-learn +tomli==2.0.1 + # via + # coverage + # mypy + # pytest +torch==2.3.0 + # via + # chgnet + # matgl + # pytorch-lightning + # torchdata + # torchmetrics +torchdata==0.7.1 + # via dgl +torchmetrics==1.4.0 + # via pytorch-lightning +tornado==6.4 + # via livereload +tqdm==4.66.4 + # via + # dgl + # maggma + # matminer + # pymatgen + # pytorch-lightning +triton==2.3.0 + # via torch +typeguard==4.2.1 + # via inflect +typer==0.12.3 + # via fastapi-cli +types-requests==2.31.0.20240406 + # via emmet-core (setup.py) +types-setuptools==69.5.0.20240423 + # via emmet-core (setup.py) +typing-extensions==4.11.0 + # via + # anyio + # emmet-core + # emmet-core (setup.py) + # fastapi + # inflect + # lightning-utilities + # mp-api + # mypy + # pydantic + # pydantic-core + # pydash + # pytorch-lightning + # torch + # typeguard + # typer + # uvicorn +tzdata==2024.1 + # via pandas +ujson==5.9.0 + # via fastapi +uncertainties==3.1.7 + # via pymatgen +urllib3==2.2.1 + # via + # botocore + # requests + # torchdata + # types-requests +uvicorn[standard]==0.29.0 + # via + # fastapi + # fastapi-cli + # maggma +uvloop==0.19.0 + # via uvicorn +virtualenv==20.26.1 + # via pre-commit +watchdog==4.0.0 + # via mkdocs +watchfiles==0.21.0 + # via uvicorn +wcmatch==8.5.1 + # via mkdocs-awesome-pages-plugin +websockets==12.0 + # via uvicorn +werkzeug==3.0.3 + # via flask +wincertstore==0.2 + # via emmet-core (setup.py) +wrapt==1.16.0 + # via smart-open +yarl==1.9.4 + # via aiohttp + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt b/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt index 3fc2640102..d132d48018 100644 --- a/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt +++ b/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt @@ -437,7 +437,7 @@ pygments==2.18.0 # via # mkdocs-material # rich -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # chgnet # emmet-core diff --git a/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt-e b/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt-e new file mode 100644 index 0000000000..3fc2640102 --- /dev/null +++ b/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt-e @@ -0,0 +1,674 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.11_extras.txt +# +aiohttp==3.9.5 + # via fsspec +aioitertools==0.11.0 + # via maggma +aiosignal==1.3.1 + # via aiohttp +annotated-types==0.6.0 + # via pydantic +anyio==4.3.0 + # via + # httpx + # starlette + # watchfiles +ase==3.22.1 + # via + # chgnet + # matcalc + # matgl +attrs==23.2.0 + # via + # aiohttp + # jsonschema + # referencing +bcrypt==4.1.3 + # via paramiko +blinker==1.8.2 + # via flask +boto3==1.34.99 + # via maggma +botocore==1.34.99 + # via + # boto3 + # s3transfer +bracex==2.4 + # via wcmatch +certifi==2024.2.2 + # via + # httpcore + # httpx + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +chgnet==0.3.5 + # via emmet-core (setup.py) +click==8.1.7 + # via + # flask + # mkdocs + # mkdocstrings + # mongogrant + # typer + # uvicorn +colorama==0.4.6 + # via + # griffe + # pretty-errors +contourpy==1.2.1 + # via matplotlib +coverage[toml]==7.5.1 + # via pytest-cov +cryptography==42.0.7 + # via paramiko +csscompressor==0.9.5 + # via mkdocs-minify-plugin +custodian==2024.4.18 + # via emmet-core (setup.py) +cycler==0.12.1 + # via matplotlib +cython==3.0.10 + # via chgnet +dgl==2.1.0 + # via matgl +distlib==0.3.8 + # via virtualenv +dnspython==2.6.1 + # via + # email-validator + # maggma + # pymongo +email-validator==2.1.1 + # via fastapi +emmet-core==0.83.6 + # via mp-api +fastapi==0.111.0 + # via + # fastapi-cli + # maggma +fastapi-cli==0.0.2 + # via fastapi +filelock==3.14.0 + # via + # torch + # triton + # virtualenv +flake8==7.0.0 + # via emmet-core (setup.py) +flask==3.0.3 + # via mongogrant +fonttools==4.51.0 + # via matplotlib +frozenlist==1.4.1 + # via + # aiohttp + # aiosignal +fsspec[http]==2024.3.1 + # via + # pytorch-lightning + # torch +future==1.0.0 + # via uncertainties +ghp-import==2.1.0 + # via mkdocs +griffe==0.44.0 + # via mkdocstrings-python +h11==0.14.0 + # via + # httpcore + # uvicorn +h5py==3.11.0 + # via phonopy +htmlmin2==0.1.13 + # via mkdocs-minify-plugin +httpcore==1.0.5 + # via httpx +httptools==0.6.1 + # via uvicorn +httpx==0.27.0 + # via fastapi +identify==2.5.36 + # via pre-commit +idna==3.7 + # via + # anyio + # email-validator + # httpx + # requests + # yarl +inflect==7.2.1 + # via robocrys +iniconfig==2.0.0 + # via pytest +itsdangerous==2.2.0 + # via flask +jinja2==3.1.4 + # via + # emmet-core (setup.py) + # fastapi + # flask + # mkdocs + # mkdocs-material + # mkdocstrings + # torch +jmespath==1.0.1 + # via + # boto3 + # botocore +joblib==1.4.2 + # via + # matcalc + # pymatgen + # pymatgen-analysis-diffusion + # scikit-learn +jsmin==3.0.1 + # via mkdocs-minify-plugin +jsonschema==4.22.0 + # via maggma +jsonschema-specifications==2023.12.1 + # via jsonschema +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +lightning-utilities==0.11.2 + # via + # pytorch-lightning + # torchmetrics +livereload==2.6.3 + # via emmet-core (setup.py) +maggma==0.66.0 + # via mp-api +markdown==3.6 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # pymdown-extensions +markdown-it-py==3.0.0 + # via rich +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings + # werkzeug +matcalc==0.0.4 + # via emmet-core (setup.py) +matgl==1.0.0 + # via emmet-core (setup.py) +matminer==0.9.2 + # via robocrys +matplotlib==3.8.4 + # via + # ase + # phonopy + # pymatgen +mccabe==0.7.0 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via + # mkdocs + # mkdocs-get-deps +mkdocs==1.6.0 + # via + # emmet-core (setup.py) + # mkdocs-autorefs + # mkdocs-awesome-pages-plugin + # mkdocs-markdownextradata-plugin + # mkdocs-material + # mkdocs-minify-plugin + # mkdocstrings +mkdocs-autorefs==1.0.1 + # via mkdocstrings +mkdocs-awesome-pages-plugin==2.9.2 + # via emmet-core (setup.py) +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-markdownextradata-plugin==0.2.5 + # via emmet-core (setup.py) +mkdocs-material==8.2.16 + # via emmet-core (setup.py) +mkdocs-material-extensions==1.3.1 + # via + # emmet-core (setup.py) + # mkdocs-material +mkdocs-minify-plugin==0.8.0 + # via emmet-core (setup.py) +mkdocstrings[python]==0.25.1 + # via + # emmet-core (setup.py) + # mkdocstrings-python +mkdocstrings-python==1.10.0 + # via mkdocstrings +mongogrant==0.3.3 + # via maggma +mongomock==4.1.2 + # via maggma +monty==2024.4.17 + # via + # custodian + # emmet-core + # emmet-core (setup.py) + # maggma + # matminer + # mp-api + # pymatgen + # robocrys +more-itertools==10.2.0 + # via inflect +mp-api==0.41.2 + # via robocrys +mpmath==1.3.0 + # via sympy +msgpack==1.0.8 + # via + # maggma + # mp-api +multidict==6.0.5 + # via + # aiohttp + # yarl +mypy==1.10.0 + # via emmet-core (setup.py) +mypy-extensions==1.0.0 + # via + # emmet-core (setup.py) + # mypy +natsort==8.4.0 + # via mkdocs-awesome-pages-plugin +networkx==3.3 + # via + # dgl + # pymatgen + # robocrys + # torch +nodeenv==1.8.0 + # via pre-commit +numpy==1.26.4 + # via + # ase + # chgnet + # contourpy + # dgl + # h5py + # maggma + # matminer + # matplotlib + # pandas + # phonopy + # pymatgen + # pytorch-lightning + # robocrys + # scikit-learn + # scipy + # seekpath + # shapely + # spglib + # torchmetrics +nvidia-cublas-cu12==12.1.3.1 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch +nvidia-cuda-cupti-cu12==12.1.105 + # via torch +nvidia-cuda-nvrtc-cu12==12.1.105 + # via torch +nvidia-cuda-runtime-cu12==12.1.105 + # via torch +nvidia-cudnn-cu12==8.9.2.26 + # via torch +nvidia-cufft-cu12==11.0.2.54 + # via torch +nvidia-curand-cu12==10.3.2.106 + # via torch +nvidia-cusolver-cu12==11.4.5.107 + # via torch +nvidia-cusparse-cu12==12.1.0.106 + # via + # nvidia-cusolver-cu12 + # torch +nvidia-ml-py3==7.352.0 + # via chgnet +nvidia-nccl-cu12==2.20.5 + # via torch +nvidia-nvjitlink-cu12==12.4.127 + # via + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 +nvidia-nvtx-cu12==12.1.105 + # via torch +orjson==3.10.3 + # via + # fastapi + # maggma +packaging==24.0 + # via + # lightning-utilities + # matplotlib + # mkdocs + # mongomock + # plotly + # pytest + # pytorch-lightning + # torchmetrics +palettable==3.3.3 + # via pymatgen +pandas==2.2.2 + # via + # matminer + # pymatgen +paramiko==3.4.0 + # via sshtunnel +pathspec==0.12.1 + # via mkdocs +phonopy==2.23.1 + # via matcalc +pillow==10.3.0 + # via matplotlib +platformdirs==4.2.1 + # via + # mkdocs-get-deps + # mkdocstrings + # virtualenv +plotly==5.22.0 + # via pymatgen +pluggy==1.5.0 + # via pytest +pre-commit==3.7.0 + # via emmet-core (setup.py) +pretty-errors==1.2.25 + # via torchmetrics +psutil==5.9.8 + # via + # custodian + # dgl +pubchempy==1.0.4 + # via robocrys +pybtex==0.24.0 + # via + # emmet-core + # emmet-core (setup.py) + # pymatgen + # robocrys +pycodestyle==2.11.1 + # via + # emmet-core (setup.py) + # flake8 +pycparser==2.22 + # via cffi +pydantic==2.7.1 + # via + # emmet-core + # emmet-core (setup.py) + # fastapi + # maggma + # pydantic-settings +pydantic-core==2.18.2 + # via pydantic +pydantic-settings==2.2.1 + # via + # emmet-core + # emmet-core (setup.py) + # maggma +pydash==8.0.1 + # via maggma +pydocstyle==6.3.0 + # via emmet-core (setup.py) +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 + # via + # mkdocs-material + # rich +pymatgen==2024.5.1 + # via + # chgnet + # emmet-core + # emmet-core (setup.py) + # matcalc + # matgl + # matminer + # mp-api + # pymatgen-analysis-alloys + # pymatgen-analysis-diffusion + # robocrys +pymatgen-analysis-alloys==0.0.6 + # via emmet-core (setup.py) +pymatgen-analysis-diffusion==2023.8.15 + # via emmet-core (setup.py) +pymdown-extensions==10.8.1 + # via + # mkdocs-material + # mkdocstrings +pymongo==4.7.1 + # via + # maggma + # matminer + # mongogrant +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.2 + # via matplotlib +pytest==8.2.0 + # via + # emmet-core (setup.py) + # pytest-cov +pytest-cov==5.0.0 + # via emmet-core (setup.py) +python-dateutil==2.9.0.post0 + # via + # botocore + # ghp-import + # maggma + # matplotlib + # pandas +python-dotenv==1.0.1 + # via + # pydantic-settings + # uvicorn +python-multipart==0.0.9 + # via fastapi +pytorch-lightning==2.2.4 + # via matgl +pytz==2024.1 + # via pandas +pyyaml==6.0.1 + # via + # mkdocs + # mkdocs-get-deps + # mkdocs-markdownextradata-plugin + # phonopy + # pre-commit + # pybtex + # pymdown-extensions + # pytorch-lightning + # pyyaml-env-tag + # uvicorn +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==26.0.3 + # via maggma +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # dgl + # matminer + # mongogrant + # mp-api + # pymatgen + # torchdata +rich==13.7.1 + # via typer +robocrys==0.2.9 + # via emmet-core (setup.py) +rpds-py==0.18.1 + # via + # jsonschema + # referencing +ruamel-yaml==0.18.6 + # via + # custodian + # maggma + # pymatgen + # robocrys +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +s3transfer==0.10.1 + # via boto3 +scikit-learn==1.4.2 + # via matminer +scipy==1.13.0 + # via + # ase + # dgl + # pymatgen + # robocrys + # scikit-learn +seekpath==2.1.0 + # via emmet-core (setup.py) +sentinels==1.0.0 + # via mongomock +shapely==2.0.4 + # via pymatgen-analysis-alloys +shellingham==1.5.4 + # via typer +six==1.16.0 + # via + # livereload + # pybtex + # python-dateutil +smart-open==7.0.4 + # via mp-api +sniffio==1.3.1 + # via + # anyio + # httpx +snowballstemmer==2.2.0 + # via pydocstyle +spglib==2.4.0 + # via + # phonopy + # pymatgen + # robocrys + # seekpath +sshtunnel==0.4.0 + # via maggma +starlette==0.37.2 + # via fastapi +sympy==1.12 + # via + # matminer + # pymatgen + # torch +tabulate==0.9.0 + # via pymatgen +tenacity==8.3.0 + # via plotly +threadpoolctl==3.5.0 + # via scikit-learn +torch==2.3.0 + # via + # chgnet + # matgl + # pytorch-lightning + # torchdata + # torchmetrics +torchdata==0.7.1 + # via dgl +torchmetrics==1.4.0 + # via pytorch-lightning +tornado==6.4 + # via livereload +tqdm==4.66.4 + # via + # dgl + # maggma + # matminer + # pymatgen + # pytorch-lightning +triton==2.3.0 + # via torch +typeguard==4.2.1 + # via inflect +typer==0.12.3 + # via fastapi-cli +types-requests==2.31.0.20240406 + # via emmet-core (setup.py) +types-setuptools==69.5.0.20240423 + # via emmet-core (setup.py) +typing-extensions==4.11.0 + # via + # emmet-core + # emmet-core (setup.py) + # fastapi + # inflect + # lightning-utilities + # mp-api + # mypy + # pydantic + # pydantic-core + # pydash + # pytorch-lightning + # torch + # typeguard + # typer +tzdata==2024.1 + # via pandas +ujson==5.9.0 + # via fastapi +uncertainties==3.1.7 + # via pymatgen +urllib3==2.2.1 + # via + # botocore + # requests + # torchdata + # types-requests +uvicorn[standard]==0.29.0 + # via + # fastapi + # fastapi-cli + # maggma +uvloop==0.19.0 + # via uvicorn +virtualenv==20.26.1 + # via pre-commit +watchdog==4.0.0 + # via mkdocs +watchfiles==0.21.0 + # via uvicorn +wcmatch==8.5.1 + # via mkdocs-awesome-pages-plugin +websockets==12.0 + # via uvicorn +werkzeug==3.0.3 + # via flask +wincertstore==0.2 + # via emmet-core (setup.py) +wrapt==1.16.0 + # via smart-open +yarl==1.9.4 + # via aiohttp + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt b/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt index 9430390aa0..d7fa354485 100644 --- a/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt +++ b/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt @@ -352,7 +352,7 @@ pyflakes==3.2.0 # via flake8 pygments==2.18.0 # via mkdocs-material -pymatgen==2024.5.1 +pymatgen==2024.4.13 # via # chgnet # emmet-core diff --git a/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt-e b/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt-e new file mode 100644 index 0000000000..9430390aa0 --- /dev/null +++ b/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt-e @@ -0,0 +1,533 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.9_extras.txt +# +aiohttp==3.9.5 + # via fsspec +aiosignal==1.3.1 + # via aiohttp +annotated-types==0.6.0 + # via pydantic +ase==3.22.1 + # via + # chgnet + # matcalc + # matgl +async-timeout==4.0.3 + # via aiohttp +attrs==23.2.0 + # via aiohttp +bracex==2.4 + # via wcmatch +certifi==2024.2.2 + # via requests +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +chgnet==0.3.5 + # via emmet-core (setup.py) +click==8.1.7 + # via + # mkdocs + # mkdocstrings +colorama==0.4.6 + # via + # griffe + # pretty-errors +contourpy==1.2.1 + # via matplotlib +coverage[toml]==7.5.1 + # via pytest-cov +csscompressor==0.9.5 + # via mkdocs-minify-plugin +custodian==2024.4.18 + # via emmet-core (setup.py) +cycler==0.12.1 + # via matplotlib +cython==3.0.10 + # via chgnet +dgl==2.1.0 + # via matgl +distlib==0.3.8 + # via virtualenv +dnspython==2.6.1 + # via + # maggma + # pymongo +emmet-core==0.83.6 + # via mp-api +exceptiongroup==1.2.1 + # via pytest +filelock==3.14.0 + # via + # torch + # triton + # virtualenv +flake8==7.0.0 + # via emmet-core (setup.py) +fonttools==4.51.0 + # via matplotlib +frozenlist==1.4.1 + # via + # aiohttp + # aiosignal +fsspec[http]==2024.3.1 + # via + # pytorch-lightning + # torch +future==1.0.0 + # via uncertainties +ghp-import==2.1.0 + # via mkdocs +griffe==0.44.0 + # via mkdocstrings-python +h5py==3.11.0 + # via phonopy +htmlmin2==0.1.13 + # via mkdocs-minify-plugin +identify==2.5.36 + # via pre-commit +idna==3.7 + # via + # requests + # yarl +importlib-metadata==7.1.0 + # via + # markdown + # mkdocs + # mkdocs-get-deps + # mkdocstrings + # typeguard +importlib-resources==6.4.0 + # via + # matplotlib + # spglib +inflect==7.2.1 + # via robocrys +iniconfig==2.0.0 + # via pytest +jinja2==3.1.4 + # via + # emmet-core (setup.py) + # mkdocs + # mkdocs-material + # mkdocstrings + # torch +joblib==1.4.2 + # via + # matcalc + # pymatgen + # pymatgen-analysis-diffusion + # scikit-learn +jsmin==3.0.1 + # via mkdocs-minify-plugin +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +lightning-utilities==0.11.2 + # via + # pytorch-lightning + # torchmetrics +livereload==2.6.3 + # via emmet-core (setup.py) +markdown==3.6 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # pymdown-extensions +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings +matcalc==0.0.4 + # via emmet-core (setup.py) +matgl==1.0.0 + # via emmet-core (setup.py) +matminer==0.9.2 + # via robocrys +matplotlib==3.8.4 + # via + # ase + # phonopy + # pymatgen +mccabe==0.7.0 + # via flake8 +mergedeep==1.3.4 + # via + # mkdocs + # mkdocs-get-deps +mkdocs==1.6.0 + # via + # emmet-core (setup.py) + # mkdocs-autorefs + # mkdocs-awesome-pages-plugin + # mkdocs-markdownextradata-plugin + # mkdocs-material + # mkdocs-minify-plugin + # mkdocstrings +mkdocs-autorefs==1.0.1 + # via mkdocstrings +mkdocs-awesome-pages-plugin==2.9.2 + # via emmet-core (setup.py) +mkdocs-get-deps==0.2.0 + # via mkdocs +mkdocs-markdownextradata-plugin==0.2.5 + # via emmet-core (setup.py) +mkdocs-material==8.2.16 + # via emmet-core (setup.py) +mkdocs-material-extensions==1.3.1 + # via + # emmet-core (setup.py) + # mkdocs-material +mkdocs-minify-plugin==0.8.0 + # via emmet-core (setup.py) +mkdocstrings[python]==0.25.1 + # via + # emmet-core (setup.py) + # mkdocstrings-python +mkdocstrings-python==1.10.0 + # via mkdocstrings +monty==2024.4.17 + # via + # custodian + # emmet-core + # emmet-core (setup.py) + # matminer + # mp-api + # pymatgen + # robocrys +more-itertools==10.2.0 + # via inflect +mp-api==0.36.1 + # via robocrys +mpmath==1.3.0 + # via sympy +msgpack==1.0.8 + # via mp-api +multidict==6.0.5 + # via + # aiohttp + # yarl +mypy==1.10.0 + # via emmet-core (setup.py) +mypy-extensions==1.0.0 + # via + # emmet-core (setup.py) + # mypy +natsort==8.4.0 + # via mkdocs-awesome-pages-plugin +networkx==3.2.1 + # via + # dgl + # pymatgen + # robocrys + # torch +nodeenv==1.8.0 + # via pre-commit +numpy==1.26.4 + # via + # ase + # chgnet + # contourpy + # dgl + # h5py + # matminer + # matplotlib + # pandas + # phonopy + # pymatgen + # pytorch-lightning + # robocrys + # scikit-learn + # scipy + # seekpath + # shapely + # spglib + # torchmetrics +nvidia-cublas-cu12==12.1.3.1 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch +nvidia-cuda-cupti-cu12==12.1.105 + # via torch +nvidia-cuda-nvrtc-cu12==12.1.105 + # via torch +nvidia-cuda-runtime-cu12==12.1.105 + # via torch +nvidia-cudnn-cu12==8.9.2.26 + # via torch +nvidia-cufft-cu12==11.0.2.54 + # via torch +nvidia-curand-cu12==10.3.2.106 + # via torch +nvidia-cusolver-cu12==11.4.5.107 + # via torch +nvidia-cusparse-cu12==12.1.0.106 + # via + # nvidia-cusolver-cu12 + # torch +nvidia-ml-py3==7.352.0 + # via chgnet +nvidia-nccl-cu12==2.20.5 + # via torch +nvidia-nvjitlink-cu12==12.4.127 + # via + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 +nvidia-nvtx-cu12==12.1.105 + # via torch +packaging==24.0 + # via + # lightning-utilities + # matplotlib + # mkdocs + # plotly + # pytest + # pytorch-lightning + # torchmetrics +palettable==3.3.3 + # via pymatgen +pandas==2.2.2 + # via + # matminer + # pymatgen +pathspec==0.12.1 + # via mkdocs +phonopy==2.23.1 + # via matcalc +pillow==10.3.0 + # via matplotlib +platformdirs==4.2.1 + # via + # mkdocs-get-deps + # mkdocstrings + # virtualenv +plotly==5.22.0 + # via pymatgen +pluggy==1.5.0 + # via pytest +pre-commit==3.7.0 + # via emmet-core (setup.py) +pretty-errors==1.2.25 + # via torchmetrics +psutil==5.9.8 + # via + # custodian + # dgl +pubchempy==1.0.4 + # via robocrys +pybtex==0.24.0 + # via + # emmet-core + # emmet-core (setup.py) + # pymatgen + # robocrys +pycodestyle==2.11.1 + # via + # emmet-core (setup.py) + # flake8 +pydantic==2.7.1 + # via + # emmet-core + # emmet-core (setup.py) + # pydantic-settings +pydantic-core==2.18.2 + # via pydantic +pydantic-settings==2.2.1 + # via + # emmet-core + # emmet-core (setup.py) +pydocstyle==6.3.0 + # via emmet-core (setup.py) +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 + # via mkdocs-material +pymatgen==2024.5.1 + # via + # chgnet + # emmet-core + # emmet-core (setup.py) + # matcalc + # matgl + # matminer + # mp-api + # pymatgen-analysis-alloys + # pymatgen-analysis-diffusion + # robocrys +pymatgen-analysis-alloys==0.0.6 + # via emmet-core (setup.py) +pymatgen-analysis-diffusion==2023.8.15 + # via emmet-core (setup.py) +pymdown-extensions==10.8.1 + # via + # mkdocs-material + # mkdocstrings +pymongo==4.7.1 + # via matminer +pyparsing==3.1.2 + # via matplotlib +pytest==8.2.0 + # via + # emmet-core (setup.py) + # pytest-cov +pytest-cov==5.0.0 + # via emmet-core (setup.py) +python-dateutil==2.9.0.post0 + # via + # ghp-import + # matplotlib + # pandas +python-dotenv==1.0.1 + # via pydantic-settings +pytorch-lightning==2.2.4 + # via matgl +pytz==2024.1 + # via pandas +pyyaml==6.0.1 + # via + # mkdocs + # mkdocs-get-deps + # mkdocs-markdownextradata-plugin + # phonopy + # pre-commit + # pybtex + # pymdown-extensions + # pytorch-lightning + # pyyaml-env-tag +pyyaml-env-tag==0.1 + # via mkdocs +requests==2.31.0 + # via + # dgl + # matminer + # mp-api + # pymatgen + # torchdata +robocrys==0.2.9 + # via emmet-core (setup.py) +ruamel-yaml==0.18.6 + # via + # custodian + # pymatgen + # robocrys +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +scikit-learn==1.4.2 + # via matminer +scipy==1.13.0 + # via + # ase + # dgl + # pymatgen + # robocrys + # scikit-learn +seekpath==2.1.0 + # via emmet-core (setup.py) +shapely==2.0.4 + # via pymatgen-analysis-alloys +six==1.16.0 + # via + # livereload + # pybtex + # python-dateutil +snowballstemmer==2.2.0 + # via pydocstyle +spglib==2.4.0 + # via + # phonopy + # pymatgen + # robocrys + # seekpath +sympy==1.12 + # via + # matminer + # pymatgen + # torch +tabulate==0.9.0 + # via pymatgen +tenacity==8.3.0 + # via plotly +threadpoolctl==3.5.0 + # via scikit-learn +tomli==2.0.1 + # via + # coverage + # mypy + # pytest +torch==2.3.0 + # via + # chgnet + # matgl + # pytorch-lightning + # torchdata + # torchmetrics +torchdata==0.7.1 + # via dgl +torchmetrics==1.4.0 + # via pytorch-lightning +tornado==6.4 + # via livereload +tqdm==4.66.4 + # via + # dgl + # matminer + # pymatgen + # pytorch-lightning +triton==2.3.0 + # via torch +typeguard==4.2.1 + # via inflect +types-requests==2.31.0.20240406 + # via emmet-core (setup.py) +types-setuptools==69.5.0.20240423 + # via emmet-core (setup.py) +typing-extensions==4.11.0 + # via + # emmet-core + # emmet-core (setup.py) + # inflect + # lightning-utilities + # mkdocstrings + # mp-api + # mypy + # pydantic + # pydantic-core + # pytorch-lightning + # torch + # typeguard +tzdata==2024.1 + # via pandas +uncertainties==3.1.7 + # via pymatgen +urllib3==2.2.1 + # via + # requests + # torchdata + # types-requests +virtualenv==20.26.1 + # via pre-commit +watchdog==4.0.0 + # via mkdocs +wcmatch==8.5.1 + # via mkdocs-awesome-pages-plugin +wincertstore==0.2 + # via emmet-core (setup.py) +yarl==1.9.4 + # via aiohttp +zipp==3.18.1 + # via + # importlib-metadata + # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +# setuptools From f717131c3b82f0bcc4d78de9a333b7538bbd4722 Mon Sep 17 00:00:00 2001 From: esoteric-ephemera Date: Tue, 21 May 2024 15:49:07 -0700 Subject: [PATCH 24/24] cleanup mac sed edited docs --- .../ubuntu-latest_py3.10_extras.txt-e | 524 ------------- .../ubuntu-latest_py3.11_extras.txt-e | 510 ------------- .../ubuntu-latest_py3.9_extras.txt-e | 541 -------------- .../ubuntu-latest_py3.10_extras.txt-e | 681 ----------------- .../ubuntu-latest_py3.11_extras.txt-e | 668 ----------------- .../ubuntu-latest_py3.9_extras.txt-e | 701 ------------------ .../ubuntu-latest_py3.10_extras.txt-e | 687 ----------------- .../ubuntu-latest_py3.11_extras.txt-e | 674 ----------------- .../ubuntu-latest_py3.9_extras.txt-e | 533 ------------- 9 files changed, 5519 deletions(-) delete mode 100644 emmet-api/requirements/ubuntu-latest_py3.10_extras.txt-e delete mode 100644 emmet-api/requirements/ubuntu-latest_py3.11_extras.txt-e delete mode 100644 emmet-api/requirements/ubuntu-latest_py3.9_extras.txt-e delete mode 100644 emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt-e delete mode 100644 emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt-e delete mode 100644 emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt-e delete mode 100644 emmet-core/requirements/ubuntu-latest_py3.10_extras.txt-e delete mode 100644 emmet-core/requirements/ubuntu-latest_py3.11_extras.txt-e delete mode 100644 emmet-core/requirements/ubuntu-latest_py3.9_extras.txt-e diff --git a/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt-e b/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt-e deleted file mode 100644 index 01589a655d..0000000000 --- a/emmet-api/requirements/ubuntu-latest_py3.10_extras.txt-e +++ /dev/null @@ -1,524 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.10_extras.txt -# -aioitertools==0.11.0 - # via maggma -annotated-types==0.6.0 - # via pydantic -anyio==4.3.0 - # via - # httpx - # starlette - # watchfiles -asgi-logger==0.1.0 - # via emmet-api (setup.py) -asgiref==3.8.1 - # via asgi-logger -attrs==23.2.0 - # via - # cattrs - # ddtrace - # jsonschema - # referencing -bcrypt==4.1.3 - # via paramiko -blinker==1.8.2 - # via flask -boto3==1.34.99 - # via - # emmet-api (setup.py) - # maggma -botocore==1.34.99 - # via - # boto3 - # s3transfer -bracex==2.4 - # via wcmatch -bytecode==0.15.1 - # via ddtrace -cattrs==23.2.3 - # via ddtrace -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # cryptography - # pynacl -cfgv==3.4.0 - # via pre-commit -charset-normalizer==3.3.2 - # via requests -click==8.1.7 - # via - # flask - # mkdocs - # mkdocstrings - # mongogrant - # typer - # uvicorn -colorama==0.4.6 - # via griffe -contourpy==1.2.1 - # via matplotlib -coverage[toml]==7.5.1 - # via pytest-cov -cryptography==42.0.7 - # via paramiko -csscompressor==0.9.5 - # via mkdocs-minify-plugin -cycler==0.12.1 - # via matplotlib -ddsketch==3.0.1 - # via ddtrace -ddtrace==2.8.4 - # via emmet-api (setup.py) -deprecated==1.2.14 - # via opentelemetry-api -distlib==0.3.8 - # via virtualenv -dnspython==2.6.1 - # via - # email-validator - # maggma - # pymongo -email-validator==2.1.1 - # via fastapi -emmet-core==0.83.6 - # via emmet-api (setup.py) -envier==0.5.1 - # via ddtrace -exceptiongroup==1.2.1 - # via - # anyio - # cattrs - # pytest -fastapi==0.111.0 - # via - # emmet-api (setup.py) - # fastapi-cli - # maggma -fastapi-cli==0.0.2 - # via fastapi -filelock==3.14.0 - # via virtualenv -flake8==7.0.0 - # via emmet-api (setup.py) -flask==3.0.3 - # via mongogrant -fonttools==4.51.0 - # via matplotlib -future==1.0.0 - # via uncertainties -ghp-import==2.1.0 - # via mkdocs -griffe==0.44.0 - # via mkdocstrings-python -gunicorn==22.0.0 - # via emmet-api (setup.py) -h11==0.14.0 - # via - # httpcore - # uvicorn -htmlmin2==0.1.13 - # via mkdocs-minify-plugin -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via fastapi -identify==2.5.36 - # via pre-commit -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests -importlib-metadata==7.0.0 - # via opentelemetry-api -iniconfig==2.0.0 - # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via - # emmet-api (setup.py) - # fastapi - # flask - # mkdocs - # mkdocs-material - # mkdocstrings -jmespath==1.0.1 - # via - # boto3 - # botocore -joblib==1.4.2 - # via pymatgen -jsmin==3.0.1 - # via mkdocs-minify-plugin -jsonschema==4.22.0 - # via maggma -jsonschema-specifications==2023.12.1 - # via jsonschema -kiwisolver==1.4.5 - # via matplotlib -latexcodec==3.0.0 - # via pybtex -livereload==2.6.3 - # via emmet-api (setup.py) -maggma==0.66.0 - # via emmet-api (setup.py) -markdown==3.6 - # via - # mkdocs - # mkdocs-autorefs - # mkdocs-material - # mkdocstrings - # pymdown-extensions -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via - # jinja2 - # mkdocs - # mkdocs-autorefs - # mkdocstrings - # werkzeug -matplotlib==3.8.4 - # via pymatgen -mccabe==0.7.0 - # via flake8 -mdurl==0.1.2 - # via markdown-it-py -mergedeep==1.3.4 - # via - # mkdocs - # mkdocs-get-deps -mkdocs==1.6.0 - # via - # emmet-api (setup.py) - # mkdocs-autorefs - # mkdocs-awesome-pages-plugin - # mkdocs-markdownextradata-plugin - # mkdocs-material - # mkdocs-minify-plugin - # mkdocstrings -mkdocs-autorefs==1.0.1 - # via mkdocstrings -mkdocs-awesome-pages-plugin==2.9.2 - # via emmet-api (setup.py) -mkdocs-get-deps==0.2.0 - # via mkdocs -mkdocs-markdownextradata-plugin==0.2.5 - # via emmet-api (setup.py) -mkdocs-material==8.2.16 - # via emmet-api (setup.py) -mkdocs-material-extensions==1.3.1 - # via - # emmet-api (setup.py) - # mkdocs-material -mkdocs-minify-plugin==0.8.0 - # via emmet-api (setup.py) -mkdocstrings[python]==0.25.1 - # via - # emmet-api (setup.py) - # mkdocstrings-python -mkdocstrings-python==1.10.0 - # via mkdocstrings -mongogrant==0.3.3 - # via maggma -mongomock==4.1.2 - # via maggma -monty==2024.4.17 - # via - # emmet-core - # maggma - # pymatgen -mpmath==1.3.0 - # via sympy -msgpack==1.0.8 - # via maggma -mypy==1.10.0 - # via emmet-api (setup.py) -mypy-extensions==1.0.0 - # via - # emmet-api (setup.py) - # mypy -natsort==8.4.0 - # via mkdocs-awesome-pages-plugin -networkx==3.3 - # via pymatgen -nodeenv==1.8.0 - # via pre-commit -numpy==1.26.4 - # via - # contourpy - # maggma - # matplotlib - # pandas - # pymatgen - # scipy - # shapely - # spglib -opentelemetry-api==1.24.0 - # via ddtrace -orjson==3.10.3 - # via - # fastapi - # maggma -packaging==24.0 - # via - # gunicorn - # matplotlib - # mkdocs - # mongomock - # plotly - # pytest -palettable==3.3.3 - # via pymatgen -pandas==2.2.2 - # via pymatgen -paramiko==3.4.0 - # via sshtunnel -pathspec==0.12.1 - # via mkdocs -pillow==10.3.0 - # via matplotlib -platformdirs==4.2.1 - # via - # mkdocs-get-deps - # mkdocstrings - # virtualenv -plotly==5.22.0 - # via pymatgen -pluggy==1.5.0 - # via pytest -pre-commit==3.7.0 - # via emmet-api (setup.py) -protobuf==5.26.1 - # via ddtrace -pybtex==0.24.0 - # via - # emmet-core - # pymatgen -pycodestyle==2.11.1 - # via - # emmet-api (setup.py) - # flake8 -pycparser==2.22 - # via cffi -pydantic==2.7.1 - # via - # emmet-core - # fastapi - # maggma - # pydantic-settings -pydantic-core==2.18.2 - # via pydantic -pydantic-settings==2.2.1 - # via - # emmet-core - # maggma -pydash==8.0.1 - # via maggma -pydocstyle==6.3.0 - # via emmet-api (setup.py) -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via - # mkdocs-material - # rich -pymatgen==2024.5.1 - # via - # emmet-core - # pymatgen-analysis-alloys -pymatgen-analysis-alloys==0.0.6 - # via emmet-api (setup.py) -pymdown-extensions==10.8.1 - # via - # mkdocs-material - # mkdocstrings -pymongo==4.7.1 - # via - # maggma - # mongogrant -pynacl==1.5.0 - # via paramiko -pyparsing==3.1.2 - # via matplotlib -pytest==8.2.0 - # via - # emmet-api (setup.py) - # pytest-cov -pytest-cov==5.0.0 - # via emmet-api (setup.py) -python-dateutil==2.9.0.post0 - # via - # botocore - # ghp-import - # maggma - # matplotlib - # pandas -python-dotenv==1.0.1 - # via - # pydantic-settings - # uvicorn -python-multipart==0.0.9 - # via fastapi -pytz==2024.1 - # via pandas -pyyaml==6.0.1 - # via - # mkdocs - # mkdocs-get-deps - # mkdocs-markdownextradata-plugin - # pre-commit - # pybtex - # pymdown-extensions - # pyyaml-env-tag - # uvicorn -pyyaml-env-tag==0.1 - # via mkdocs -pyzmq==26.0.3 - # via maggma -referencing==0.35.1 - # via - # jsonschema - # jsonschema-specifications -requests==2.31.0 - # via - # mongogrant - # pymatgen -rich==13.7.1 - # via typer -rpds-py==0.18.1 - # via - # jsonschema - # referencing -ruamel-yaml==0.18.6 - # via - # maggma - # pymatgen -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml -s3transfer==0.10.1 - # via boto3 -scipy==1.13.0 - # via pymatgen -sentinels==1.0.0 - # via mongomock -setproctitle==1.3.3 - # via emmet-api (setup.py) -shapely==2.0.4 - # via - # emmet-api (setup.py) - # pymatgen-analysis-alloys -shellingham==1.5.4 - # via typer -six==1.16.0 - # via - # ddsketch - # ddtrace - # livereload - # pybtex - # python-dateutil -sniffio==1.3.1 - # via - # anyio - # httpx -snowballstemmer==2.2.0 - # via pydocstyle -spglib==2.4.0 - # via pymatgen -sqlparse==0.5.0 - # via ddtrace -sshtunnel==0.4.0 - # via maggma -starlette==0.37.2 - # via fastapi -sympy==1.12 - # via pymatgen -tabulate==0.9.0 - # via pymatgen -tenacity==8.3.0 - # via plotly -tomli==2.0.1 - # via - # coverage - # mypy - # pytest -tornado==6.4 - # via livereload -tqdm==4.66.4 - # via - # maggma - # pymatgen -typer==0.12.3 - # via fastapi-cli -types-requests==2.31.0.20240406 - # via emmet-api (setup.py) -types-setuptools==69.5.0.20240423 - # via emmet-api (setup.py) -typing-extensions==4.11.0 - # via - # anyio - # asgiref - # cattrs - # ddtrace - # emmet-core - # fastapi - # mypy - # pydantic - # pydantic-core - # pydash - # typer - # uvicorn -tzdata==2024.1 - # via pandas -ujson==5.9.0 - # via fastapi -uncertainties==3.1.7 - # via pymatgen -urllib3==2.2.1 - # via - # botocore - # requests - # types-requests -uvicorn[standard]==0.29.0 - # via - # fastapi - # fastapi-cli - # maggma -uvloop==0.19.0 - # via uvicorn -virtualenv==20.26.1 - # via pre-commit -watchdog==4.0.0 - # via mkdocs -watchfiles==0.21.0 - # via uvicorn -wcmatch==8.5.1 - # via mkdocs-awesome-pages-plugin -websockets==12.0 - # via uvicorn -werkzeug==3.0.3 - # via flask -wincertstore==0.2 - # via emmet-api (setup.py) -wrapt==1.16.0 - # via deprecated -xmltodict==0.13.0 - # via ddtrace -zipp==3.18.1 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt-e b/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt-e deleted file mode 100644 index ab6a9da5fa..0000000000 --- a/emmet-api/requirements/ubuntu-latest_py3.11_extras.txt-e +++ /dev/null @@ -1,510 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.11_extras.txt -# -aioitertools==0.11.0 - # via maggma -annotated-types==0.6.0 - # via pydantic -anyio==4.3.0 - # via - # httpx - # starlette - # watchfiles -asgi-logger==0.1.0 - # via emmet-api (setup.py) -asgiref==3.8.1 - # via asgi-logger -attrs==23.2.0 - # via - # cattrs - # ddtrace - # jsonschema - # referencing -bcrypt==4.1.3 - # via paramiko -blinker==1.8.2 - # via flask -boto3==1.34.99 - # via - # emmet-api (setup.py) - # maggma -botocore==1.34.99 - # via - # boto3 - # s3transfer -bracex==2.4 - # via wcmatch -bytecode==0.15.1 - # via ddtrace -cattrs==23.2.3 - # via ddtrace -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # cryptography - # pynacl -cfgv==3.4.0 - # via pre-commit -charset-normalizer==3.3.2 - # via requests -click==8.1.7 - # via - # flask - # mkdocs - # mkdocstrings - # mongogrant - # typer - # uvicorn -colorama==0.4.6 - # via griffe -contourpy==1.2.1 - # via matplotlib -coverage[toml]==7.5.1 - # via pytest-cov -cryptography==42.0.7 - # via paramiko -csscompressor==0.9.5 - # via mkdocs-minify-plugin -cycler==0.12.1 - # via matplotlib -ddsketch==3.0.1 - # via ddtrace -ddtrace==2.8.4 - # via emmet-api (setup.py) -deprecated==1.2.14 - # via opentelemetry-api -distlib==0.3.8 - # via virtualenv -dnspython==2.6.1 - # via - # email-validator - # maggma - # pymongo -email-validator==2.1.1 - # via fastapi -emmet-core==0.83.6 - # via emmet-api (setup.py) -envier==0.5.1 - # via ddtrace -fastapi==0.111.0 - # via - # emmet-api (setup.py) - # fastapi-cli - # maggma -fastapi-cli==0.0.2 - # via fastapi -filelock==3.14.0 - # via virtualenv -flake8==7.0.0 - # via emmet-api (setup.py) -flask==3.0.3 - # via mongogrant -fonttools==4.51.0 - # via matplotlib -future==1.0.0 - # via uncertainties -ghp-import==2.1.0 - # via mkdocs -griffe==0.44.0 - # via mkdocstrings-python -gunicorn==22.0.0 - # via emmet-api (setup.py) -h11==0.14.0 - # via - # httpcore - # uvicorn -htmlmin2==0.1.13 - # via mkdocs-minify-plugin -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via fastapi -identify==2.5.36 - # via pre-commit -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests -importlib-metadata==7.0.0 - # via opentelemetry-api -iniconfig==2.0.0 - # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via - # emmet-api (setup.py) - # fastapi - # flask - # mkdocs - # mkdocs-material - # mkdocstrings -jmespath==1.0.1 - # via - # boto3 - # botocore -joblib==1.4.2 - # via pymatgen -jsmin==3.0.1 - # via mkdocs-minify-plugin -jsonschema==4.22.0 - # via maggma -jsonschema-specifications==2023.12.1 - # via jsonschema -kiwisolver==1.4.5 - # via matplotlib -latexcodec==3.0.0 - # via pybtex -livereload==2.6.3 - # via emmet-api (setup.py) -maggma==0.66.0 - # via emmet-api (setup.py) -markdown==3.6 - # via - # mkdocs - # mkdocs-autorefs - # mkdocs-material - # mkdocstrings - # pymdown-extensions -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via - # jinja2 - # mkdocs - # mkdocs-autorefs - # mkdocstrings - # werkzeug -matplotlib==3.8.4 - # via pymatgen -mccabe==0.7.0 - # via flake8 -mdurl==0.1.2 - # via markdown-it-py -mergedeep==1.3.4 - # via - # mkdocs - # mkdocs-get-deps -mkdocs==1.6.0 - # via - # emmet-api (setup.py) - # mkdocs-autorefs - # mkdocs-awesome-pages-plugin - # mkdocs-markdownextradata-plugin - # mkdocs-material - # mkdocs-minify-plugin - # mkdocstrings -mkdocs-autorefs==1.0.1 - # via mkdocstrings -mkdocs-awesome-pages-plugin==2.9.2 - # via emmet-api (setup.py) -mkdocs-get-deps==0.2.0 - # via mkdocs -mkdocs-markdownextradata-plugin==0.2.5 - # via emmet-api (setup.py) -mkdocs-material==8.2.16 - # via emmet-api (setup.py) -mkdocs-material-extensions==1.3.1 - # via - # emmet-api (setup.py) - # mkdocs-material -mkdocs-minify-plugin==0.8.0 - # via emmet-api (setup.py) -mkdocstrings[python]==0.25.1 - # via - # emmet-api (setup.py) - # mkdocstrings-python -mkdocstrings-python==1.10.0 - # via mkdocstrings -mongogrant==0.3.3 - # via maggma -mongomock==4.1.2 - # via maggma -monty==2024.4.17 - # via - # emmet-core - # maggma - # pymatgen -mpmath==1.3.0 - # via sympy -msgpack==1.0.8 - # via maggma -mypy==1.10.0 - # via emmet-api (setup.py) -mypy-extensions==1.0.0 - # via - # emmet-api (setup.py) - # mypy -natsort==8.4.0 - # via mkdocs-awesome-pages-plugin -networkx==3.3 - # via pymatgen -nodeenv==1.8.0 - # via pre-commit -numpy==1.26.4 - # via - # contourpy - # maggma - # matplotlib - # pandas - # pymatgen - # scipy - # shapely - # spglib -opentelemetry-api==1.24.0 - # via ddtrace -orjson==3.10.3 - # via - # fastapi - # maggma -packaging==24.0 - # via - # gunicorn - # matplotlib - # mkdocs - # mongomock - # plotly - # pytest -palettable==3.3.3 - # via pymatgen -pandas==2.2.2 - # via pymatgen -paramiko==3.4.0 - # via sshtunnel -pathspec==0.12.1 - # via mkdocs -pillow==10.3.0 - # via matplotlib -platformdirs==4.2.1 - # via - # mkdocs-get-deps - # mkdocstrings - # virtualenv -plotly==5.22.0 - # via pymatgen -pluggy==1.5.0 - # via pytest -pre-commit==3.7.0 - # via emmet-api (setup.py) -protobuf==5.26.1 - # via ddtrace -pybtex==0.24.0 - # via - # emmet-core - # pymatgen -pycodestyle==2.11.1 - # via - # emmet-api (setup.py) - # flake8 -pycparser==2.22 - # via cffi -pydantic==2.7.1 - # via - # emmet-core - # fastapi - # maggma - # pydantic-settings -pydantic-core==2.18.2 - # via pydantic -pydantic-settings==2.2.1 - # via - # emmet-core - # maggma -pydash==8.0.1 - # via maggma -pydocstyle==6.3.0 - # via emmet-api (setup.py) -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via - # mkdocs-material - # rich -pymatgen==2024.5.1 - # via - # emmet-core - # pymatgen-analysis-alloys -pymatgen-analysis-alloys==0.0.6 - # via emmet-api (setup.py) -pymdown-extensions==10.8.1 - # via - # mkdocs-material - # mkdocstrings -pymongo==4.7.1 - # via - # maggma - # mongogrant -pynacl==1.5.0 - # via paramiko -pyparsing==3.1.2 - # via matplotlib -pytest==8.2.0 - # via - # emmet-api (setup.py) - # pytest-cov -pytest-cov==5.0.0 - # via emmet-api (setup.py) -python-dateutil==2.9.0.post0 - # via - # botocore - # ghp-import - # maggma - # matplotlib - # pandas -python-dotenv==1.0.1 - # via - # pydantic-settings - # uvicorn -python-multipart==0.0.9 - # via fastapi -pytz==2024.1 - # via pandas -pyyaml==6.0.1 - # via - # mkdocs - # mkdocs-get-deps - # mkdocs-markdownextradata-plugin - # pre-commit - # pybtex - # pymdown-extensions - # pyyaml-env-tag - # uvicorn -pyyaml-env-tag==0.1 - # via mkdocs -pyzmq==26.0.3 - # via maggma -referencing==0.35.1 - # via - # jsonschema - # jsonschema-specifications -requests==2.31.0 - # via - # mongogrant - # pymatgen -rich==13.7.1 - # via typer -rpds-py==0.18.1 - # via - # jsonschema - # referencing -ruamel-yaml==0.18.6 - # via - # maggma - # pymatgen -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml -s3transfer==0.10.1 - # via boto3 -scipy==1.13.0 - # via pymatgen -sentinels==1.0.0 - # via mongomock -setproctitle==1.3.3 - # via emmet-api (setup.py) -shapely==2.0.4 - # via - # emmet-api (setup.py) - # pymatgen-analysis-alloys -shellingham==1.5.4 - # via typer -six==1.16.0 - # via - # ddsketch - # ddtrace - # livereload - # pybtex - # python-dateutil -sniffio==1.3.1 - # via - # anyio - # httpx -snowballstemmer==2.2.0 - # via pydocstyle -spglib==2.4.0 - # via pymatgen -sqlparse==0.5.0 - # via ddtrace -sshtunnel==0.4.0 - # via maggma -starlette==0.37.2 - # via fastapi -sympy==1.12 - # via pymatgen -tabulate==0.9.0 - # via pymatgen -tenacity==8.3.0 - # via plotly -tornado==6.4 - # via livereload -tqdm==4.66.4 - # via - # maggma - # pymatgen -typer==0.12.3 - # via fastapi-cli -types-requests==2.31.0.20240406 - # via emmet-api (setup.py) -types-setuptools==69.5.0.20240423 - # via emmet-api (setup.py) -typing-extensions==4.11.0 - # via - # ddtrace - # emmet-core - # fastapi - # mypy - # pydantic - # pydantic-core - # pydash - # typer -tzdata==2024.1 - # via pandas -ujson==5.9.0 - # via fastapi -uncertainties==3.1.7 - # via pymatgen -urllib3==2.2.1 - # via - # botocore - # requests - # types-requests -uvicorn[standard]==0.29.0 - # via - # fastapi - # fastapi-cli - # maggma -uvloop==0.19.0 - # via uvicorn -virtualenv==20.26.1 - # via pre-commit -watchdog==4.0.0 - # via mkdocs -watchfiles==0.21.0 - # via uvicorn -wcmatch==8.5.1 - # via mkdocs-awesome-pages-plugin -websockets==12.0 - # via uvicorn -werkzeug==3.0.3 - # via flask -wincertstore==0.2 - # via emmet-api (setup.py) -wrapt==1.16.0 - # via deprecated -xmltodict==0.13.0 - # via ddtrace -zipp==3.18.1 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt-e b/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt-e deleted file mode 100644 index 6680b8f845..0000000000 --- a/emmet-api/requirements/ubuntu-latest_py3.9_extras.txt-e +++ /dev/null @@ -1,541 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.9_extras.txt -# -aioitertools==0.11.0 - # via maggma -annotated-types==0.6.0 - # via pydantic -anyio==4.3.0 - # via - # httpx - # starlette - # watchfiles -asgi-logger==0.1.0 - # via emmet-api (setup.py) -asgiref==3.8.1 - # via asgi-logger -attrs==23.2.0 - # via - # cattrs - # ddtrace - # jsonschema - # referencing -bcrypt==4.1.3 - # via paramiko -blinker==1.8.2 - # via flask -boto3==1.34.99 - # via - # emmet-api (setup.py) - # maggma -botocore==1.34.99 - # via - # boto3 - # s3transfer -bracex==2.4 - # via wcmatch -bytecode==0.15.1 - # via ddtrace -cattrs==23.2.3 - # via ddtrace -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # cryptography - # pynacl -cfgv==3.4.0 - # via pre-commit -charset-normalizer==3.3.2 - # via requests -click==8.1.7 - # via - # flask - # mkdocs - # mkdocstrings - # mongogrant - # typer - # uvicorn -colorama==0.4.6 - # via griffe -contourpy==1.2.1 - # via matplotlib -coverage[toml]==7.5.1 - # via pytest-cov -cryptography==42.0.7 - # via paramiko -csscompressor==0.9.5 - # via mkdocs-minify-plugin -cycler==0.12.1 - # via matplotlib -ddsketch==3.0.1 - # via ddtrace -ddtrace==2.8.4 - # via emmet-api (setup.py) -deprecated==1.2.14 - # via opentelemetry-api -distlib==0.3.8 - # via virtualenv -dnspython==2.6.1 - # via - # email-validator - # maggma - # pymongo -email-validator==2.1.1 - # via fastapi -emmet-core==0.83.6 - # via emmet-api (setup.py) -envier==0.5.1 - # via ddtrace -exceptiongroup==1.2.1 - # via - # anyio - # cattrs - # pytest -fastapi==0.111.0 - # via - # emmet-api (setup.py) - # fastapi-cli - # maggma -fastapi-cli==0.0.2 - # via fastapi -filelock==3.14.0 - # via virtualenv -flake8==7.0.0 - # via emmet-api (setup.py) -flask==3.0.3 - # via mongogrant -fonttools==4.51.0 - # via matplotlib -future==1.0.0 - # via uncertainties -ghp-import==2.1.0 - # via mkdocs -griffe==0.44.0 - # via mkdocstrings-python -gunicorn==22.0.0 - # via emmet-api (setup.py) -h11==0.14.0 - # via - # httpcore - # uvicorn -htmlmin2==0.1.13 - # via mkdocs-minify-plugin -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via fastapi -identify==2.5.36 - # via pre-commit -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests -importlib-metadata==7.0.0 - # via - # flask - # markdown - # mkdocs - # mkdocs-get-deps - # mkdocstrings - # opentelemetry-api -importlib-resources==6.4.0 - # via - # matplotlib - # spglib -iniconfig==2.0.0 - # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via - # emmet-api (setup.py) - # fastapi - # flask - # mkdocs - # mkdocs-material - # mkdocstrings -jmespath==1.0.1 - # via - # boto3 - # botocore -joblib==1.4.2 - # via pymatgen -jsmin==3.0.1 - # via mkdocs-minify-plugin -jsonschema==4.22.0 - # via maggma -jsonschema-specifications==2023.12.1 - # via jsonschema -kiwisolver==1.4.5 - # via matplotlib -latexcodec==3.0.0 - # via pybtex -livereload==2.6.3 - # via emmet-api (setup.py) -maggma==0.66.0 - # via emmet-api (setup.py) -markdown==3.6 - # via - # mkdocs - # mkdocs-autorefs - # mkdocs-material - # mkdocstrings - # pymdown-extensions -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via - # jinja2 - # mkdocs - # mkdocs-autorefs - # mkdocstrings - # werkzeug -matplotlib==3.8.4 - # via pymatgen -mccabe==0.7.0 - # via flake8 -mdurl==0.1.2 - # via markdown-it-py -mergedeep==1.3.4 - # via - # mkdocs - # mkdocs-get-deps -mkdocs==1.6.0 - # via - # emmet-api (setup.py) - # mkdocs-autorefs - # mkdocs-awesome-pages-plugin - # mkdocs-markdownextradata-plugin - # mkdocs-material - # mkdocs-minify-plugin - # mkdocstrings -mkdocs-autorefs==1.0.1 - # via mkdocstrings -mkdocs-awesome-pages-plugin==2.9.2 - # via emmet-api (setup.py) -mkdocs-get-deps==0.2.0 - # via mkdocs -mkdocs-markdownextradata-plugin==0.2.5 - # via emmet-api (setup.py) -mkdocs-material==8.2.16 - # via emmet-api (setup.py) -mkdocs-material-extensions==1.3.1 - # via - # emmet-api (setup.py) - # mkdocs-material -mkdocs-minify-plugin==0.8.0 - # via emmet-api (setup.py) -mkdocstrings[python]==0.25.1 - # via - # emmet-api (setup.py) - # mkdocstrings-python -mkdocstrings-python==1.10.0 - # via mkdocstrings -mongogrant==0.3.3 - # via maggma -mongomock==4.1.2 - # via maggma -monty==2024.4.17 - # via - # emmet-core - # maggma - # pymatgen -mpmath==1.3.0 - # via sympy -msgpack==1.0.8 - # via maggma -mypy==1.10.0 - # via emmet-api (setup.py) -mypy-extensions==1.0.0 - # via - # emmet-api (setup.py) - # mypy -natsort==8.4.0 - # via mkdocs-awesome-pages-plugin -networkx==3.2.1 - # via pymatgen -nodeenv==1.8.0 - # via pre-commit -numpy==1.26.4 - # via - # contourpy - # maggma - # matplotlib - # pandas - # pymatgen - # scipy - # shapely - # spglib -opentelemetry-api==1.24.0 - # via ddtrace -orjson==3.10.3 - # via - # fastapi - # maggma -packaging==24.0 - # via - # gunicorn - # matplotlib - # mkdocs - # mongomock - # plotly - # pytest -palettable==3.3.3 - # via pymatgen -pandas==2.2.2 - # via pymatgen -paramiko==3.4.0 - # via sshtunnel -pathspec==0.12.1 - # via mkdocs -pillow==10.3.0 - # via matplotlib -platformdirs==4.2.1 - # via - # mkdocs-get-deps - # mkdocstrings - # virtualenv -plotly==5.22.0 - # via pymatgen -pluggy==1.5.0 - # via pytest -pre-commit==3.7.0 - # via emmet-api (setup.py) -protobuf==5.26.1 - # via ddtrace -pybtex==0.24.0 - # via - # emmet-core - # pymatgen -pycodestyle==2.11.1 - # via - # emmet-api (setup.py) - # flake8 -pycparser==2.22 - # via cffi -pydantic==2.7.1 - # via - # emmet-core - # fastapi - # maggma - # pydantic-settings -pydantic-core==2.18.2 - # via pydantic -pydantic-settings==2.2.1 - # via - # emmet-core - # maggma -pydash==8.0.1 - # via maggma -pydocstyle==6.3.0 - # via emmet-api (setup.py) -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via - # mkdocs-material - # rich -pymatgen==2024.5.1 - # via - # emmet-core - # pymatgen-analysis-alloys -pymatgen-analysis-alloys==0.0.6 - # via emmet-api (setup.py) -pymdown-extensions==10.8.1 - # via - # mkdocs-material - # mkdocstrings -pymongo==4.7.1 - # via - # maggma - # mongogrant -pynacl==1.5.0 - # via paramiko -pyparsing==3.1.2 - # via matplotlib -pytest==8.2.0 - # via - # emmet-api (setup.py) - # pytest-cov -pytest-cov==5.0.0 - # via emmet-api (setup.py) -python-dateutil==2.9.0.post0 - # via - # botocore - # ghp-import - # maggma - # matplotlib - # pandas -python-dotenv==1.0.1 - # via - # pydantic-settings - # uvicorn -python-multipart==0.0.9 - # via fastapi -pytz==2024.1 - # via pandas -pyyaml==6.0.1 - # via - # mkdocs - # mkdocs-get-deps - # mkdocs-markdownextradata-plugin - # pre-commit - # pybtex - # pymdown-extensions - # pyyaml-env-tag - # uvicorn -pyyaml-env-tag==0.1 - # via mkdocs -pyzmq==26.0.3 - # via maggma -referencing==0.35.1 - # via - # jsonschema - # jsonschema-specifications -requests==2.31.0 - # via - # mongogrant - # pymatgen -rich==13.7.1 - # via typer -rpds-py==0.18.1 - # via - # jsonschema - # referencing -ruamel-yaml==0.18.6 - # via - # maggma - # pymatgen -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml -s3transfer==0.10.1 - # via boto3 -scipy==1.13.0 - # via pymatgen -sentinels==1.0.0 - # via mongomock -setproctitle==1.3.3 - # via emmet-api (setup.py) -shapely==2.0.4 - # via - # emmet-api (setup.py) - # pymatgen-analysis-alloys -shellingham==1.5.4 - # via typer -six==1.16.0 - # via - # ddsketch - # ddtrace - # livereload - # pybtex - # python-dateutil -sniffio==1.3.1 - # via - # anyio - # httpx -snowballstemmer==2.2.0 - # via pydocstyle -spglib==2.4.0 - # via pymatgen -sqlparse==0.5.0 - # via ddtrace -sshtunnel==0.4.0 - # via maggma -starlette==0.37.2 - # via fastapi -sympy==1.12 - # via pymatgen -tabulate==0.9.0 - # via pymatgen -tenacity==8.3.0 - # via plotly -tomli==2.0.1 - # via - # coverage - # mypy - # pytest -tornado==6.4 - # via livereload -tqdm==4.66.4 - # via - # maggma - # pymatgen -typer==0.12.3 - # via fastapi-cli -types-requests==2.31.0.6 - # via emmet-api (setup.py) -types-setuptools==69.5.0.20240423 - # via emmet-api (setup.py) -types-urllib3==1.26.25.14 - # via types-requests -typing-extensions==4.11.0 - # via - # aioitertools - # anyio - # asgiref - # bytecode - # cattrs - # ddtrace - # emmet-core - # fastapi - # mkdocstrings - # mypy - # pydantic - # pydantic-core - # pydash - # starlette - # typer - # uvicorn -tzdata==2024.1 - # via pandas -ujson==5.9.0 - # via fastapi -uncertainties==3.1.7 - # via pymatgen -urllib3==1.26.18 - # via - # botocore - # requests -uvicorn[standard]==0.29.0 - # via - # fastapi - # fastapi-cli - # maggma -uvloop==0.19.0 - # via uvicorn -virtualenv==20.26.1 - # via pre-commit -watchdog==4.0.0 - # via mkdocs -watchfiles==0.21.0 - # via uvicorn -wcmatch==8.5.1 - # via mkdocs-awesome-pages-plugin -websockets==12.0 - # via uvicorn -werkzeug==3.0.3 - # via flask -wincertstore==0.2 - # via emmet-api (setup.py) -wrapt==1.16.0 - # via deprecated -xmltodict==0.13.0 - # via ddtrace -zipp==3.18.1 - # via - # importlib-metadata - # importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt-e b/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt-e deleted file mode 100644 index a93aa1d7bc..0000000000 --- a/emmet-builders/requirements/ubuntu-latest_py3.10_extras.txt-e +++ /dev/null @@ -1,681 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.10_extras.txt -# -aiohttp==3.9.5 - # via fsspec -aioitertools==0.11.0 - # via maggma -aiosignal==1.3.1 - # via aiohttp -annotated-types==0.6.0 - # via pydantic -anyio==4.3.0 - # via - # httpx - # starlette - # watchfiles -ase==3.22.1 - # via - # chgnet - # matcalc - # matgl -async-timeout==4.0.3 - # via aiohttp -attrs==23.2.0 - # via - # aiohttp - # jsonschema - # referencing -bcrypt==4.1.3 - # via paramiko -blinker==1.8.2 - # via flask -boto3==1.34.99 - # via maggma -botocore==1.34.99 - # via - # boto3 - # s3transfer -bracex==2.4 - # via wcmatch -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # cryptography - # pynacl -cfgv==3.4.0 - # via pre-commit -charset-normalizer==3.3.2 - # via requests -chgnet==0.3.5 - # via emmet-core -click==8.1.7 - # via - # flask - # mkdocs - # mkdocstrings - # mongogrant - # typer - # uvicorn -colorama==0.4.6 - # via - # griffe - # pretty-errors -contourpy==1.2.1 - # via matplotlib -coverage[toml]==7.5.1 - # via pytest-cov -cryptography==42.0.7 - # via paramiko -csscompressor==0.9.5 - # via mkdocs-minify-plugin -cycler==0.12.1 - # via matplotlib -cython==3.0.10 - # via chgnet -dgl==2.1.0 - # via matgl -distlib==0.3.8 - # via virtualenv -dnspython==2.6.1 - # via - # email-validator - # maggma - # pymongo -email-validator==2.1.1 - # via fastapi -emmet-core[all,ml]==0.83.6 - # via - # emmet-builders (setup.py) - # mp-api -exceptiongroup==1.2.1 - # via - # anyio - # pytest -fastapi==0.111.0 - # via - # fastapi-cli - # maggma -fastapi-cli==0.0.2 - # via fastapi -filelock==3.14.0 - # via - # torch - # triton - # virtualenv -flake8==7.0.0 - # via emmet-builders (setup.py) -flask==3.0.3 - # via mongogrant -fonttools==4.51.0 - # via matplotlib -frozenlist==1.4.1 - # via - # aiohttp - # aiosignal -fsspec[http]==2024.3.1 - # via - # pytorch-lightning - # torch -future==1.0.0 - # via uncertainties -ghp-import==2.1.0 - # via mkdocs -griffe==0.44.0 - # via mkdocstrings-python -h11==0.14.0 - # via - # httpcore - # uvicorn -h5py==3.11.0 - # via phonopy -htmlmin2==0.1.13 - # via mkdocs-minify-plugin -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via fastapi -identify==2.5.36 - # via pre-commit -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests - # yarl -inflect==7.2.1 - # via robocrys -iniconfig==2.0.0 - # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via - # emmet-builders (setup.py) - # fastapi - # flask - # mkdocs - # mkdocs-material - # mkdocstrings - # torch -jmespath==1.0.1 - # via - # boto3 - # botocore -joblib==1.4.2 - # via - # matcalc - # pymatgen - # pymatgen-analysis-diffusion - # scikit-learn -jsmin==3.0.1 - # via mkdocs-minify-plugin -jsonschema==4.22.0 - # via maggma -jsonschema-specifications==2023.12.1 - # via jsonschema -kiwisolver==1.4.5 - # via matplotlib -latexcodec==3.0.0 - # via pybtex -lightning-utilities==0.11.2 - # via - # pytorch-lightning - # torchmetrics -livereload==2.6.3 - # via emmet-builders (setup.py) -maggma==0.66.0 - # via - # emmet-builders (setup.py) - # mp-api -markdown==3.6 - # via - # mkdocs - # mkdocs-autorefs - # mkdocs-material - # mkdocstrings - # pymdown-extensions -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via - # jinja2 - # mkdocs - # mkdocs-autorefs - # mkdocstrings - # werkzeug -matcalc==0.0.4 - # via emmet-core -matgl==1.0.0 - # via emmet-core -matminer==0.9.2 - # via - # emmet-builders (setup.py) - # robocrys -matplotlib==3.8.4 - # via - # ase - # phonopy - # pymatgen -mccabe==0.7.0 - # via flake8 -mdurl==0.1.2 - # via markdown-it-py -mergedeep==1.3.4 - # via - # mkdocs - # mkdocs-get-deps -mkdocs==1.6.0 - # via - # emmet-builders (setup.py) - # mkdocs-autorefs - # mkdocs-awesome-pages-plugin - # mkdocs-markdownextradata-plugin - # mkdocs-material - # mkdocs-minify-plugin - # mkdocstrings -mkdocs-autorefs==1.0.1 - # via mkdocstrings -mkdocs-awesome-pages-plugin==2.9.2 - # via emmet-builders (setup.py) -mkdocs-get-deps==0.2.0 - # via mkdocs -mkdocs-markdownextradata-plugin==0.2.5 - # via emmet-builders (setup.py) -mkdocs-material==8.2.16 - # via emmet-builders (setup.py) -mkdocs-material-extensions==1.3.1 - # via - # emmet-builders (setup.py) - # mkdocs-material -mkdocs-minify-plugin==0.8.0 - # via emmet-builders (setup.py) -mkdocstrings[python]==0.25.1 - # via - # emmet-builders (setup.py) - # mkdocstrings-python -mkdocstrings-python==1.10.0 - # via mkdocstrings -mongogrant==0.3.3 - # via maggma -mongomock==4.1.2 - # via maggma -monty==2024.4.17 - # via - # emmet-core - # maggma - # matminer - # mp-api - # pymatgen - # robocrys -more-itertools==10.2.0 - # via inflect -mp-api==0.41.2 - # via robocrys -mpmath==1.3.0 - # via sympy -msgpack==1.0.8 - # via - # maggma - # mp-api -multidict==6.0.5 - # via - # aiohttp - # yarl -mypy==1.10.0 - # via emmet-builders (setup.py) -mypy-extensions==1.0.0 - # via - # emmet-builders (setup.py) - # mypy -natsort==8.4.0 - # via mkdocs-awesome-pages-plugin -networkx==3.3 - # via - # dgl - # pymatgen - # robocrys - # torch -nodeenv==1.8.0 - # via pre-commit -numpy==1.26.4 - # via - # ase - # chgnet - # contourpy - # dgl - # h5py - # maggma - # matminer - # matplotlib - # pandas - # phonopy - # pymatgen - # pytorch-lightning - # robocrys - # scikit-learn - # scipy - # seekpath - # shapely - # spglib - # torchmetrics -nvidia-cublas-cu12==12.1.3.1 - # via - # nvidia-cudnn-cu12 - # nvidia-cusolver-cu12 - # torch -nvidia-cuda-cupti-cu12==12.1.105 - # via torch -nvidia-cuda-nvrtc-cu12==12.1.105 - # via torch -nvidia-cuda-runtime-cu12==12.1.105 - # via torch -nvidia-cudnn-cu12==8.9.2.26 - # via torch -nvidia-cufft-cu12==11.0.2.54 - # via torch -nvidia-curand-cu12==10.3.2.106 - # via torch -nvidia-cusolver-cu12==11.4.5.107 - # via torch -nvidia-cusparse-cu12==12.1.0.106 - # via - # nvidia-cusolver-cu12 - # torch -nvidia-ml-py3==7.352.0 - # via chgnet -nvidia-nccl-cu12==2.20.5 - # via torch -nvidia-nvjitlink-cu12==12.4.127 - # via - # nvidia-cusolver-cu12 - # nvidia-cusparse-cu12 -nvidia-nvtx-cu12==12.1.105 - # via torch -orjson==3.10.3 - # via - # fastapi - # maggma -packaging==24.0 - # via - # lightning-utilities - # matplotlib - # mkdocs - # mongomock - # plotly - # pytest - # pytorch-lightning - # torchmetrics -palettable==3.3.3 - # via pymatgen -pandas==2.2.2 - # via - # matminer - # pymatgen -paramiko==3.4.0 - # via sshtunnel -pathspec==0.12.1 - # via mkdocs -phonopy==2.23.1 - # via matcalc -pillow==10.3.0 - # via matplotlib -platformdirs==4.2.1 - # via - # mkdocs-get-deps - # mkdocstrings - # virtualenv -plotly==5.22.0 - # via pymatgen -pluggy==1.5.0 - # via pytest -pre-commit==3.7.0 - # via emmet-builders (setup.py) -pretty-errors==1.2.25 - # via torchmetrics -psutil==5.9.8 - # via dgl -pubchempy==1.0.4 - # via robocrys -pybtex==0.24.0 - # via - # emmet-core - # pymatgen - # robocrys -pycodestyle==2.11.1 - # via - # emmet-builders (setup.py) - # flake8 -pycparser==2.22 - # via cffi -pydantic==2.7.1 - # via - # emmet-core - # fastapi - # maggma - # pydantic-settings -pydantic-core==2.18.2 - # via pydantic -pydantic-settings==2.2.1 - # via - # emmet-core - # maggma -pydash==8.0.1 - # via maggma -pydocstyle==6.3.0 - # via emmet-builders (setup.py) -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via - # mkdocs-material - # rich -pymatgen==2024.5.1 - # via - # chgnet - # emmet-core - # matcalc - # matgl - # matminer - # mp-api - # pymatgen-analysis-alloys - # pymatgen-analysis-diffusion - # robocrys -pymatgen-analysis-alloys==0.0.6 - # via emmet-core -pymatgen-analysis-diffusion==2023.8.15 - # via emmet-core -pymdown-extensions==10.8.1 - # via - # mkdocs-material - # mkdocstrings -pymongo==4.7.1 - # via - # maggma - # matminer - # mongogrant -pynacl==1.5.0 - # via paramiko -pyparsing==3.1.2 - # via matplotlib -pytest==8.2.0 - # via - # emmet-builders (setup.py) - # pytest-cov -pytest-cov==5.0.0 - # via emmet-builders (setup.py) -python-dateutil==2.9.0.post0 - # via - # botocore - # ghp-import - # maggma - # matplotlib - # pandas -python-dotenv==1.0.1 - # via - # pydantic-settings - # uvicorn -python-multipart==0.0.9 - # via fastapi -pytorch-lightning==2.2.4 - # via matgl -pytz==2024.1 - # via pandas -pyyaml==6.0.1 - # via - # mkdocs - # mkdocs-get-deps - # mkdocs-markdownextradata-plugin - # phonopy - # pre-commit - # pybtex - # pymdown-extensions - # pytorch-lightning - # pyyaml-env-tag - # uvicorn -pyyaml-env-tag==0.1 - # via mkdocs -pyzmq==26.0.3 - # via maggma -referencing==0.35.1 - # via - # jsonschema - # jsonschema-specifications -requests==2.31.0 - # via - # dgl - # matminer - # mongogrant - # mp-api - # pymatgen - # torchdata -rich==13.7.1 - # via typer -robocrys==0.2.9 - # via emmet-core -rpds-py==0.18.1 - # via - # jsonschema - # referencing -ruamel-yaml==0.18.6 - # via - # maggma - # pymatgen - # robocrys -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml -s3transfer==0.10.1 - # via boto3 -scikit-learn==1.4.2 - # via matminer -scipy==1.13.0 - # via - # ase - # dgl - # pymatgen - # robocrys - # scikit-learn -seekpath==2.1.0 - # via emmet-core -sentinels==1.0.0 - # via mongomock -shapely==2.0.4 - # via pymatgen-analysis-alloys -shellingham==1.5.4 - # via typer -six==1.16.0 - # via - # livereload - # pybtex - # python-dateutil -smart-open==7.0.4 - # via mp-api -sniffio==1.3.1 - # via - # anyio - # httpx -snowballstemmer==2.2.0 - # via pydocstyle -spglib==2.4.0 - # via - # phonopy - # pymatgen - # robocrys - # seekpath -sshtunnel==0.4.0 - # via maggma -starlette==0.37.2 - # via fastapi -sympy==1.12 - # via - # matminer - # pymatgen - # torch -tabulate==0.9.0 - # via pymatgen -tenacity==8.3.0 - # via plotly -threadpoolctl==3.5.0 - # via scikit-learn -tomli==2.0.1 - # via - # coverage - # mypy - # pytest -torch==2.3.0 - # via - # chgnet - # matgl - # pytorch-lightning - # torchdata - # torchmetrics -torchdata==0.7.1 - # via dgl -torchmetrics==1.4.0 - # via pytorch-lightning -tornado==6.4 - # via livereload -tqdm==4.66.4 - # via - # dgl - # maggma - # matminer - # pymatgen - # pytorch-lightning -triton==2.3.0 - # via torch -typeguard==4.2.1 - # via inflect -typer==0.12.3 - # via fastapi-cli -types-requests==2.31.0.20240406 - # via emmet-builders (setup.py) -types-setuptools==69.5.0.20240423 - # via emmet-builders (setup.py) -typing-extensions==4.11.0 - # via - # anyio - # emmet-core - # fastapi - # inflect - # lightning-utilities - # mp-api - # mypy - # pydantic - # pydantic-core - # pydash - # pytorch-lightning - # torch - # typeguard - # typer - # uvicorn -tzdata==2024.1 - # via pandas -ujson==5.9.0 - # via fastapi -uncertainties==3.1.7 - # via pymatgen -urllib3==2.2.1 - # via - # botocore - # requests - # torchdata - # types-requests -uvicorn[standard]==0.29.0 - # via - # fastapi - # fastapi-cli - # maggma -uvloop==0.19.0 - # via uvicorn -virtualenv==20.26.1 - # via pre-commit -watchdog==4.0.0 - # via mkdocs -watchfiles==0.21.0 - # via uvicorn -wcmatch==8.5.1 - # via mkdocs-awesome-pages-plugin -websockets==12.0 - # via uvicorn -werkzeug==3.0.3 - # via flask -wincertstore==0.2 - # via emmet-builders (setup.py) -wrapt==1.16.0 - # via smart-open -yarl==1.9.4 - # via aiohttp - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt-e b/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt-e deleted file mode 100644 index 45aab844a1..0000000000 --- a/emmet-builders/requirements/ubuntu-latest_py3.11_extras.txt-e +++ /dev/null @@ -1,668 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.11_extras.txt -# -aiohttp==3.9.5 - # via fsspec -aioitertools==0.11.0 - # via maggma -aiosignal==1.3.1 - # via aiohttp -annotated-types==0.6.0 - # via pydantic -anyio==4.3.0 - # via - # httpx - # starlette - # watchfiles -ase==3.22.1 - # via - # chgnet - # matcalc - # matgl -attrs==23.2.0 - # via - # aiohttp - # jsonschema - # referencing -bcrypt==4.1.3 - # via paramiko -blinker==1.8.2 - # via flask -boto3==1.34.99 - # via maggma -botocore==1.34.99 - # via - # boto3 - # s3transfer -bracex==2.4 - # via wcmatch -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # cryptography - # pynacl -cfgv==3.4.0 - # via pre-commit -charset-normalizer==3.3.2 - # via requests -chgnet==0.3.5 - # via emmet-core -click==8.1.7 - # via - # flask - # mkdocs - # mkdocstrings - # mongogrant - # typer - # uvicorn -colorama==0.4.6 - # via - # griffe - # pretty-errors -contourpy==1.2.1 - # via matplotlib -coverage[toml]==7.5.1 - # via pytest-cov -cryptography==42.0.7 - # via paramiko -csscompressor==0.9.5 - # via mkdocs-minify-plugin -cycler==0.12.1 - # via matplotlib -cython==3.0.10 - # via chgnet -dgl==2.1.0 - # via matgl -distlib==0.3.8 - # via virtualenv -dnspython==2.6.1 - # via - # email-validator - # maggma - # pymongo -email-validator==2.1.1 - # via fastapi -emmet-core[all,ml]==0.83.6 - # via - # emmet-builders (setup.py) - # mp-api -fastapi==0.111.0 - # via - # fastapi-cli - # maggma -fastapi-cli==0.0.2 - # via fastapi -filelock==3.14.0 - # via - # torch - # triton - # virtualenv -flake8==7.0.0 - # via emmet-builders (setup.py) -flask==3.0.3 - # via mongogrant -fonttools==4.51.0 - # via matplotlib -frozenlist==1.4.1 - # via - # aiohttp - # aiosignal -fsspec[http]==2024.3.1 - # via - # pytorch-lightning - # torch -future==1.0.0 - # via uncertainties -ghp-import==2.1.0 - # via mkdocs -griffe==0.44.0 - # via mkdocstrings-python -h11==0.14.0 - # via - # httpcore - # uvicorn -h5py==3.11.0 - # via phonopy -htmlmin2==0.1.13 - # via mkdocs-minify-plugin -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via fastapi -identify==2.5.36 - # via pre-commit -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests - # yarl -inflect==7.2.1 - # via robocrys -iniconfig==2.0.0 - # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via - # emmet-builders (setup.py) - # fastapi - # flask - # mkdocs - # mkdocs-material - # mkdocstrings - # torch -jmespath==1.0.1 - # via - # boto3 - # botocore -joblib==1.4.2 - # via - # matcalc - # pymatgen - # pymatgen-analysis-diffusion - # scikit-learn -jsmin==3.0.1 - # via mkdocs-minify-plugin -jsonschema==4.22.0 - # via maggma -jsonschema-specifications==2023.12.1 - # via jsonschema -kiwisolver==1.4.5 - # via matplotlib -latexcodec==3.0.0 - # via pybtex -lightning-utilities==0.11.2 - # via - # pytorch-lightning - # torchmetrics -livereload==2.6.3 - # via emmet-builders (setup.py) -maggma==0.66.0 - # via - # emmet-builders (setup.py) - # mp-api -markdown==3.6 - # via - # mkdocs - # mkdocs-autorefs - # mkdocs-material - # mkdocstrings - # pymdown-extensions -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via - # jinja2 - # mkdocs - # mkdocs-autorefs - # mkdocstrings - # werkzeug -matcalc==0.0.4 - # via emmet-core -matgl==1.0.0 - # via emmet-core -matminer==0.9.2 - # via - # emmet-builders (setup.py) - # robocrys -matplotlib==3.8.4 - # via - # ase - # phonopy - # pymatgen -mccabe==0.7.0 - # via flake8 -mdurl==0.1.2 - # via markdown-it-py -mergedeep==1.3.4 - # via - # mkdocs - # mkdocs-get-deps -mkdocs==1.6.0 - # via - # emmet-builders (setup.py) - # mkdocs-autorefs - # mkdocs-awesome-pages-plugin - # mkdocs-markdownextradata-plugin - # mkdocs-material - # mkdocs-minify-plugin - # mkdocstrings -mkdocs-autorefs==1.0.1 - # via mkdocstrings -mkdocs-awesome-pages-plugin==2.9.2 - # via emmet-builders (setup.py) -mkdocs-get-deps==0.2.0 - # via mkdocs -mkdocs-markdownextradata-plugin==0.2.5 - # via emmet-builders (setup.py) -mkdocs-material==8.2.16 - # via emmet-builders (setup.py) -mkdocs-material-extensions==1.3.1 - # via - # emmet-builders (setup.py) - # mkdocs-material -mkdocs-minify-plugin==0.8.0 - # via emmet-builders (setup.py) -mkdocstrings[python]==0.25.1 - # via - # emmet-builders (setup.py) - # mkdocstrings-python -mkdocstrings-python==1.10.0 - # via mkdocstrings -mongogrant==0.3.3 - # via maggma -mongomock==4.1.2 - # via maggma -monty==2024.4.17 - # via - # emmet-core - # maggma - # matminer - # mp-api - # pymatgen - # robocrys -more-itertools==10.2.0 - # via inflect -mp-api==0.41.2 - # via robocrys -mpmath==1.3.0 - # via sympy -msgpack==1.0.8 - # via - # maggma - # mp-api -multidict==6.0.5 - # via - # aiohttp - # yarl -mypy==1.10.0 - # via emmet-builders (setup.py) -mypy-extensions==1.0.0 - # via - # emmet-builders (setup.py) - # mypy -natsort==8.4.0 - # via mkdocs-awesome-pages-plugin -networkx==3.3 - # via - # dgl - # pymatgen - # robocrys - # torch -nodeenv==1.8.0 - # via pre-commit -numpy==1.26.4 - # via - # ase - # chgnet - # contourpy - # dgl - # h5py - # maggma - # matminer - # matplotlib - # pandas - # phonopy - # pymatgen - # pytorch-lightning - # robocrys - # scikit-learn - # scipy - # seekpath - # shapely - # spglib - # torchmetrics -nvidia-cublas-cu12==12.1.3.1 - # via - # nvidia-cudnn-cu12 - # nvidia-cusolver-cu12 - # torch -nvidia-cuda-cupti-cu12==12.1.105 - # via torch -nvidia-cuda-nvrtc-cu12==12.1.105 - # via torch -nvidia-cuda-runtime-cu12==12.1.105 - # via torch -nvidia-cudnn-cu12==8.9.2.26 - # via torch -nvidia-cufft-cu12==11.0.2.54 - # via torch -nvidia-curand-cu12==10.3.2.106 - # via torch -nvidia-cusolver-cu12==11.4.5.107 - # via torch -nvidia-cusparse-cu12==12.1.0.106 - # via - # nvidia-cusolver-cu12 - # torch -nvidia-ml-py3==7.352.0 - # via chgnet -nvidia-nccl-cu12==2.20.5 - # via torch -nvidia-nvjitlink-cu12==12.4.127 - # via - # nvidia-cusolver-cu12 - # nvidia-cusparse-cu12 -nvidia-nvtx-cu12==12.1.105 - # via torch -orjson==3.10.3 - # via - # fastapi - # maggma -packaging==24.0 - # via - # lightning-utilities - # matplotlib - # mkdocs - # mongomock - # plotly - # pytest - # pytorch-lightning - # torchmetrics -palettable==3.3.3 - # via pymatgen -pandas==2.2.2 - # via - # matminer - # pymatgen -paramiko==3.4.0 - # via sshtunnel -pathspec==0.12.1 - # via mkdocs -phonopy==2.23.1 - # via matcalc -pillow==10.3.0 - # via matplotlib -platformdirs==4.2.1 - # via - # mkdocs-get-deps - # mkdocstrings - # virtualenv -plotly==5.22.0 - # via pymatgen -pluggy==1.5.0 - # via pytest -pre-commit==3.7.0 - # via emmet-builders (setup.py) -pretty-errors==1.2.25 - # via torchmetrics -psutil==5.9.8 - # via dgl -pubchempy==1.0.4 - # via robocrys -pybtex==0.24.0 - # via - # emmet-core - # pymatgen - # robocrys -pycodestyle==2.11.1 - # via - # emmet-builders (setup.py) - # flake8 -pycparser==2.22 - # via cffi -pydantic==2.7.1 - # via - # emmet-core - # fastapi - # maggma - # pydantic-settings -pydantic-core==2.18.2 - # via pydantic -pydantic-settings==2.2.1 - # via - # emmet-core - # maggma -pydash==8.0.1 - # via maggma -pydocstyle==6.3.0 - # via emmet-builders (setup.py) -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via - # mkdocs-material - # rich -pymatgen==2024.5.1 - # via - # chgnet - # emmet-core - # matcalc - # matgl - # matminer - # mp-api - # pymatgen-analysis-alloys - # pymatgen-analysis-diffusion - # robocrys -pymatgen-analysis-alloys==0.0.6 - # via emmet-core -pymatgen-analysis-diffusion==2023.8.15 - # via emmet-core -pymdown-extensions==10.8.1 - # via - # mkdocs-material - # mkdocstrings -pymongo==4.7.1 - # via - # maggma - # matminer - # mongogrant -pynacl==1.5.0 - # via paramiko -pyparsing==3.1.2 - # via matplotlib -pytest==8.2.0 - # via - # emmet-builders (setup.py) - # pytest-cov -pytest-cov==5.0.0 - # via emmet-builders (setup.py) -python-dateutil==2.9.0.post0 - # via - # botocore - # ghp-import - # maggma - # matplotlib - # pandas -python-dotenv==1.0.1 - # via - # pydantic-settings - # uvicorn -python-multipart==0.0.9 - # via fastapi -pytorch-lightning==2.2.4 - # via matgl -pytz==2024.1 - # via pandas -pyyaml==6.0.1 - # via - # mkdocs - # mkdocs-get-deps - # mkdocs-markdownextradata-plugin - # phonopy - # pre-commit - # pybtex - # pymdown-extensions - # pytorch-lightning - # pyyaml-env-tag - # uvicorn -pyyaml-env-tag==0.1 - # via mkdocs -pyzmq==26.0.3 - # via maggma -referencing==0.35.1 - # via - # jsonschema - # jsonschema-specifications -requests==2.31.0 - # via - # dgl - # matminer - # mongogrant - # mp-api - # pymatgen - # torchdata -rich==13.7.1 - # via typer -robocrys==0.2.9 - # via emmet-core -rpds-py==0.18.1 - # via - # jsonschema - # referencing -ruamel-yaml==0.18.6 - # via - # maggma - # pymatgen - # robocrys -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml -s3transfer==0.10.1 - # via boto3 -scikit-learn==1.4.2 - # via matminer -scipy==1.13.0 - # via - # ase - # dgl - # pymatgen - # robocrys - # scikit-learn -seekpath==2.1.0 - # via emmet-core -sentinels==1.0.0 - # via mongomock -shapely==2.0.4 - # via pymatgen-analysis-alloys -shellingham==1.5.4 - # via typer -six==1.16.0 - # via - # livereload - # pybtex - # python-dateutil -smart-open==7.0.4 - # via mp-api -sniffio==1.3.1 - # via - # anyio - # httpx -snowballstemmer==2.2.0 - # via pydocstyle -spglib==2.4.0 - # via - # phonopy - # pymatgen - # robocrys - # seekpath -sshtunnel==0.4.0 - # via maggma -starlette==0.37.2 - # via fastapi -sympy==1.12 - # via - # matminer - # pymatgen - # torch -tabulate==0.9.0 - # via pymatgen -tenacity==8.3.0 - # via plotly -threadpoolctl==3.5.0 - # via scikit-learn -torch==2.3.0 - # via - # chgnet - # matgl - # pytorch-lightning - # torchdata - # torchmetrics -torchdata==0.7.1 - # via dgl -torchmetrics==1.4.0 - # via pytorch-lightning -tornado==6.4 - # via livereload -tqdm==4.66.4 - # via - # dgl - # maggma - # matminer - # pymatgen - # pytorch-lightning -triton==2.3.0 - # via torch -typeguard==4.2.1 - # via inflect -typer==0.12.3 - # via fastapi-cli -types-requests==2.31.0.20240406 - # via emmet-builders (setup.py) -types-setuptools==69.5.0.20240423 - # via emmet-builders (setup.py) -typing-extensions==4.11.0 - # via - # emmet-core - # fastapi - # inflect - # lightning-utilities - # mp-api - # mypy - # pydantic - # pydantic-core - # pydash - # pytorch-lightning - # torch - # typeguard - # typer -tzdata==2024.1 - # via pandas -ujson==5.9.0 - # via fastapi -uncertainties==3.1.7 - # via pymatgen -urllib3==2.2.1 - # via - # botocore - # requests - # torchdata - # types-requests -uvicorn[standard]==0.29.0 - # via - # fastapi - # fastapi-cli - # maggma -uvloop==0.19.0 - # via uvicorn -virtualenv==20.26.1 - # via pre-commit -watchdog==4.0.0 - # via mkdocs -watchfiles==0.21.0 - # via uvicorn -wcmatch==8.5.1 - # via mkdocs-awesome-pages-plugin -websockets==12.0 - # via uvicorn -werkzeug==3.0.3 - # via flask -wincertstore==0.2 - # via emmet-builders (setup.py) -wrapt==1.16.0 - # via smart-open -yarl==1.9.4 - # via aiohttp - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt-e b/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt-e deleted file mode 100644 index 6407874eec..0000000000 --- a/emmet-builders/requirements/ubuntu-latest_py3.9_extras.txt-e +++ /dev/null @@ -1,701 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.9_extras.txt -# -aiohttp==3.9.5 - # via fsspec -aioitertools==0.11.0 - # via maggma -aiosignal==1.3.1 - # via aiohttp -annotated-types==0.6.0 - # via pydantic -anyio==4.3.0 - # via - # httpx - # starlette - # watchfiles -ase==3.22.1 - # via - # chgnet - # matcalc - # matgl -async-timeout==4.0.3 - # via aiohttp -attrs==23.2.0 - # via - # aiohttp - # jsonschema - # referencing -bcrypt==4.1.3 - # via paramiko -blinker==1.8.2 - # via flask -boto3==1.34.99 - # via maggma -botocore==1.34.99 - # via - # boto3 - # s3transfer -bracex==2.4 - # via wcmatch -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # cryptography - # pynacl -cfgv==3.4.0 - # via pre-commit -charset-normalizer==3.3.2 - # via requests -chgnet==0.3.5 - # via emmet-core -click==8.1.7 - # via - # flask - # mkdocs - # mkdocstrings - # mongogrant - # typer - # uvicorn -colorama==0.4.6 - # via - # griffe - # pretty-errors -contourpy==1.2.1 - # via matplotlib -coverage[toml]==7.5.1 - # via pytest-cov -cryptography==42.0.7 - # via paramiko -csscompressor==0.9.5 - # via mkdocs-minify-plugin -cycler==0.12.1 - # via matplotlib -cython==3.0.10 - # via chgnet -dgl==2.1.0 - # via matgl -distlib==0.3.8 - # via virtualenv -dnspython==2.6.1 - # via - # email-validator - # maggma - # pymongo -email-validator==2.1.1 - # via fastapi -emmet-core[all,ml]==0.83.6 - # via - # emmet-builders (setup.py) - # mp-api -exceptiongroup==1.2.1 - # via - # anyio - # pytest -fastapi==0.111.0 - # via - # fastapi-cli - # maggma -fastapi-cli==0.0.2 - # via fastapi -filelock==3.14.0 - # via - # torch - # triton - # virtualenv -flake8==7.0.0 - # via emmet-builders (setup.py) -flask==3.0.3 - # via mongogrant -fonttools==4.51.0 - # via matplotlib -frozenlist==1.4.1 - # via - # aiohttp - # aiosignal -fsspec[http]==2024.3.1 - # via - # pytorch-lightning - # torch -future==1.0.0 - # via uncertainties -ghp-import==2.1.0 - # via mkdocs -griffe==0.44.0 - # via mkdocstrings-python -h11==0.14.0 - # via - # httpcore - # uvicorn -h5py==3.11.0 - # via phonopy -htmlmin2==0.1.13 - # via mkdocs-minify-plugin -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via fastapi -identify==2.5.36 - # via pre-commit -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests - # yarl -importlib-metadata==7.1.0 - # via - # flask - # markdown - # mkdocs - # mkdocs-get-deps - # mkdocstrings - # typeguard -importlib-resources==6.4.0 - # via - # matplotlib - # spglib -inflect==7.2.1 - # via robocrys -iniconfig==2.0.0 - # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via - # emmet-builders (setup.py) - # fastapi - # flask - # mkdocs - # mkdocs-material - # mkdocstrings - # torch -jmespath==1.0.1 - # via - # boto3 - # botocore -joblib==1.4.2 - # via - # matcalc - # pymatgen - # pymatgen-analysis-diffusion - # scikit-learn -jsmin==3.0.1 - # via mkdocs-minify-plugin -jsonschema==4.22.0 - # via maggma -jsonschema-specifications==2023.12.1 - # via jsonschema -kiwisolver==1.4.5 - # via matplotlib -latexcodec==3.0.0 - # via pybtex -lightning-utilities==0.11.2 - # via - # pytorch-lightning - # torchmetrics -livereload==2.6.3 - # via emmet-builders (setup.py) -maggma==0.66.0 - # via - # emmet-builders (setup.py) - # mp-api -markdown==3.6 - # via - # mkdocs - # mkdocs-autorefs - # mkdocs-material - # mkdocstrings - # pymdown-extensions -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via - # jinja2 - # mkdocs - # mkdocs-autorefs - # mkdocstrings - # werkzeug -matcalc==0.0.4 - # via emmet-core -matgl==1.0.0 - # via emmet-core -matminer==0.9.2 - # via - # emmet-builders (setup.py) - # robocrys -matplotlib==3.8.4 - # via - # ase - # phonopy - # pymatgen -mccabe==0.7.0 - # via flake8 -mdurl==0.1.2 - # via markdown-it-py -mergedeep==1.3.4 - # via - # mkdocs - # mkdocs-get-deps -mkdocs==1.6.0 - # via - # emmet-builders (setup.py) - # mkdocs-autorefs - # mkdocs-awesome-pages-plugin - # mkdocs-markdownextradata-plugin - # mkdocs-material - # mkdocs-minify-plugin - # mkdocstrings -mkdocs-autorefs==1.0.1 - # via mkdocstrings -mkdocs-awesome-pages-plugin==2.9.2 - # via emmet-builders (setup.py) -mkdocs-get-deps==0.2.0 - # via mkdocs -mkdocs-markdownextradata-plugin==0.2.5 - # via emmet-builders (setup.py) -mkdocs-material==8.2.16 - # via emmet-builders (setup.py) -mkdocs-material-extensions==1.3.1 - # via - # emmet-builders (setup.py) - # mkdocs-material -mkdocs-minify-plugin==0.8.0 - # via emmet-builders (setup.py) -mkdocstrings[python]==0.25.1 - # via - # emmet-builders (setup.py) - # mkdocstrings-python -mkdocstrings-python==1.10.0 - # via mkdocstrings -mongogrant==0.3.3 - # via maggma -mongomock==4.1.2 - # via maggma -monty==2024.4.17 - # via - # emmet-core - # maggma - # matminer - # mp-api - # pymatgen - # robocrys -more-itertools==10.2.0 - # via inflect -mp-api==0.41.2 - # via robocrys -mpmath==1.3.0 - # via sympy -msgpack==1.0.8 - # via - # maggma - # mp-api -multidict==6.0.5 - # via - # aiohttp - # yarl -mypy==1.10.0 - # via emmet-builders (setup.py) -mypy-extensions==1.0.0 - # via - # emmet-builders (setup.py) - # mypy -natsort==8.4.0 - # via mkdocs-awesome-pages-plugin -networkx==3.2.1 - # via - # dgl - # pymatgen - # robocrys - # torch -nodeenv==1.8.0 - # via pre-commit -numpy==1.26.4 - # via - # ase - # chgnet - # contourpy - # dgl - # h5py - # maggma - # matminer - # matplotlib - # pandas - # phonopy - # pymatgen - # pytorch-lightning - # robocrys - # scikit-learn - # scipy - # seekpath - # shapely - # spglib - # torchmetrics -nvidia-cublas-cu12==12.1.3.1 - # via - # nvidia-cudnn-cu12 - # nvidia-cusolver-cu12 - # torch -nvidia-cuda-cupti-cu12==12.1.105 - # via torch -nvidia-cuda-nvrtc-cu12==12.1.105 - # via torch -nvidia-cuda-runtime-cu12==12.1.105 - # via torch -nvidia-cudnn-cu12==8.9.2.26 - # via torch -nvidia-cufft-cu12==11.0.2.54 - # via torch -nvidia-curand-cu12==10.3.2.106 - # via torch -nvidia-cusolver-cu12==11.4.5.107 - # via torch -nvidia-cusparse-cu12==12.1.0.106 - # via - # nvidia-cusolver-cu12 - # torch -nvidia-ml-py3==7.352.0 - # via chgnet -nvidia-nccl-cu12==2.20.5 - # via torch -nvidia-nvjitlink-cu12==12.4.127 - # via - # nvidia-cusolver-cu12 - # nvidia-cusparse-cu12 -nvidia-nvtx-cu12==12.1.105 - # via torch -orjson==3.10.3 - # via - # fastapi - # maggma -packaging==24.0 - # via - # lightning-utilities - # matplotlib - # mkdocs - # mongomock - # plotly - # pytest - # pytorch-lightning - # torchmetrics -palettable==3.3.3 - # via pymatgen -pandas==2.2.2 - # via - # matminer - # pymatgen -paramiko==3.4.0 - # via sshtunnel -pathspec==0.12.1 - # via mkdocs -phonopy==2.23.1 - # via matcalc -pillow==10.3.0 - # via matplotlib -platformdirs==4.2.1 - # via - # mkdocs-get-deps - # mkdocstrings - # virtualenv -plotly==5.22.0 - # via pymatgen -pluggy==1.5.0 - # via pytest -pre-commit==3.7.0 - # via emmet-builders (setup.py) -pretty-errors==1.2.25 - # via torchmetrics -psutil==5.9.8 - # via dgl -pubchempy==1.0.4 - # via robocrys -pybtex==0.24.0 - # via - # emmet-core - # pymatgen - # robocrys -pycodestyle==2.11.1 - # via - # emmet-builders (setup.py) - # flake8 -pycparser==2.22 - # via cffi -pydantic==2.7.1 - # via - # emmet-core - # fastapi - # maggma - # pydantic-settings -pydantic-core==2.18.2 - # via pydantic -pydantic-settings==2.2.1 - # via - # emmet-core - # maggma -pydash==8.0.1 - # via maggma -pydocstyle==6.3.0 - # via emmet-builders (setup.py) -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via - # mkdocs-material - # rich -pymatgen==2024.5.1 - # via - # chgnet - # emmet-core - # matcalc - # matgl - # matminer - # mp-api - # pymatgen-analysis-alloys - # pymatgen-analysis-diffusion - # robocrys -pymatgen-analysis-alloys==0.0.6 - # via emmet-core -pymatgen-analysis-diffusion==2023.8.15 - # via emmet-core -pymdown-extensions==10.8.1 - # via - # mkdocs-material - # mkdocstrings -pymongo==4.7.1 - # via - # maggma - # matminer - # mongogrant -pynacl==1.5.0 - # via paramiko -pyparsing==3.1.2 - # via matplotlib -pytest==8.2.0 - # via - # emmet-builders (setup.py) - # pytest-cov -pytest-cov==5.0.0 - # via emmet-builders (setup.py) -python-dateutil==2.9.0.post0 - # via - # botocore - # ghp-import - # maggma - # matplotlib - # pandas -python-dotenv==1.0.1 - # via - # pydantic-settings - # uvicorn -python-multipart==0.0.9 - # via fastapi -pytorch-lightning==2.2.4 - # via matgl -pytz==2024.1 - # via pandas -pyyaml==6.0.1 - # via - # mkdocs - # mkdocs-get-deps - # mkdocs-markdownextradata-plugin - # phonopy - # pre-commit - # pybtex - # pymdown-extensions - # pytorch-lightning - # pyyaml-env-tag - # uvicorn -pyyaml-env-tag==0.1 - # via mkdocs -pyzmq==26.0.3 - # via maggma -referencing==0.35.1 - # via - # jsonschema - # jsonschema-specifications -requests==2.31.0 - # via - # dgl - # matminer - # mongogrant - # mp-api - # pymatgen - # torchdata -rich==13.7.1 - # via typer -robocrys==0.2.9 - # via emmet-core -rpds-py==0.18.1 - # via - # jsonschema - # referencing -ruamel-yaml==0.18.6 - # via - # maggma - # pymatgen - # robocrys -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml -s3transfer==0.10.1 - # via boto3 -scikit-learn==1.4.2 - # via matminer -scipy==1.13.0 - # via - # ase - # dgl - # pymatgen - # robocrys - # scikit-learn -seekpath==2.1.0 - # via emmet-core -sentinels==1.0.0 - # via mongomock -shapely==2.0.4 - # via pymatgen-analysis-alloys -shellingham==1.5.4 - # via typer -six==1.16.0 - # via - # livereload - # pybtex - # python-dateutil -smart-open==7.0.4 - # via mp-api -sniffio==1.3.1 - # via - # anyio - # httpx -snowballstemmer==2.2.0 - # via pydocstyle -spglib==2.4.0 - # via - # phonopy - # pymatgen - # robocrys - # seekpath -sshtunnel==0.4.0 - # via maggma -starlette==0.37.2 - # via fastapi -sympy==1.12 - # via - # matminer - # pymatgen - # torch -tabulate==0.9.0 - # via pymatgen -tenacity==8.3.0 - # via plotly -threadpoolctl==3.5.0 - # via scikit-learn -tomli==2.0.1 - # via - # coverage - # mypy - # pytest -torch==2.3.0 - # via - # chgnet - # matgl - # pytorch-lightning - # torchdata - # torchmetrics -torchdata==0.7.1 - # via dgl -torchmetrics==1.4.0 - # via pytorch-lightning -tornado==6.4 - # via livereload -tqdm==4.66.4 - # via - # dgl - # maggma - # matminer - # pymatgen - # pytorch-lightning -triton==2.3.0 - # via torch -typeguard==4.2.1 - # via inflect -typer==0.12.3 - # via fastapi-cli -types-requests==2.31.0.6 - # via emmet-builders (setup.py) -types-setuptools==69.5.0.20240423 - # via emmet-builders (setup.py) -types-urllib3==1.26.25.14 - # via types-requests -typing-extensions==4.11.0 - # via - # aioitertools - # anyio - # emmet-core - # fastapi - # inflect - # lightning-utilities - # mkdocstrings - # mp-api - # mypy - # pydantic - # pydantic-core - # pydash - # pytorch-lightning - # starlette - # torch - # typeguard - # typer - # uvicorn -tzdata==2024.1 - # via pandas -ujson==5.9.0 - # via fastapi -uncertainties==3.1.7 - # via pymatgen -urllib3==1.26.18 - # via - # botocore - # requests - # torchdata -uvicorn[standard]==0.29.0 - # via - # fastapi - # fastapi-cli - # maggma -uvloop==0.19.0 - # via uvicorn -virtualenv==20.26.1 - # via pre-commit -watchdog==4.0.0 - # via mkdocs -watchfiles==0.21.0 - # via uvicorn -wcmatch==8.5.1 - # via mkdocs-awesome-pages-plugin -websockets==12.0 - # via uvicorn -werkzeug==3.0.3 - # via flask -wincertstore==0.2 - # via emmet-builders (setup.py) -wrapt==1.16.0 - # via smart-open -yarl==1.9.4 - # via aiohttp -zipp==3.18.1 - # via - # importlib-metadata - # importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt-e b/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt-e deleted file mode 100644 index 402a669005..0000000000 --- a/emmet-core/requirements/ubuntu-latest_py3.10_extras.txt-e +++ /dev/null @@ -1,687 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.10_extras.txt -# -aiohttp==3.9.5 - # via fsspec -aioitertools==0.11.0 - # via maggma -aiosignal==1.3.1 - # via aiohttp -annotated-types==0.6.0 - # via pydantic -anyio==4.3.0 - # via - # httpx - # starlette - # watchfiles -ase==3.22.1 - # via - # chgnet - # matcalc - # matgl -async-timeout==4.0.3 - # via aiohttp -attrs==23.2.0 - # via - # aiohttp - # jsonschema - # referencing -bcrypt==4.1.3 - # via paramiko -blinker==1.8.2 - # via flask -boto3==1.34.99 - # via maggma -botocore==1.34.99 - # via - # boto3 - # s3transfer -bracex==2.4 - # via wcmatch -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # cryptography - # pynacl -cfgv==3.4.0 - # via pre-commit -charset-normalizer==3.3.2 - # via requests -chgnet==0.3.5 - # via emmet-core (setup.py) -click==8.1.7 - # via - # flask - # mkdocs - # mkdocstrings - # mongogrant - # typer - # uvicorn -colorama==0.4.6 - # via - # griffe - # pretty-errors -contourpy==1.2.1 - # via matplotlib -coverage[toml]==7.5.1 - # via pytest-cov -cryptography==42.0.7 - # via paramiko -csscompressor==0.9.5 - # via mkdocs-minify-plugin -custodian==2024.4.18 - # via emmet-core (setup.py) -cycler==0.12.1 - # via matplotlib -cython==3.0.10 - # via chgnet -dgl==2.1.0 - # via matgl -distlib==0.3.8 - # via virtualenv -dnspython==2.6.1 - # via - # email-validator - # maggma - # pymongo -email-validator==2.1.1 - # via fastapi -emmet-core==0.83.6 - # via mp-api -exceptiongroup==1.2.1 - # via - # anyio - # pytest -fastapi==0.111.0 - # via - # fastapi-cli - # maggma -fastapi-cli==0.0.2 - # via fastapi -filelock==3.14.0 - # via - # torch - # triton - # virtualenv -flake8==7.0.0 - # via emmet-core (setup.py) -flask==3.0.3 - # via mongogrant -fonttools==4.51.0 - # via matplotlib -frozenlist==1.4.1 - # via - # aiohttp - # aiosignal -fsspec[http]==2024.3.1 - # via - # pytorch-lightning - # torch -future==1.0.0 - # via uncertainties -ghp-import==2.1.0 - # via mkdocs -griffe==0.44.0 - # via mkdocstrings-python -h11==0.14.0 - # via - # httpcore - # uvicorn -h5py==3.11.0 - # via phonopy -htmlmin2==0.1.13 - # via mkdocs-minify-plugin -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via fastapi -identify==2.5.36 - # via pre-commit -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests - # yarl -inflect==7.2.1 - # via robocrys -iniconfig==2.0.0 - # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via - # emmet-core (setup.py) - # fastapi - # flask - # mkdocs - # mkdocs-material - # mkdocstrings - # torch -jmespath==1.0.1 - # via - # boto3 - # botocore -joblib==1.4.2 - # via - # matcalc - # pymatgen - # pymatgen-analysis-diffusion - # scikit-learn -jsmin==3.0.1 - # via mkdocs-minify-plugin -jsonschema==4.22.0 - # via maggma -jsonschema-specifications==2023.12.1 - # via jsonschema -kiwisolver==1.4.5 - # via matplotlib -latexcodec==3.0.0 - # via pybtex -lightning-utilities==0.11.2 - # via - # pytorch-lightning - # torchmetrics -livereload==2.6.3 - # via emmet-core (setup.py) -maggma==0.66.0 - # via mp-api -markdown==3.6 - # via - # mkdocs - # mkdocs-autorefs - # mkdocs-material - # mkdocstrings - # pymdown-extensions -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via - # jinja2 - # mkdocs - # mkdocs-autorefs - # mkdocstrings - # werkzeug -matcalc==0.0.4 - # via emmet-core (setup.py) -matgl==1.0.0 - # via emmet-core (setup.py) -matminer==0.9.2 - # via robocrys -matplotlib==3.8.4 - # via - # ase - # phonopy - # pymatgen -mccabe==0.7.0 - # via flake8 -mdurl==0.1.2 - # via markdown-it-py -mergedeep==1.3.4 - # via - # mkdocs - # mkdocs-get-deps -mkdocs==1.6.0 - # via - # emmet-core (setup.py) - # mkdocs-autorefs - # mkdocs-awesome-pages-plugin - # mkdocs-markdownextradata-plugin - # mkdocs-material - # mkdocs-minify-plugin - # mkdocstrings -mkdocs-autorefs==1.0.1 - # via mkdocstrings -mkdocs-awesome-pages-plugin==2.9.2 - # via emmet-core (setup.py) -mkdocs-get-deps==0.2.0 - # via mkdocs -mkdocs-markdownextradata-plugin==0.2.5 - # via emmet-core (setup.py) -mkdocs-material==8.2.16 - # via emmet-core (setup.py) -mkdocs-material-extensions==1.3.1 - # via - # emmet-core (setup.py) - # mkdocs-material -mkdocs-minify-plugin==0.8.0 - # via emmet-core (setup.py) -mkdocstrings[python]==0.25.1 - # via - # emmet-core (setup.py) - # mkdocstrings-python -mkdocstrings-python==1.10.0 - # via mkdocstrings -mongogrant==0.3.3 - # via maggma -mongomock==4.1.2 - # via maggma -monty==2024.4.17 - # via - # custodian - # emmet-core - # emmet-core (setup.py) - # maggma - # matminer - # mp-api - # pymatgen - # robocrys -more-itertools==10.2.0 - # via inflect -mp-api==0.41.2 - # via robocrys -mpmath==1.3.0 - # via sympy -msgpack==1.0.8 - # via - # maggma - # mp-api -multidict==6.0.5 - # via - # aiohttp - # yarl -mypy==1.10.0 - # via emmet-core (setup.py) -mypy-extensions==1.0.0 - # via - # emmet-core (setup.py) - # mypy -natsort==8.4.0 - # via mkdocs-awesome-pages-plugin -networkx==3.3 - # via - # dgl - # pymatgen - # robocrys - # torch -nodeenv==1.8.0 - # via pre-commit -numpy==1.26.4 - # via - # ase - # chgnet - # contourpy - # dgl - # h5py - # maggma - # matminer - # matplotlib - # pandas - # phonopy - # pymatgen - # pytorch-lightning - # robocrys - # scikit-learn - # scipy - # seekpath - # shapely - # spglib - # torchmetrics -nvidia-cublas-cu12==12.1.3.1 - # via - # nvidia-cudnn-cu12 - # nvidia-cusolver-cu12 - # torch -nvidia-cuda-cupti-cu12==12.1.105 - # via torch -nvidia-cuda-nvrtc-cu12==12.1.105 - # via torch -nvidia-cuda-runtime-cu12==12.1.105 - # via torch -nvidia-cudnn-cu12==8.9.2.26 - # via torch -nvidia-cufft-cu12==11.0.2.54 - # via torch -nvidia-curand-cu12==10.3.2.106 - # via torch -nvidia-cusolver-cu12==11.4.5.107 - # via torch -nvidia-cusparse-cu12==12.1.0.106 - # via - # nvidia-cusolver-cu12 - # torch -nvidia-ml-py3==7.352.0 - # via chgnet -nvidia-nccl-cu12==2.20.5 - # via torch -nvidia-nvjitlink-cu12==12.4.127 - # via - # nvidia-cusolver-cu12 - # nvidia-cusparse-cu12 -nvidia-nvtx-cu12==12.1.105 - # via torch -orjson==3.10.3 - # via - # fastapi - # maggma -packaging==24.0 - # via - # lightning-utilities - # matplotlib - # mkdocs - # mongomock - # plotly - # pytest - # pytorch-lightning - # torchmetrics -palettable==3.3.3 - # via pymatgen -pandas==2.2.2 - # via - # matminer - # pymatgen -paramiko==3.4.0 - # via sshtunnel -pathspec==0.12.1 - # via mkdocs -phonopy==2.23.1 - # via matcalc -pillow==10.3.0 - # via matplotlib -platformdirs==4.2.1 - # via - # mkdocs-get-deps - # mkdocstrings - # virtualenv -plotly==5.22.0 - # via pymatgen -pluggy==1.5.0 - # via pytest -pre-commit==3.7.0 - # via emmet-core (setup.py) -pretty-errors==1.2.25 - # via torchmetrics -psutil==5.9.8 - # via - # custodian - # dgl -pubchempy==1.0.4 - # via robocrys -pybtex==0.24.0 - # via - # emmet-core - # emmet-core (setup.py) - # pymatgen - # robocrys -pycodestyle==2.11.1 - # via - # emmet-core (setup.py) - # flake8 -pycparser==2.22 - # via cffi -pydantic==2.7.1 - # via - # emmet-core - # emmet-core (setup.py) - # fastapi - # maggma - # pydantic-settings -pydantic-core==2.18.2 - # via pydantic -pydantic-settings==2.2.1 - # via - # emmet-core - # emmet-core (setup.py) - # maggma -pydash==8.0.1 - # via maggma -pydocstyle==6.3.0 - # via emmet-core (setup.py) -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via - # mkdocs-material - # rich -pymatgen==2024.5.1 - # via - # chgnet - # emmet-core - # emmet-core (setup.py) - # matcalc - # matgl - # matminer - # mp-api - # pymatgen-analysis-alloys - # pymatgen-analysis-diffusion - # robocrys -pymatgen-analysis-alloys==0.0.6 - # via emmet-core (setup.py) -pymatgen-analysis-diffusion==2023.8.15 - # via emmet-core (setup.py) -pymdown-extensions==10.8.1 - # via - # mkdocs-material - # mkdocstrings -pymongo==4.7.1 - # via - # maggma - # matminer - # mongogrant -pynacl==1.5.0 - # via paramiko -pyparsing==3.1.2 - # via matplotlib -pytest==8.2.0 - # via - # emmet-core (setup.py) - # pytest-cov -pytest-cov==5.0.0 - # via emmet-core (setup.py) -python-dateutil==2.9.0.post0 - # via - # botocore - # ghp-import - # maggma - # matplotlib - # pandas -python-dotenv==1.0.1 - # via - # pydantic-settings - # uvicorn -python-multipart==0.0.9 - # via fastapi -pytorch-lightning==2.2.4 - # via matgl -pytz==2024.1 - # via pandas -pyyaml==6.0.1 - # via - # mkdocs - # mkdocs-get-deps - # mkdocs-markdownextradata-plugin - # phonopy - # pre-commit - # pybtex - # pymdown-extensions - # pytorch-lightning - # pyyaml-env-tag - # uvicorn -pyyaml-env-tag==0.1 - # via mkdocs -pyzmq==26.0.3 - # via maggma -referencing==0.35.1 - # via - # jsonschema - # jsonschema-specifications -requests==2.31.0 - # via - # dgl - # matminer - # mongogrant - # mp-api - # pymatgen - # torchdata -rich==13.7.1 - # via typer -robocrys==0.2.9 - # via emmet-core (setup.py) -rpds-py==0.18.1 - # via - # jsonschema - # referencing -ruamel-yaml==0.18.6 - # via - # custodian - # maggma - # pymatgen - # robocrys -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml -s3transfer==0.10.1 - # via boto3 -scikit-learn==1.4.2 - # via matminer -scipy==1.13.0 - # via - # ase - # dgl - # pymatgen - # robocrys - # scikit-learn -seekpath==2.1.0 - # via emmet-core (setup.py) -sentinels==1.0.0 - # via mongomock -shapely==2.0.4 - # via pymatgen-analysis-alloys -shellingham==1.5.4 - # via typer -six==1.16.0 - # via - # livereload - # pybtex - # python-dateutil -smart-open==7.0.4 - # via mp-api -sniffio==1.3.1 - # via - # anyio - # httpx -snowballstemmer==2.2.0 - # via pydocstyle -spglib==2.4.0 - # via - # phonopy - # pymatgen - # robocrys - # seekpath -sshtunnel==0.4.0 - # via maggma -starlette==0.37.2 - # via fastapi -sympy==1.12 - # via - # matminer - # pymatgen - # torch -tabulate==0.9.0 - # via pymatgen -tenacity==8.3.0 - # via plotly -threadpoolctl==3.5.0 - # via scikit-learn -tomli==2.0.1 - # via - # coverage - # mypy - # pytest -torch==2.3.0 - # via - # chgnet - # matgl - # pytorch-lightning - # torchdata - # torchmetrics -torchdata==0.7.1 - # via dgl -torchmetrics==1.4.0 - # via pytorch-lightning -tornado==6.4 - # via livereload -tqdm==4.66.4 - # via - # dgl - # maggma - # matminer - # pymatgen - # pytorch-lightning -triton==2.3.0 - # via torch -typeguard==4.2.1 - # via inflect -typer==0.12.3 - # via fastapi-cli -types-requests==2.31.0.20240406 - # via emmet-core (setup.py) -types-setuptools==69.5.0.20240423 - # via emmet-core (setup.py) -typing-extensions==4.11.0 - # via - # anyio - # emmet-core - # emmet-core (setup.py) - # fastapi - # inflect - # lightning-utilities - # mp-api - # mypy - # pydantic - # pydantic-core - # pydash - # pytorch-lightning - # torch - # typeguard - # typer - # uvicorn -tzdata==2024.1 - # via pandas -ujson==5.9.0 - # via fastapi -uncertainties==3.1.7 - # via pymatgen -urllib3==2.2.1 - # via - # botocore - # requests - # torchdata - # types-requests -uvicorn[standard]==0.29.0 - # via - # fastapi - # fastapi-cli - # maggma -uvloop==0.19.0 - # via uvicorn -virtualenv==20.26.1 - # via pre-commit -watchdog==4.0.0 - # via mkdocs -watchfiles==0.21.0 - # via uvicorn -wcmatch==8.5.1 - # via mkdocs-awesome-pages-plugin -websockets==12.0 - # via uvicorn -werkzeug==3.0.3 - # via flask -wincertstore==0.2 - # via emmet-core (setup.py) -wrapt==1.16.0 - # via smart-open -yarl==1.9.4 - # via aiohttp - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt-e b/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt-e deleted file mode 100644 index 3fc2640102..0000000000 --- a/emmet-core/requirements/ubuntu-latest_py3.11_extras.txt-e +++ /dev/null @@ -1,674 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.11_extras.txt -# -aiohttp==3.9.5 - # via fsspec -aioitertools==0.11.0 - # via maggma -aiosignal==1.3.1 - # via aiohttp -annotated-types==0.6.0 - # via pydantic -anyio==4.3.0 - # via - # httpx - # starlette - # watchfiles -ase==3.22.1 - # via - # chgnet - # matcalc - # matgl -attrs==23.2.0 - # via - # aiohttp - # jsonschema - # referencing -bcrypt==4.1.3 - # via paramiko -blinker==1.8.2 - # via flask -boto3==1.34.99 - # via maggma -botocore==1.34.99 - # via - # boto3 - # s3transfer -bracex==2.4 - # via wcmatch -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # cryptography - # pynacl -cfgv==3.4.0 - # via pre-commit -charset-normalizer==3.3.2 - # via requests -chgnet==0.3.5 - # via emmet-core (setup.py) -click==8.1.7 - # via - # flask - # mkdocs - # mkdocstrings - # mongogrant - # typer - # uvicorn -colorama==0.4.6 - # via - # griffe - # pretty-errors -contourpy==1.2.1 - # via matplotlib -coverage[toml]==7.5.1 - # via pytest-cov -cryptography==42.0.7 - # via paramiko -csscompressor==0.9.5 - # via mkdocs-minify-plugin -custodian==2024.4.18 - # via emmet-core (setup.py) -cycler==0.12.1 - # via matplotlib -cython==3.0.10 - # via chgnet -dgl==2.1.0 - # via matgl -distlib==0.3.8 - # via virtualenv -dnspython==2.6.1 - # via - # email-validator - # maggma - # pymongo -email-validator==2.1.1 - # via fastapi -emmet-core==0.83.6 - # via mp-api -fastapi==0.111.0 - # via - # fastapi-cli - # maggma -fastapi-cli==0.0.2 - # via fastapi -filelock==3.14.0 - # via - # torch - # triton - # virtualenv -flake8==7.0.0 - # via emmet-core (setup.py) -flask==3.0.3 - # via mongogrant -fonttools==4.51.0 - # via matplotlib -frozenlist==1.4.1 - # via - # aiohttp - # aiosignal -fsspec[http]==2024.3.1 - # via - # pytorch-lightning - # torch -future==1.0.0 - # via uncertainties -ghp-import==2.1.0 - # via mkdocs -griffe==0.44.0 - # via mkdocstrings-python -h11==0.14.0 - # via - # httpcore - # uvicorn -h5py==3.11.0 - # via phonopy -htmlmin2==0.1.13 - # via mkdocs-minify-plugin -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via fastapi -identify==2.5.36 - # via pre-commit -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests - # yarl -inflect==7.2.1 - # via robocrys -iniconfig==2.0.0 - # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.4 - # via - # emmet-core (setup.py) - # fastapi - # flask - # mkdocs - # mkdocs-material - # mkdocstrings - # torch -jmespath==1.0.1 - # via - # boto3 - # botocore -joblib==1.4.2 - # via - # matcalc - # pymatgen - # pymatgen-analysis-diffusion - # scikit-learn -jsmin==3.0.1 - # via mkdocs-minify-plugin -jsonschema==4.22.0 - # via maggma -jsonschema-specifications==2023.12.1 - # via jsonschema -kiwisolver==1.4.5 - # via matplotlib -latexcodec==3.0.0 - # via pybtex -lightning-utilities==0.11.2 - # via - # pytorch-lightning - # torchmetrics -livereload==2.6.3 - # via emmet-core (setup.py) -maggma==0.66.0 - # via mp-api -markdown==3.6 - # via - # mkdocs - # mkdocs-autorefs - # mkdocs-material - # mkdocstrings - # pymdown-extensions -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via - # jinja2 - # mkdocs - # mkdocs-autorefs - # mkdocstrings - # werkzeug -matcalc==0.0.4 - # via emmet-core (setup.py) -matgl==1.0.0 - # via emmet-core (setup.py) -matminer==0.9.2 - # via robocrys -matplotlib==3.8.4 - # via - # ase - # phonopy - # pymatgen -mccabe==0.7.0 - # via flake8 -mdurl==0.1.2 - # via markdown-it-py -mergedeep==1.3.4 - # via - # mkdocs - # mkdocs-get-deps -mkdocs==1.6.0 - # via - # emmet-core (setup.py) - # mkdocs-autorefs - # mkdocs-awesome-pages-plugin - # mkdocs-markdownextradata-plugin - # mkdocs-material - # mkdocs-minify-plugin - # mkdocstrings -mkdocs-autorefs==1.0.1 - # via mkdocstrings -mkdocs-awesome-pages-plugin==2.9.2 - # via emmet-core (setup.py) -mkdocs-get-deps==0.2.0 - # via mkdocs -mkdocs-markdownextradata-plugin==0.2.5 - # via emmet-core (setup.py) -mkdocs-material==8.2.16 - # via emmet-core (setup.py) -mkdocs-material-extensions==1.3.1 - # via - # emmet-core (setup.py) - # mkdocs-material -mkdocs-minify-plugin==0.8.0 - # via emmet-core (setup.py) -mkdocstrings[python]==0.25.1 - # via - # emmet-core (setup.py) - # mkdocstrings-python -mkdocstrings-python==1.10.0 - # via mkdocstrings -mongogrant==0.3.3 - # via maggma -mongomock==4.1.2 - # via maggma -monty==2024.4.17 - # via - # custodian - # emmet-core - # emmet-core (setup.py) - # maggma - # matminer - # mp-api - # pymatgen - # robocrys -more-itertools==10.2.0 - # via inflect -mp-api==0.41.2 - # via robocrys -mpmath==1.3.0 - # via sympy -msgpack==1.0.8 - # via - # maggma - # mp-api -multidict==6.0.5 - # via - # aiohttp - # yarl -mypy==1.10.0 - # via emmet-core (setup.py) -mypy-extensions==1.0.0 - # via - # emmet-core (setup.py) - # mypy -natsort==8.4.0 - # via mkdocs-awesome-pages-plugin -networkx==3.3 - # via - # dgl - # pymatgen - # robocrys - # torch -nodeenv==1.8.0 - # via pre-commit -numpy==1.26.4 - # via - # ase - # chgnet - # contourpy - # dgl - # h5py - # maggma - # matminer - # matplotlib - # pandas - # phonopy - # pymatgen - # pytorch-lightning - # robocrys - # scikit-learn - # scipy - # seekpath - # shapely - # spglib - # torchmetrics -nvidia-cublas-cu12==12.1.3.1 - # via - # nvidia-cudnn-cu12 - # nvidia-cusolver-cu12 - # torch -nvidia-cuda-cupti-cu12==12.1.105 - # via torch -nvidia-cuda-nvrtc-cu12==12.1.105 - # via torch -nvidia-cuda-runtime-cu12==12.1.105 - # via torch -nvidia-cudnn-cu12==8.9.2.26 - # via torch -nvidia-cufft-cu12==11.0.2.54 - # via torch -nvidia-curand-cu12==10.3.2.106 - # via torch -nvidia-cusolver-cu12==11.4.5.107 - # via torch -nvidia-cusparse-cu12==12.1.0.106 - # via - # nvidia-cusolver-cu12 - # torch -nvidia-ml-py3==7.352.0 - # via chgnet -nvidia-nccl-cu12==2.20.5 - # via torch -nvidia-nvjitlink-cu12==12.4.127 - # via - # nvidia-cusolver-cu12 - # nvidia-cusparse-cu12 -nvidia-nvtx-cu12==12.1.105 - # via torch -orjson==3.10.3 - # via - # fastapi - # maggma -packaging==24.0 - # via - # lightning-utilities - # matplotlib - # mkdocs - # mongomock - # plotly - # pytest - # pytorch-lightning - # torchmetrics -palettable==3.3.3 - # via pymatgen -pandas==2.2.2 - # via - # matminer - # pymatgen -paramiko==3.4.0 - # via sshtunnel -pathspec==0.12.1 - # via mkdocs -phonopy==2.23.1 - # via matcalc -pillow==10.3.0 - # via matplotlib -platformdirs==4.2.1 - # via - # mkdocs-get-deps - # mkdocstrings - # virtualenv -plotly==5.22.0 - # via pymatgen -pluggy==1.5.0 - # via pytest -pre-commit==3.7.0 - # via emmet-core (setup.py) -pretty-errors==1.2.25 - # via torchmetrics -psutil==5.9.8 - # via - # custodian - # dgl -pubchempy==1.0.4 - # via robocrys -pybtex==0.24.0 - # via - # emmet-core - # emmet-core (setup.py) - # pymatgen - # robocrys -pycodestyle==2.11.1 - # via - # emmet-core (setup.py) - # flake8 -pycparser==2.22 - # via cffi -pydantic==2.7.1 - # via - # emmet-core - # emmet-core (setup.py) - # fastapi - # maggma - # pydantic-settings -pydantic-core==2.18.2 - # via pydantic -pydantic-settings==2.2.1 - # via - # emmet-core - # emmet-core (setup.py) - # maggma -pydash==8.0.1 - # via maggma -pydocstyle==6.3.0 - # via emmet-core (setup.py) -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via - # mkdocs-material - # rich -pymatgen==2024.5.1 - # via - # chgnet - # emmet-core - # emmet-core (setup.py) - # matcalc - # matgl - # matminer - # mp-api - # pymatgen-analysis-alloys - # pymatgen-analysis-diffusion - # robocrys -pymatgen-analysis-alloys==0.0.6 - # via emmet-core (setup.py) -pymatgen-analysis-diffusion==2023.8.15 - # via emmet-core (setup.py) -pymdown-extensions==10.8.1 - # via - # mkdocs-material - # mkdocstrings -pymongo==4.7.1 - # via - # maggma - # matminer - # mongogrant -pynacl==1.5.0 - # via paramiko -pyparsing==3.1.2 - # via matplotlib -pytest==8.2.0 - # via - # emmet-core (setup.py) - # pytest-cov -pytest-cov==5.0.0 - # via emmet-core (setup.py) -python-dateutil==2.9.0.post0 - # via - # botocore - # ghp-import - # maggma - # matplotlib - # pandas -python-dotenv==1.0.1 - # via - # pydantic-settings - # uvicorn -python-multipart==0.0.9 - # via fastapi -pytorch-lightning==2.2.4 - # via matgl -pytz==2024.1 - # via pandas -pyyaml==6.0.1 - # via - # mkdocs - # mkdocs-get-deps - # mkdocs-markdownextradata-plugin - # phonopy - # pre-commit - # pybtex - # pymdown-extensions - # pytorch-lightning - # pyyaml-env-tag - # uvicorn -pyyaml-env-tag==0.1 - # via mkdocs -pyzmq==26.0.3 - # via maggma -referencing==0.35.1 - # via - # jsonschema - # jsonschema-specifications -requests==2.31.0 - # via - # dgl - # matminer - # mongogrant - # mp-api - # pymatgen - # torchdata -rich==13.7.1 - # via typer -robocrys==0.2.9 - # via emmet-core (setup.py) -rpds-py==0.18.1 - # via - # jsonschema - # referencing -ruamel-yaml==0.18.6 - # via - # custodian - # maggma - # pymatgen - # robocrys -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml -s3transfer==0.10.1 - # via boto3 -scikit-learn==1.4.2 - # via matminer -scipy==1.13.0 - # via - # ase - # dgl - # pymatgen - # robocrys - # scikit-learn -seekpath==2.1.0 - # via emmet-core (setup.py) -sentinels==1.0.0 - # via mongomock -shapely==2.0.4 - # via pymatgen-analysis-alloys -shellingham==1.5.4 - # via typer -six==1.16.0 - # via - # livereload - # pybtex - # python-dateutil -smart-open==7.0.4 - # via mp-api -sniffio==1.3.1 - # via - # anyio - # httpx -snowballstemmer==2.2.0 - # via pydocstyle -spglib==2.4.0 - # via - # phonopy - # pymatgen - # robocrys - # seekpath -sshtunnel==0.4.0 - # via maggma -starlette==0.37.2 - # via fastapi -sympy==1.12 - # via - # matminer - # pymatgen - # torch -tabulate==0.9.0 - # via pymatgen -tenacity==8.3.0 - # via plotly -threadpoolctl==3.5.0 - # via scikit-learn -torch==2.3.0 - # via - # chgnet - # matgl - # pytorch-lightning - # torchdata - # torchmetrics -torchdata==0.7.1 - # via dgl -torchmetrics==1.4.0 - # via pytorch-lightning -tornado==6.4 - # via livereload -tqdm==4.66.4 - # via - # dgl - # maggma - # matminer - # pymatgen - # pytorch-lightning -triton==2.3.0 - # via torch -typeguard==4.2.1 - # via inflect -typer==0.12.3 - # via fastapi-cli -types-requests==2.31.0.20240406 - # via emmet-core (setup.py) -types-setuptools==69.5.0.20240423 - # via emmet-core (setup.py) -typing-extensions==4.11.0 - # via - # emmet-core - # emmet-core (setup.py) - # fastapi - # inflect - # lightning-utilities - # mp-api - # mypy - # pydantic - # pydantic-core - # pydash - # pytorch-lightning - # torch - # typeguard - # typer -tzdata==2024.1 - # via pandas -ujson==5.9.0 - # via fastapi -uncertainties==3.1.7 - # via pymatgen -urllib3==2.2.1 - # via - # botocore - # requests - # torchdata - # types-requests -uvicorn[standard]==0.29.0 - # via - # fastapi - # fastapi-cli - # maggma -uvloop==0.19.0 - # via uvicorn -virtualenv==20.26.1 - # via pre-commit -watchdog==4.0.0 - # via mkdocs -watchfiles==0.21.0 - # via uvicorn -wcmatch==8.5.1 - # via mkdocs-awesome-pages-plugin -websockets==12.0 - # via uvicorn -werkzeug==3.0.3 - # via flask -wincertstore==0.2 - # via emmet-core (setup.py) -wrapt==1.16.0 - # via smart-open -yarl==1.9.4 - # via aiohttp - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt-e b/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt-e deleted file mode 100644 index 9430390aa0..0000000000 --- a/emmet-core/requirements/ubuntu-latest_py3.9_extras.txt-e +++ /dev/null @@ -1,533 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --all-extras --output-file=requirements/ubuntu-latest_py3.9_extras.txt -# -aiohttp==3.9.5 - # via fsspec -aiosignal==1.3.1 - # via aiohttp -annotated-types==0.6.0 - # via pydantic -ase==3.22.1 - # via - # chgnet - # matcalc - # matgl -async-timeout==4.0.3 - # via aiohttp -attrs==23.2.0 - # via aiohttp -bracex==2.4 - # via wcmatch -certifi==2024.2.2 - # via requests -cfgv==3.4.0 - # via pre-commit -charset-normalizer==3.3.2 - # via requests -chgnet==0.3.5 - # via emmet-core (setup.py) -click==8.1.7 - # via - # mkdocs - # mkdocstrings -colorama==0.4.6 - # via - # griffe - # pretty-errors -contourpy==1.2.1 - # via matplotlib -coverage[toml]==7.5.1 - # via pytest-cov -csscompressor==0.9.5 - # via mkdocs-minify-plugin -custodian==2024.4.18 - # via emmet-core (setup.py) -cycler==0.12.1 - # via matplotlib -cython==3.0.10 - # via chgnet -dgl==2.1.0 - # via matgl -distlib==0.3.8 - # via virtualenv -dnspython==2.6.1 - # via - # maggma - # pymongo -emmet-core==0.83.6 - # via mp-api -exceptiongroup==1.2.1 - # via pytest -filelock==3.14.0 - # via - # torch - # triton - # virtualenv -flake8==7.0.0 - # via emmet-core (setup.py) -fonttools==4.51.0 - # via matplotlib -frozenlist==1.4.1 - # via - # aiohttp - # aiosignal -fsspec[http]==2024.3.1 - # via - # pytorch-lightning - # torch -future==1.0.0 - # via uncertainties -ghp-import==2.1.0 - # via mkdocs -griffe==0.44.0 - # via mkdocstrings-python -h5py==3.11.0 - # via phonopy -htmlmin2==0.1.13 - # via mkdocs-minify-plugin -identify==2.5.36 - # via pre-commit -idna==3.7 - # via - # requests - # yarl -importlib-metadata==7.1.0 - # via - # markdown - # mkdocs - # mkdocs-get-deps - # mkdocstrings - # typeguard -importlib-resources==6.4.0 - # via - # matplotlib - # spglib -inflect==7.2.1 - # via robocrys -iniconfig==2.0.0 - # via pytest -jinja2==3.1.4 - # via - # emmet-core (setup.py) - # mkdocs - # mkdocs-material - # mkdocstrings - # torch -joblib==1.4.2 - # via - # matcalc - # pymatgen - # pymatgen-analysis-diffusion - # scikit-learn -jsmin==3.0.1 - # via mkdocs-minify-plugin -kiwisolver==1.4.5 - # via matplotlib -latexcodec==3.0.0 - # via pybtex -lightning-utilities==0.11.2 - # via - # pytorch-lightning - # torchmetrics -livereload==2.6.3 - # via emmet-core (setup.py) -markdown==3.6 - # via - # mkdocs - # mkdocs-autorefs - # mkdocs-material - # mkdocstrings - # pymdown-extensions -markupsafe==2.1.5 - # via - # jinja2 - # mkdocs - # mkdocs-autorefs - # mkdocstrings -matcalc==0.0.4 - # via emmet-core (setup.py) -matgl==1.0.0 - # via emmet-core (setup.py) -matminer==0.9.2 - # via robocrys -matplotlib==3.8.4 - # via - # ase - # phonopy - # pymatgen -mccabe==0.7.0 - # via flake8 -mergedeep==1.3.4 - # via - # mkdocs - # mkdocs-get-deps -mkdocs==1.6.0 - # via - # emmet-core (setup.py) - # mkdocs-autorefs - # mkdocs-awesome-pages-plugin - # mkdocs-markdownextradata-plugin - # mkdocs-material - # mkdocs-minify-plugin - # mkdocstrings -mkdocs-autorefs==1.0.1 - # via mkdocstrings -mkdocs-awesome-pages-plugin==2.9.2 - # via emmet-core (setup.py) -mkdocs-get-deps==0.2.0 - # via mkdocs -mkdocs-markdownextradata-plugin==0.2.5 - # via emmet-core (setup.py) -mkdocs-material==8.2.16 - # via emmet-core (setup.py) -mkdocs-material-extensions==1.3.1 - # via - # emmet-core (setup.py) - # mkdocs-material -mkdocs-minify-plugin==0.8.0 - # via emmet-core (setup.py) -mkdocstrings[python]==0.25.1 - # via - # emmet-core (setup.py) - # mkdocstrings-python -mkdocstrings-python==1.10.0 - # via mkdocstrings -monty==2024.4.17 - # via - # custodian - # emmet-core - # emmet-core (setup.py) - # matminer - # mp-api - # pymatgen - # robocrys -more-itertools==10.2.0 - # via inflect -mp-api==0.36.1 - # via robocrys -mpmath==1.3.0 - # via sympy -msgpack==1.0.8 - # via mp-api -multidict==6.0.5 - # via - # aiohttp - # yarl -mypy==1.10.0 - # via emmet-core (setup.py) -mypy-extensions==1.0.0 - # via - # emmet-core (setup.py) - # mypy -natsort==8.4.0 - # via mkdocs-awesome-pages-plugin -networkx==3.2.1 - # via - # dgl - # pymatgen - # robocrys - # torch -nodeenv==1.8.0 - # via pre-commit -numpy==1.26.4 - # via - # ase - # chgnet - # contourpy - # dgl - # h5py - # matminer - # matplotlib - # pandas - # phonopy - # pymatgen - # pytorch-lightning - # robocrys - # scikit-learn - # scipy - # seekpath - # shapely - # spglib - # torchmetrics -nvidia-cublas-cu12==12.1.3.1 - # via - # nvidia-cudnn-cu12 - # nvidia-cusolver-cu12 - # torch -nvidia-cuda-cupti-cu12==12.1.105 - # via torch -nvidia-cuda-nvrtc-cu12==12.1.105 - # via torch -nvidia-cuda-runtime-cu12==12.1.105 - # via torch -nvidia-cudnn-cu12==8.9.2.26 - # via torch -nvidia-cufft-cu12==11.0.2.54 - # via torch -nvidia-curand-cu12==10.3.2.106 - # via torch -nvidia-cusolver-cu12==11.4.5.107 - # via torch -nvidia-cusparse-cu12==12.1.0.106 - # via - # nvidia-cusolver-cu12 - # torch -nvidia-ml-py3==7.352.0 - # via chgnet -nvidia-nccl-cu12==2.20.5 - # via torch -nvidia-nvjitlink-cu12==12.4.127 - # via - # nvidia-cusolver-cu12 - # nvidia-cusparse-cu12 -nvidia-nvtx-cu12==12.1.105 - # via torch -packaging==24.0 - # via - # lightning-utilities - # matplotlib - # mkdocs - # plotly - # pytest - # pytorch-lightning - # torchmetrics -palettable==3.3.3 - # via pymatgen -pandas==2.2.2 - # via - # matminer - # pymatgen -pathspec==0.12.1 - # via mkdocs -phonopy==2.23.1 - # via matcalc -pillow==10.3.0 - # via matplotlib -platformdirs==4.2.1 - # via - # mkdocs-get-deps - # mkdocstrings - # virtualenv -plotly==5.22.0 - # via pymatgen -pluggy==1.5.0 - # via pytest -pre-commit==3.7.0 - # via emmet-core (setup.py) -pretty-errors==1.2.25 - # via torchmetrics -psutil==5.9.8 - # via - # custodian - # dgl -pubchempy==1.0.4 - # via robocrys -pybtex==0.24.0 - # via - # emmet-core - # emmet-core (setup.py) - # pymatgen - # robocrys -pycodestyle==2.11.1 - # via - # emmet-core (setup.py) - # flake8 -pydantic==2.7.1 - # via - # emmet-core - # emmet-core (setup.py) - # pydantic-settings -pydantic-core==2.18.2 - # via pydantic -pydantic-settings==2.2.1 - # via - # emmet-core - # emmet-core (setup.py) -pydocstyle==6.3.0 - # via emmet-core (setup.py) -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via mkdocs-material -pymatgen==2024.5.1 - # via - # chgnet - # emmet-core - # emmet-core (setup.py) - # matcalc - # matgl - # matminer - # mp-api - # pymatgen-analysis-alloys - # pymatgen-analysis-diffusion - # robocrys -pymatgen-analysis-alloys==0.0.6 - # via emmet-core (setup.py) -pymatgen-analysis-diffusion==2023.8.15 - # via emmet-core (setup.py) -pymdown-extensions==10.8.1 - # via - # mkdocs-material - # mkdocstrings -pymongo==4.7.1 - # via matminer -pyparsing==3.1.2 - # via matplotlib -pytest==8.2.0 - # via - # emmet-core (setup.py) - # pytest-cov -pytest-cov==5.0.0 - # via emmet-core (setup.py) -python-dateutil==2.9.0.post0 - # via - # ghp-import - # matplotlib - # pandas -python-dotenv==1.0.1 - # via pydantic-settings -pytorch-lightning==2.2.4 - # via matgl -pytz==2024.1 - # via pandas -pyyaml==6.0.1 - # via - # mkdocs - # mkdocs-get-deps - # mkdocs-markdownextradata-plugin - # phonopy - # pre-commit - # pybtex - # pymdown-extensions - # pytorch-lightning - # pyyaml-env-tag -pyyaml-env-tag==0.1 - # via mkdocs -requests==2.31.0 - # via - # dgl - # matminer - # mp-api - # pymatgen - # torchdata -robocrys==0.2.9 - # via emmet-core (setup.py) -ruamel-yaml==0.18.6 - # via - # custodian - # pymatgen - # robocrys -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml -scikit-learn==1.4.2 - # via matminer -scipy==1.13.0 - # via - # ase - # dgl - # pymatgen - # robocrys - # scikit-learn -seekpath==2.1.0 - # via emmet-core (setup.py) -shapely==2.0.4 - # via pymatgen-analysis-alloys -six==1.16.0 - # via - # livereload - # pybtex - # python-dateutil -snowballstemmer==2.2.0 - # via pydocstyle -spglib==2.4.0 - # via - # phonopy - # pymatgen - # robocrys - # seekpath -sympy==1.12 - # via - # matminer - # pymatgen - # torch -tabulate==0.9.0 - # via pymatgen -tenacity==8.3.0 - # via plotly -threadpoolctl==3.5.0 - # via scikit-learn -tomli==2.0.1 - # via - # coverage - # mypy - # pytest -torch==2.3.0 - # via - # chgnet - # matgl - # pytorch-lightning - # torchdata - # torchmetrics -torchdata==0.7.1 - # via dgl -torchmetrics==1.4.0 - # via pytorch-lightning -tornado==6.4 - # via livereload -tqdm==4.66.4 - # via - # dgl - # matminer - # pymatgen - # pytorch-lightning -triton==2.3.0 - # via torch -typeguard==4.2.1 - # via inflect -types-requests==2.31.0.20240406 - # via emmet-core (setup.py) -types-setuptools==69.5.0.20240423 - # via emmet-core (setup.py) -typing-extensions==4.11.0 - # via - # emmet-core - # emmet-core (setup.py) - # inflect - # lightning-utilities - # mkdocstrings - # mp-api - # mypy - # pydantic - # pydantic-core - # pytorch-lightning - # torch - # typeguard -tzdata==2024.1 - # via pandas -uncertainties==3.1.7 - # via pymatgen -urllib3==2.2.1 - # via - # requests - # torchdata - # types-requests -virtualenv==20.26.1 - # via pre-commit -watchdog==4.0.0 - # via mkdocs -wcmatch==8.5.1 - # via mkdocs-awesome-pages-plugin -wincertstore==0.2 - # via emmet-core (setup.py) -yarl==1.9.4 - # via aiohttp -zipp==3.18.1 - # via - # importlib-metadata - # importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools