mp-api 0.46.2rc12__tar.gz → 0.46.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/PKG-INFO +3 -3
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/core/client.py +4 -2
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api.egg-info/PKG-INFO +3 -3
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api.egg-info/requires.txt +2 -2
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/pyproject.toml +2 -2
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.11.txt +6 -6
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.11_extras.txt +22 -22
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.12.txt +6 -6
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.12_extras.txt +22 -22
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.13.txt +6 -6
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.13_extras.txt +22 -22
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.14.txt +6 -6
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.14_extras.txt +22 -22
- mp_api-0.46.4/tests/client/contribs/conftest.py +34 -0
- mp_api-0.46.2rc12/tests/client/contribs/conftest.py +0 -11
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/.coveragerc +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/.github/workflows/lint.yml +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/.github/workflows/release.yml +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/.github/workflows/testing.yml +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/.github/workflows/upgrade_dependencies.yml +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/.gitignore +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/.pre-commit-config.yaml +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/CODE_OF_CONDUCT.md +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/LICENSE +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/README.md +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/dev/generate_mcp_tools.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/dev/inspect_mcp.sh +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/docs/Makefile +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/docs/_templates/custom-class-template.rst +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/docs/_templates/custom-module-template.rst +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/docs/conf.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/docs/index.rst +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/docs/make.bat +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/docs/modules.rst +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/_test_utils.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/_server_utils.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/contribs/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/contribs/_logger.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/contribs/_types.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/contribs/_units.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/contribs/client.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/contribs/schemas.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/contribs/settings.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/contribs/utils.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/core/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/core/_oxygen_evolution.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/core/exceptions.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/core/schemas.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/core/settings.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/core/utils.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/mprester.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/_server.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/absorption.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/alloys.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/bonds.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/chemenv.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/dielectric.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/doi.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/elasticity.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/electrodes.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/electronic_structure.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/eos.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/grain_boundaries.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/magnetism.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/materials.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/oxidation_states.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/phonon.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/piezo.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/provenance.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/robocrys.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/similarity.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/substrates.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/summary.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/surface_properties.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/synthesis.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/tasks.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/thermo.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/materials/xas.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/molecules/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/molecules/jcesr.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/molecules/molecules.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/client/routes/molecules/summary.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/mcp/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/mcp/_schemas.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/mcp/mp_mcp.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/mcp/server.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/mcp/tools.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/mcp/utils.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api/py.typed +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api.egg-info/SOURCES.txt +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api.egg-info/dependency_links.txt +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api.egg-info/entry_points.txt +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/mp_api.egg-info/top_level.txt +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/setup.cfg +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/test_files/Si_mp_149.cif +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/contribs/test_client.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/contribs/test_contribs_schemas.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/contribs/test_contribs_utils.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/contribs/test_types.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/core/test_oxygen_evolution.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/core/test_schemas.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/core/test_utils.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_absorption.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_alloys.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_bonds.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_chemenv.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_dielectric.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_doi.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_elasticity.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_electrodes.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_electronic_structure.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_eos.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_grain_boundary.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_magnetism.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_materials.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_oxidation_states.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_phonon.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_piezo.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_provenance.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_robocrys.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_similarity.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_substrates.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_summary.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_surface_properties.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_synthesis.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_tasks.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_thermo.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/materials/test_xas.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/molecules/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/molecules/test_jcesr.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/molecules/test_molecules.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/molecules/test_summary.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/test_client.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/test_core_client.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/test_heartbeat.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/client/test_mprester.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/mcp/__init__.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/mcp/test_server.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/mcp/test_tools.py +0 -0
- {mp_api-0.46.2rc12 → mp_api-0.46.4}/tests/mcp/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mp-api
|
|
3
|
-
Version: 0.46.
|
|
3
|
+
Version: 0.46.4
|
|
4
4
|
Summary: API Client for the Materials Project
|
|
5
5
|
Author-email: The Materials Project <feedback@materialsproject.org>
|
|
6
6
|
License-Expression: BSD-3-Clause-LBNL
|
|
@@ -17,7 +17,7 @@ Requires-Dist: pymatgen>2024.2.20
|
|
|
17
17
|
Requires-Dist: typing-extensions>=3.7.4.1
|
|
18
18
|
Requires-Dist: requests>=2.23.0
|
|
19
19
|
Requires-Dist: monty>=2024.12.10
|
|
20
|
-
Requires-Dist: emmet-core
|
|
20
|
+
Requires-Dist: emmet-core>=0.87.1
|
|
21
21
|
Requires-Dist: boto3
|
|
22
22
|
Requires-Dist: orjson<4,>=3.10
|
|
23
23
|
Requires-Dist: pyarrow>=20.0.0
|
|
@@ -40,7 +40,7 @@ Requires-Dist: cachetools; extra == "contribs"
|
|
|
40
40
|
Requires-Dist: pymongo; extra == "contribs"
|
|
41
41
|
Provides-Extra: all
|
|
42
42
|
Requires-Dist: custodian; extra == "all"
|
|
43
|
-
Requires-Dist: emmet-core[all]
|
|
43
|
+
Requires-Dist: emmet-core[all]>=0.87.1; extra == "all"
|
|
44
44
|
Requires-Dist: fastmcp; extra == "all"
|
|
45
45
|
Requires-Dist: flask; extra == "all"
|
|
46
46
|
Provides-Extra: test
|
|
@@ -84,6 +84,7 @@ CONTROLLED_COLLECTIONS = [
|
|
|
84
84
|
"materials",
|
|
85
85
|
"oxidation-states",
|
|
86
86
|
"summary",
|
|
87
|
+
"tasks",
|
|
87
88
|
"thermo",
|
|
88
89
|
]
|
|
89
90
|
|
|
@@ -612,7 +613,7 @@ class BaseRester(_Rester):
|
|
|
612
613
|
DeltaTable : If one exists at the specified bucket / prefix,
|
|
613
614
|
will retrieve the cached instance.
|
|
614
615
|
"""
|
|
615
|
-
delta_timeout = f"{self.timeout}s"
|
|
616
|
+
delta_timeout = f"{self.timeout * 3}s"
|
|
616
617
|
full_key = f"{bucket}/{prefix}"
|
|
617
618
|
qb_label = label or full_key.replace("/", "_").replace("-", "_")
|
|
618
619
|
|
|
@@ -637,6 +638,7 @@ class BaseRester(_Rester):
|
|
|
637
638
|
"AWS_REGION": "us-east-1",
|
|
638
639
|
"timeout": delta_timeout,
|
|
639
640
|
"connect_timeout": delta_timeout,
|
|
641
|
+
"pool_idle_timeout": delta_timeout,
|
|
640
642
|
"retry_delay": "3",
|
|
641
643
|
"max_retries": f"{MAPI_CLIENT_SETTINGS.MAX_RETRIES}",
|
|
642
644
|
},
|
|
@@ -816,7 +818,7 @@ class BaseRester(_Rester):
|
|
|
816
818
|
accumulator: list[pa.RecordBatch],
|
|
817
819
|
group: int,
|
|
818
820
|
schema: pa.Schema,
|
|
819
|
-
partitioning: pa.dataset.
|
|
821
|
+
partitioning: pa.dataset.Partitioning,
|
|
820
822
|
):
|
|
821
823
|
# somewhere post datafusion 51.0.0 and arrow-rs 57.0.0
|
|
822
824
|
# casts to *View types began, need to cast back to base schema
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mp-api
|
|
3
|
-
Version: 0.46.
|
|
3
|
+
Version: 0.46.4
|
|
4
4
|
Summary: API Client for the Materials Project
|
|
5
5
|
Author-email: The Materials Project <feedback@materialsproject.org>
|
|
6
6
|
License-Expression: BSD-3-Clause-LBNL
|
|
@@ -17,7 +17,7 @@ Requires-Dist: pymatgen>2024.2.20
|
|
|
17
17
|
Requires-Dist: typing-extensions>=3.7.4.1
|
|
18
18
|
Requires-Dist: requests>=2.23.0
|
|
19
19
|
Requires-Dist: monty>=2024.12.10
|
|
20
|
-
Requires-Dist: emmet-core
|
|
20
|
+
Requires-Dist: emmet-core>=0.87.1
|
|
21
21
|
Requires-Dist: boto3
|
|
22
22
|
Requires-Dist: orjson<4,>=3.10
|
|
23
23
|
Requires-Dist: pyarrow>=20.0.0
|
|
@@ -40,7 +40,7 @@ Requires-Dist: cachetools; extra == "contribs"
|
|
|
40
40
|
Requires-Dist: pymongo; extra == "contribs"
|
|
41
41
|
Provides-Extra: all
|
|
42
42
|
Requires-Dist: custodian; extra == "all"
|
|
43
|
-
Requires-Dist: emmet-core[all]
|
|
43
|
+
Requires-Dist: emmet-core[all]>=0.87.1; extra == "all"
|
|
44
44
|
Requires-Dist: fastmcp; extra == "all"
|
|
45
45
|
Requires-Dist: flask; extra == "all"
|
|
46
46
|
Provides-Extra: test
|
|
@@ -2,7 +2,7 @@ pymatgen>2024.2.20
|
|
|
2
2
|
typing-extensions>=3.7.4.1
|
|
3
3
|
requests>=2.23.0
|
|
4
4
|
monty>=2024.12.10
|
|
5
|
-
emmet-core
|
|
5
|
+
emmet-core>=0.87.1
|
|
6
6
|
boto3
|
|
7
7
|
orjson<4,>=3.10
|
|
8
8
|
pyarrow>=20.0.0
|
|
@@ -10,7 +10,7 @@ deltalake<1.6.0,>=1.4.0
|
|
|
10
10
|
|
|
11
11
|
[all]
|
|
12
12
|
custodian
|
|
13
|
-
emmet-core[all]
|
|
13
|
+
emmet-core[all]>=0.87.1
|
|
14
14
|
fastmcp
|
|
15
15
|
flask
|
|
16
16
|
|
|
@@ -24,7 +24,7 @@ dependencies = [
|
|
|
24
24
|
"typing-extensions>=3.7.4.1",
|
|
25
25
|
"requests>=2.23.0",
|
|
26
26
|
"monty>=2024.12.10",
|
|
27
|
-
"emmet-core>=0.87.
|
|
27
|
+
"emmet-core>=0.87.1",
|
|
28
28
|
"boto3",
|
|
29
29
|
"orjson >= 3.10,<4",
|
|
30
30
|
"pyarrow >= 20.0.0",
|
|
@@ -50,7 +50,7 @@ contribs = [
|
|
|
50
50
|
]
|
|
51
51
|
all = [
|
|
52
52
|
"custodian",
|
|
53
|
-
"emmet-core[all]>=0.87.
|
|
53
|
+
"emmet-core[all]>=0.87.1",
|
|
54
54
|
"fastmcp",
|
|
55
55
|
"flask",
|
|
56
56
|
]
|
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
#
|
|
7
7
|
annotated-types==0.7.0
|
|
8
8
|
# via pydantic
|
|
9
|
-
arro3-core==0.8.
|
|
9
|
+
arro3-core==0.8.1
|
|
10
10
|
# via deltalake
|
|
11
11
|
bibtexparser==1.4.4
|
|
12
12
|
# via pymatgen-core
|
|
13
13
|
blake3==1.0.8
|
|
14
14
|
# via emmet-core
|
|
15
|
-
boto3==1.43.
|
|
15
|
+
boto3==1.43.29
|
|
16
16
|
# via mp-api (pyproject.toml)
|
|
17
|
-
botocore==1.43.
|
|
17
|
+
botocore==1.43.29
|
|
18
18
|
# via
|
|
19
19
|
# boto3
|
|
20
20
|
# s3transfer
|
|
@@ -30,7 +30,7 @@ deltalake==1.5.1
|
|
|
30
30
|
# via mp-api (pyproject.toml)
|
|
31
31
|
deprecated==1.3.1
|
|
32
32
|
# via deltalake
|
|
33
|
-
emmet-core==0.87.
|
|
33
|
+
emmet-core==0.87.1
|
|
34
34
|
# via mp-api (pyproject.toml)
|
|
35
35
|
fonttools==4.63.0
|
|
36
36
|
# via matplotlib
|
|
@@ -50,7 +50,7 @@ latexcodec==3.0.1
|
|
|
50
50
|
# via pybtex
|
|
51
51
|
lxml==6.1.1
|
|
52
52
|
# via pymatgen-core
|
|
53
|
-
matplotlib==3.
|
|
53
|
+
matplotlib==3.11.0
|
|
54
54
|
# via pymatgen-core
|
|
55
55
|
monty==2026.5.18
|
|
56
56
|
# via
|
|
@@ -149,7 +149,7 @@ sympy==1.14.0
|
|
|
149
149
|
# via pymatgen-core
|
|
150
150
|
tabulate==0.10.0
|
|
151
151
|
# via pymatgen-core
|
|
152
|
-
tqdm==4.68.
|
|
152
|
+
tqdm==4.68.2
|
|
153
153
|
# via pymatgen-core
|
|
154
154
|
typeguard==4.5.2
|
|
155
155
|
# via inflect
|
{mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.11_extras.txt
RENAMED
|
@@ -18,7 +18,7 @@ anyio==4.13.0
|
|
|
18
18
|
# sse-starlette
|
|
19
19
|
# starlette
|
|
20
20
|
# watchfiles
|
|
21
|
-
arro3-core==0.8.
|
|
21
|
+
arro3-core==0.8.1
|
|
22
22
|
# via deltalake
|
|
23
23
|
arrow==1.4.0
|
|
24
24
|
# via isoduration
|
|
@@ -50,9 +50,9 @@ blinker==1.9.0
|
|
|
50
50
|
# via flask
|
|
51
51
|
boltons==25.0.0
|
|
52
52
|
# via mp-api (pyproject.toml)
|
|
53
|
-
boto3==1.43.
|
|
53
|
+
boto3==1.43.29
|
|
54
54
|
# via mp-api (pyproject.toml)
|
|
55
|
-
botocore==1.43.
|
|
55
|
+
botocore==1.43.29
|
|
56
56
|
# via
|
|
57
57
|
# boto3
|
|
58
58
|
# s3transfer
|
|
@@ -85,7 +85,7 @@ contourpy==1.3.3
|
|
|
85
85
|
# via matplotlib
|
|
86
86
|
coverage[toml]==7.14.1
|
|
87
87
|
# via pytest-cov
|
|
88
|
-
cryptography==
|
|
88
|
+
cryptography==49.0.0
|
|
89
89
|
# via
|
|
90
90
|
# authlib
|
|
91
91
|
# joserfc
|
|
@@ -95,7 +95,7 @@ custodian==2025.12.14
|
|
|
95
95
|
# via mp-api (pyproject.toml)
|
|
96
96
|
cycler==0.12.1
|
|
97
97
|
# via matplotlib
|
|
98
|
-
cyclopts==4.
|
|
98
|
+
cyclopts==4.18.0
|
|
99
99
|
# via fastmcp-slim
|
|
100
100
|
decorator==5.3.1
|
|
101
101
|
# via ipython
|
|
@@ -103,7 +103,7 @@ deltalake==1.5.1
|
|
|
103
103
|
# via mp-api (pyproject.toml)
|
|
104
104
|
deprecated==1.3.1
|
|
105
105
|
# via deltalake
|
|
106
|
-
distlib==0.4.
|
|
106
|
+
distlib==0.4.3
|
|
107
107
|
# via virtualenv
|
|
108
108
|
dnspython==2.8.0
|
|
109
109
|
# via
|
|
@@ -116,7 +116,7 @@ docutils==0.22.4
|
|
|
116
116
|
# via sphinx
|
|
117
117
|
email-validator==2.3.0
|
|
118
118
|
# via pydantic
|
|
119
|
-
emmet-core[all]==0.87.
|
|
119
|
+
emmet-core[all]==0.87.1
|
|
120
120
|
# via mp-api (pyproject.toml)
|
|
121
121
|
exceptiongroup==1.3.1
|
|
122
122
|
# via fastmcp-slim
|
|
@@ -124,11 +124,11 @@ execnet==2.1.2
|
|
|
124
124
|
# via pytest-xdist
|
|
125
125
|
executing==2.2.1
|
|
126
126
|
# via stack-data
|
|
127
|
-
fastmcp==3.4.
|
|
127
|
+
fastmcp==3.4.2
|
|
128
128
|
# via mp-api (pyproject.toml)
|
|
129
|
-
fastmcp-slim[client,server]==3.4.
|
|
129
|
+
fastmcp-slim[client,server]==3.4.2
|
|
130
130
|
# via fastmcp
|
|
131
|
-
filelock==3.29.
|
|
131
|
+
filelock==3.29.4
|
|
132
132
|
# via
|
|
133
133
|
# python-discovery
|
|
134
134
|
# virtualenv
|
|
@@ -215,7 +215,7 @@ joblib==1.5.3
|
|
|
215
215
|
# via
|
|
216
216
|
# pymatgen-analysis-diffusion
|
|
217
217
|
# pymatgen-core
|
|
218
|
-
joserfc==1.7.
|
|
218
|
+
joserfc==1.7.1
|
|
219
219
|
# via
|
|
220
220
|
# authlib
|
|
221
221
|
# fastmcp-slim
|
|
@@ -259,7 +259,7 @@ markupsafe==3.0.3
|
|
|
259
259
|
# flask
|
|
260
260
|
# jinja2
|
|
261
261
|
# werkzeug
|
|
262
|
-
matplotlib==3.
|
|
262
|
+
matplotlib==3.11.0
|
|
263
263
|
# via
|
|
264
264
|
# ase
|
|
265
265
|
# phonopy
|
|
@@ -290,7 +290,7 @@ mp-pyrho==0.5.1
|
|
|
290
290
|
# via pymatgen-analysis-defects
|
|
291
291
|
mpmath==1.3.0
|
|
292
292
|
# via sympy
|
|
293
|
-
msgpack==1.
|
|
293
|
+
msgpack==1.2.0
|
|
294
294
|
# via
|
|
295
295
|
# bravado
|
|
296
296
|
# bravado-core
|
|
@@ -362,9 +362,9 @@ pathspec==1.1.1
|
|
|
362
362
|
# via mypy
|
|
363
363
|
pexpect==4.9.0
|
|
364
364
|
# via ipython
|
|
365
|
-
phonopy==4.1
|
|
365
|
+
phonopy==4.2.1
|
|
366
366
|
# via emmet-core
|
|
367
|
-
phonors==0.2.
|
|
367
|
+
phonors==0.2.1
|
|
368
368
|
# via phonopy
|
|
369
369
|
pillow==12.2.0
|
|
370
370
|
# via
|
|
@@ -475,7 +475,7 @@ pyparsing==3.3.2
|
|
|
475
475
|
# matplotlib
|
|
476
476
|
pyperclip==1.11.0
|
|
477
477
|
# via fastmcp-slim
|
|
478
|
-
pytest==9.0
|
|
478
|
+
pytest==9.1.0
|
|
479
479
|
# via
|
|
480
480
|
# mp-api (pyproject.toml)
|
|
481
481
|
# pytest-asyncio
|
|
@@ -498,7 +498,7 @@ python-dateutil==2.9.0.post0
|
|
|
498
498
|
# bravado-core
|
|
499
499
|
# matplotlib
|
|
500
500
|
# pandas
|
|
501
|
-
python-discovery==1.4.
|
|
501
|
+
python-discovery==1.4.2
|
|
502
502
|
# via virtualenv
|
|
503
503
|
python-dotenv==1.2.2
|
|
504
504
|
# via
|
|
@@ -613,7 +613,7 @@ sse-starlette==3.4.4
|
|
|
613
613
|
# via mcp
|
|
614
614
|
stack-data==0.6.3
|
|
615
615
|
# via ipython
|
|
616
|
-
starlette==1.
|
|
616
|
+
starlette==1.3.1
|
|
617
617
|
# via
|
|
618
618
|
# fastmcp-slim
|
|
619
619
|
# mcp
|
|
@@ -630,7 +630,7 @@ tabulate==0.10.0
|
|
|
630
630
|
# via pymatgen-core
|
|
631
631
|
tifffile==2026.3.3
|
|
632
632
|
# via scikit-image
|
|
633
|
-
tqdm==4.68.
|
|
633
|
+
tqdm==4.68.2
|
|
634
634
|
# via pymatgen-core
|
|
635
635
|
traitlets==5.15.1
|
|
636
636
|
# via
|
|
@@ -644,7 +644,7 @@ types-requests==2.33.0.20260518
|
|
|
644
644
|
# types-tqdm
|
|
645
645
|
types-setuptools==82.0.0.20260518
|
|
646
646
|
# via mp-api (pyproject.toml)
|
|
647
|
-
types-tqdm==4.
|
|
647
|
+
types-tqdm==4.68.0.20260608
|
|
648
648
|
# via mp-api (pyproject.toml)
|
|
649
649
|
typing-extensions==4.15.0
|
|
650
650
|
# via
|
|
@@ -695,11 +695,11 @@ uvicorn==0.49.0
|
|
|
695
695
|
# via
|
|
696
696
|
# fastmcp-slim
|
|
697
697
|
# mcp
|
|
698
|
-
virtualenv==21.
|
|
698
|
+
virtualenv==21.5.0
|
|
699
699
|
# via pre-commit
|
|
700
700
|
watchfiles==1.2.0
|
|
701
701
|
# via fastmcp-slim
|
|
702
|
-
wcwidth==0.
|
|
702
|
+
wcwidth==0.8.1
|
|
703
703
|
# via prompt-toolkit
|
|
704
704
|
webcolors==25.10.0
|
|
705
705
|
# via jsonschema
|
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
#
|
|
7
7
|
annotated-types==0.7.0
|
|
8
8
|
# via pydantic
|
|
9
|
-
arro3-core==0.8.
|
|
9
|
+
arro3-core==0.8.1
|
|
10
10
|
# via deltalake
|
|
11
11
|
bibtexparser==1.4.4
|
|
12
12
|
# via pymatgen-core
|
|
13
13
|
blake3==1.0.8
|
|
14
14
|
# via emmet-core
|
|
15
|
-
boto3==1.43.
|
|
15
|
+
boto3==1.43.29
|
|
16
16
|
# via mp-api (pyproject.toml)
|
|
17
|
-
botocore==1.43.
|
|
17
|
+
botocore==1.43.29
|
|
18
18
|
# via
|
|
19
19
|
# boto3
|
|
20
20
|
# s3transfer
|
|
@@ -30,7 +30,7 @@ deltalake==1.5.1
|
|
|
30
30
|
# via mp-api (pyproject.toml)
|
|
31
31
|
deprecated==1.3.1
|
|
32
32
|
# via deltalake
|
|
33
|
-
emmet-core==0.87.
|
|
33
|
+
emmet-core==0.87.1
|
|
34
34
|
# via mp-api (pyproject.toml)
|
|
35
35
|
fonttools==4.63.0
|
|
36
36
|
# via matplotlib
|
|
@@ -50,7 +50,7 @@ latexcodec==3.0.1
|
|
|
50
50
|
# via pybtex
|
|
51
51
|
lxml==6.1.1
|
|
52
52
|
# via pymatgen-core
|
|
53
|
-
matplotlib==3.
|
|
53
|
+
matplotlib==3.11.0
|
|
54
54
|
# via pymatgen-core
|
|
55
55
|
monty==2026.5.18
|
|
56
56
|
# via
|
|
@@ -149,7 +149,7 @@ sympy==1.14.0
|
|
|
149
149
|
# via pymatgen-core
|
|
150
150
|
tabulate==0.10.0
|
|
151
151
|
# via pymatgen-core
|
|
152
|
-
tqdm==4.68.
|
|
152
|
+
tqdm==4.68.2
|
|
153
153
|
# via pymatgen-core
|
|
154
154
|
typeguard==4.5.2
|
|
155
155
|
# via inflect
|
{mp_api-0.46.2rc12 → mp_api-0.46.4}/requirements/requirements-ubuntu-latest_py3.12_extras.txt
RENAMED
|
@@ -18,7 +18,7 @@ anyio==4.13.0
|
|
|
18
18
|
# sse-starlette
|
|
19
19
|
# starlette
|
|
20
20
|
# watchfiles
|
|
21
|
-
arro3-core==0.8.
|
|
21
|
+
arro3-core==0.8.1
|
|
22
22
|
# via deltalake
|
|
23
23
|
arrow==1.4.0
|
|
24
24
|
# via isoduration
|
|
@@ -48,9 +48,9 @@ blinker==1.9.0
|
|
|
48
48
|
# via flask
|
|
49
49
|
boltons==25.0.0
|
|
50
50
|
# via mp-api (pyproject.toml)
|
|
51
|
-
boto3==1.43.
|
|
51
|
+
boto3==1.43.29
|
|
52
52
|
# via mp-api (pyproject.toml)
|
|
53
|
-
botocore==1.43.
|
|
53
|
+
botocore==1.43.29
|
|
54
54
|
# via
|
|
55
55
|
# boto3
|
|
56
56
|
# s3transfer
|
|
@@ -83,7 +83,7 @@ contourpy==1.3.3
|
|
|
83
83
|
# via matplotlib
|
|
84
84
|
coverage[toml]==7.14.1
|
|
85
85
|
# via pytest-cov
|
|
86
|
-
cryptography==
|
|
86
|
+
cryptography==49.0.0
|
|
87
87
|
# via
|
|
88
88
|
# authlib
|
|
89
89
|
# joserfc
|
|
@@ -93,7 +93,7 @@ custodian==2025.12.14
|
|
|
93
93
|
# via mp-api (pyproject.toml)
|
|
94
94
|
cycler==0.12.1
|
|
95
95
|
# via matplotlib
|
|
96
|
-
cyclopts==4.
|
|
96
|
+
cyclopts==4.18.0
|
|
97
97
|
# via fastmcp-slim
|
|
98
98
|
decorator==5.3.1
|
|
99
99
|
# via ipython
|
|
@@ -101,7 +101,7 @@ deltalake==1.5.1
|
|
|
101
101
|
# via mp-api (pyproject.toml)
|
|
102
102
|
deprecated==1.3.1
|
|
103
103
|
# via deltalake
|
|
104
|
-
distlib==0.4.
|
|
104
|
+
distlib==0.4.3
|
|
105
105
|
# via virtualenv
|
|
106
106
|
dnspython==2.8.0
|
|
107
107
|
# via
|
|
@@ -114,7 +114,7 @@ docutils==0.22.4
|
|
|
114
114
|
# via sphinx
|
|
115
115
|
email-validator==2.3.0
|
|
116
116
|
# via pydantic
|
|
117
|
-
emmet-core[all]==0.87.
|
|
117
|
+
emmet-core[all]==0.87.1
|
|
118
118
|
# via mp-api (pyproject.toml)
|
|
119
119
|
exceptiongroup==1.3.1
|
|
120
120
|
# via fastmcp-slim
|
|
@@ -122,11 +122,11 @@ execnet==2.1.2
|
|
|
122
122
|
# via pytest-xdist
|
|
123
123
|
executing==2.2.1
|
|
124
124
|
# via stack-data
|
|
125
|
-
fastmcp==3.4.
|
|
125
|
+
fastmcp==3.4.2
|
|
126
126
|
# via mp-api (pyproject.toml)
|
|
127
|
-
fastmcp-slim[client,server]==3.4.
|
|
127
|
+
fastmcp-slim[client,server]==3.4.2
|
|
128
128
|
# via fastmcp
|
|
129
|
-
filelock==3.29.
|
|
129
|
+
filelock==3.29.4
|
|
130
130
|
# via
|
|
131
131
|
# python-discovery
|
|
132
132
|
# virtualenv
|
|
@@ -211,7 +211,7 @@ joblib==1.5.3
|
|
|
211
211
|
# via
|
|
212
212
|
# pymatgen-analysis-diffusion
|
|
213
213
|
# pymatgen-core
|
|
214
|
-
joserfc==1.7.
|
|
214
|
+
joserfc==1.7.1
|
|
215
215
|
# via
|
|
216
216
|
# authlib
|
|
217
217
|
# fastmcp-slim
|
|
@@ -255,7 +255,7 @@ markupsafe==3.0.3
|
|
|
255
255
|
# flask
|
|
256
256
|
# jinja2
|
|
257
257
|
# werkzeug
|
|
258
|
-
matplotlib==3.
|
|
258
|
+
matplotlib==3.11.0
|
|
259
259
|
# via
|
|
260
260
|
# ase
|
|
261
261
|
# phonopy
|
|
@@ -286,7 +286,7 @@ mp-pyrho==0.5.1
|
|
|
286
286
|
# via pymatgen-analysis-defects
|
|
287
287
|
mpmath==1.3.0
|
|
288
288
|
# via sympy
|
|
289
|
-
msgpack==1.
|
|
289
|
+
msgpack==1.2.0
|
|
290
290
|
# via
|
|
291
291
|
# bravado
|
|
292
292
|
# bravado-core
|
|
@@ -358,9 +358,9 @@ pathspec==1.1.1
|
|
|
358
358
|
# via mypy
|
|
359
359
|
pexpect==4.9.0
|
|
360
360
|
# via ipython
|
|
361
|
-
phonopy==4.1
|
|
361
|
+
phonopy==4.2.1
|
|
362
362
|
# via emmet-core
|
|
363
|
-
phonors==0.2.
|
|
363
|
+
phonors==0.2.1
|
|
364
364
|
# via phonopy
|
|
365
365
|
pillow==12.2.0
|
|
366
366
|
# via
|
|
@@ -471,7 +471,7 @@ pyparsing==3.3.2
|
|
|
471
471
|
# matplotlib
|
|
472
472
|
pyperclip==1.11.0
|
|
473
473
|
# via fastmcp-slim
|
|
474
|
-
pytest==9.0
|
|
474
|
+
pytest==9.1.0
|
|
475
475
|
# via
|
|
476
476
|
# mp-api (pyproject.toml)
|
|
477
477
|
# pytest-asyncio
|
|
@@ -494,7 +494,7 @@ python-dateutil==2.9.0.post0
|
|
|
494
494
|
# bravado-core
|
|
495
495
|
# matplotlib
|
|
496
496
|
# pandas
|
|
497
|
-
python-discovery==1.4.
|
|
497
|
+
python-discovery==1.4.2
|
|
498
498
|
# via virtualenv
|
|
499
499
|
python-dotenv==1.2.2
|
|
500
500
|
# via
|
|
@@ -609,7 +609,7 @@ sse-starlette==3.4.4
|
|
|
609
609
|
# via mcp
|
|
610
610
|
stack-data==0.6.3
|
|
611
611
|
# via ipython
|
|
612
|
-
starlette==1.
|
|
612
|
+
starlette==1.3.1
|
|
613
613
|
# via
|
|
614
614
|
# fastmcp-slim
|
|
615
615
|
# mcp
|
|
@@ -626,7 +626,7 @@ tabulate==0.10.0
|
|
|
626
626
|
# via pymatgen-core
|
|
627
627
|
tifffile==2026.6.1
|
|
628
628
|
# via scikit-image
|
|
629
|
-
tqdm==4.68.
|
|
629
|
+
tqdm==4.68.2
|
|
630
630
|
# via pymatgen-core
|
|
631
631
|
traitlets==5.15.1
|
|
632
632
|
# via
|
|
@@ -640,7 +640,7 @@ types-requests==2.33.0.20260518
|
|
|
640
640
|
# types-tqdm
|
|
641
641
|
types-setuptools==82.0.0.20260518
|
|
642
642
|
# via mp-api (pyproject.toml)
|
|
643
|
-
types-tqdm==4.
|
|
643
|
+
types-tqdm==4.68.0.20260608
|
|
644
644
|
# via mp-api (pyproject.toml)
|
|
645
645
|
typing-extensions==4.15.0
|
|
646
646
|
# via
|
|
@@ -688,11 +688,11 @@ uvicorn==0.49.0
|
|
|
688
688
|
# via
|
|
689
689
|
# fastmcp-slim
|
|
690
690
|
# mcp
|
|
691
|
-
virtualenv==21.
|
|
691
|
+
virtualenv==21.5.0
|
|
692
692
|
# via pre-commit
|
|
693
693
|
watchfiles==1.2.0
|
|
694
694
|
# via fastmcp-slim
|
|
695
|
-
wcwidth==0.
|
|
695
|
+
wcwidth==0.8.1
|
|
696
696
|
# via prompt-toolkit
|
|
697
697
|
webcolors==25.10.0
|
|
698
698
|
# via jsonschema
|
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
#
|
|
7
7
|
annotated-types==0.7.0
|
|
8
8
|
# via pydantic
|
|
9
|
-
arro3-core==0.8.
|
|
9
|
+
arro3-core==0.8.1
|
|
10
10
|
# via deltalake
|
|
11
11
|
bibtexparser==1.4.4
|
|
12
12
|
# via pymatgen-core
|
|
13
13
|
blake3==1.0.8
|
|
14
14
|
# via emmet-core
|
|
15
|
-
boto3==1.43.
|
|
15
|
+
boto3==1.43.29
|
|
16
16
|
# via mp-api (pyproject.toml)
|
|
17
|
-
botocore==1.43.
|
|
17
|
+
botocore==1.43.29
|
|
18
18
|
# via
|
|
19
19
|
# boto3
|
|
20
20
|
# s3transfer
|
|
@@ -30,7 +30,7 @@ deltalake==1.5.1
|
|
|
30
30
|
# via mp-api (pyproject.toml)
|
|
31
31
|
deprecated==1.3.1
|
|
32
32
|
# via deltalake
|
|
33
|
-
emmet-core==0.87.
|
|
33
|
+
emmet-core==0.87.1
|
|
34
34
|
# via mp-api (pyproject.toml)
|
|
35
35
|
fonttools==4.63.0
|
|
36
36
|
# via matplotlib
|
|
@@ -50,7 +50,7 @@ latexcodec==3.0.1
|
|
|
50
50
|
# via pybtex
|
|
51
51
|
lxml==6.1.1
|
|
52
52
|
# via pymatgen-core
|
|
53
|
-
matplotlib==3.
|
|
53
|
+
matplotlib==3.11.0
|
|
54
54
|
# via pymatgen-core
|
|
55
55
|
monty==2026.5.18
|
|
56
56
|
# via
|
|
@@ -149,7 +149,7 @@ sympy==1.14.0
|
|
|
149
149
|
# via pymatgen-core
|
|
150
150
|
tabulate==0.10.0
|
|
151
151
|
# via pymatgen-core
|
|
152
|
-
tqdm==4.68.
|
|
152
|
+
tqdm==4.68.2
|
|
153
153
|
# via pymatgen-core
|
|
154
154
|
typeguard==4.5.2
|
|
155
155
|
# via inflect
|