materialsproject / api

New API client for the Materials Project
https://materialsproject.github.io/api/
Other
105 stars 34 forks source link

[Bug]: The MPRester.get_entries method always returns duplicated results #841

Open goodwilling opened 10 months ago

goodwilling commented 10 months ago

Email (Optional)

No response

Version

v0.35.1

Which OS(es) are you using?

What happened?

The MPRester.get_entries method always returns duplicated results. For example, the following script returns 3 entries for mp-149. It will be convenient if duplicated entries are removed in the results of get_entries. Thank you very much.

Code snippet

from mp_api.client import MPRester
mpr = MPRester("32-digit API key")
entry = mpr.get_entries("mp-149")
print(len(entry))

Log output

UserWarning: mpcontribs-client not installed. Install the package to query MPContribs data, or construct pourbaix diagrams: 'pip install mpcontribs-client'

3

Code of Conduct

munrojm commented 10 months ago

@goodwilling thanks for bringing this up, I will take a closer at look at what might be causing this.

goodwilling commented 9 months ago

Thanks. After some tests, it is found that the duplicated results can be removed, if parallel_param = None is explicitly set in mp_api/client/core/client.py:

def _submit_requests(

    # Generate new sets of criteria dicts to be run in parallel
    # with new appropriate limit values. New limits obtained from
    # trying to evenly divide num_chunks by the total number of new
    # criteria dicts.
    **_parallel_param = None_**

if parallel_param is not None:
        # Determine slice size accounting for character maximum in HTTP URL
        # First get URl length without parallel param
munrojm commented 9 months ago

@goodwilling this is helpful. Was delayed updating a bunch of our packages to support pydantic 2.0, but will look at this today.