Skip to content

Commit 09b4b99

Browse files
committed
Release v1.5.0 - Changelog
1 parent a2e25af commit 09b4b99

5 files changed

Lines changed: 99 additions & 78 deletions

File tree

CHANGELOG.md

Lines changed: 95 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
11
# Changelog
22

3+
## [v1.5.0](https://github.com/Materials-Consortia/optimade-python-tools/tree/v1.5.0) (2026-06-20)
4+
5+
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v1.4.2...v1.5.0)
6+
7+
**Fixed bugs:**
8+
9+
- Client does not use configured HTTP session for scraping provider list [\#2275](https://github.com/Materials-Consortia/optimade-python-tools/issues/2275)
10+
11+
**Closed issues:**
12+
13+
- Migrate off httpx [\#2388](https://github.com/Materials-Consortia/optimade-python-tools/issues/2388)
14+
- Switch dependency management to `uv` [\#2311](https://github.com/Materials-Consortia/optimade-python-tools/issues/2311)
15+
16+
**Merged pull requests:**
17+
18+
- Update GitHub changelog generator docker [\#2408](https://github.com/Materials-Consortia/optimade-python-tools/pull/2408) ([ml-evs](https://github.com/ml-evs))
19+
- Do not create release-specific changelog [\#2407](https://github.com/Materials-Consortia/optimade-python-tools/pull/2407) ([ml-evs](https://github.com/ml-evs))
20+
- Bump the github-actions group across 1 directory with 3 updates [\#2401](https://github.com/Materials-Consortia/optimade-python-tools/pull/2401) ([dependabot[bot]](https://github.com/apps/dependabot))
21+
- Revert "Revert "Use `uv` in CI workflows and add `uv.lock`"" [\#2397](https://github.com/Materials-Consortia/optimade-python-tools/pull/2397) ([ml-evs](https://github.com/ml-evs))
22+
- Allow a custom requests.Session for provider-list scraping [\#2380](https://github.com/Materials-Consortia/optimade-python-tools/pull/2380) ([vasa-develop](https://github.com/vasa-develop))
23+
324
## [v1.4.2](https://github.com/Materials-Consortia/optimade-python-tools/tree/v1.4.2) (2026-06-20)
425

526
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v1.4.1...v1.4.2)
@@ -128,8 +149,8 @@
128149

129150
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v1.2.2...v1.2.3)
130151

131-
Users of the `OptimadeClient` are recommended to install this update.
132-
152+
Users of the `OptimadeClient` are recommended to install this update.
153+
133154
This release fixes a nasty issue with the client that can cause it to hang infinitely when an malformed OPTIMADE API continues to return `next_url` with no additional data (thanks to @mehmetgiritli for the report and fix!) It also reduces the default MongoDB timeout when counting how many results are in a filter. As this count is performed for every page of queries, the previous high timeout could effectively set a minimum response time of 5 seconds. Issue #2251 tracks future improvements to this behaviour.
134155

135156
**Fixed bugs:**
@@ -445,14 +466,14 @@ This v1.2.0 release is coincidentally the first to support some features from OP
445466

446467
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.25.3...v1.0.0)
447468

448-
optimade-python-tools has reached v1.0.0!
449-
450-
We have decided to make this first major release at this point due to the arduous migration to pydantic v2 between v1.0.0 and v0.25.3. This will allow for improved compatibility with the rest of the ecosystem, plus all of the performance and ergonomics benefits of the new pydantic.
451-
452-
If you are using optimade-python-tools primarily as a library, then you may need to make some code changes to support the new version. For example, the underlying API for dealing with the pydantic models has changed (e.g., `model.dict()` is now `model.model_dump()`) -- a full migration guide can be found in the [pydantic docs](https://docs.pydantic.dev/latest/migration/). Additionally, any cases where the underlying JSON schemas were being modified may need to be updated; internally we are pretty much exclusively operating on the pydantic model objects without needing to modify the raw schemas anymore.
453-
454-
Going forward, v1.0.x will be the last series to support v1.1 of the OPTIMADE specification, with future versions of the package v1.x.y adding features from the pre-release of OPTIMADE v1.2.
455-
469+
optimade-python-tools has reached v1.0.0!
470+
471+
We have decided to make this first major release at this point due to the arduous migration to pydantic v2 between v1.0.0 and v0.25.3. This will allow for improved compatibility with the rest of the ecosystem, plus all of the performance and ergonomics benefits of the new pydantic.
472+
473+
If you are using optimade-python-tools primarily as a library, then you may need to make some code changes to support the new version. For example, the underlying API for dealing with the pydantic models has changed (e.g., `model.dict()` is now `model.model_dump()`) -- a full migration guide can be found in the [pydantic docs](https://docs.pydantic.dev/latest/migration/). Additionally, any cases where the underlying JSON schemas were being modified may need to be updated; internally we are pretty much exclusively operating on the pydantic model objects without needing to modify the raw schemas anymore.
474+
475+
Going forward, v1.0.x will be the last series to support v1.1 of the OPTIMADE specification, with future versions of the package v1.x.y adding features from the pre-release of OPTIMADE v1.2.
476+
456477
A branch will be maintained for the v0.25.x series will be maintained for those who are stuck on pydantic v1 and run into bugs. Please make it clear in any bug reports if you are using this version.
457478

458479
**Fixed bugs:**
@@ -639,36 +660,36 @@ This release adds a new feature to the reference server for avoiding validating
639660

640661
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.20.3...v0.21.0)
641662

642-
This minor release contains new client functionality and improved support for ASE.
643-
644-
## New features:
645-
646-
- Ability to specify async callback functions that are called after every client response.
647-
This can be used for e.g., iteratively saving to file or a database. For example:
648-
649-
```python
650-
from optimade.client import OptimadeClient
651-
652-
DATABASE = pymongo.MongoClient().database.collection
653-
654-
def save_callback(url, results) -> None:
655-
for structure in results["data"]:
656-
DATABASE.insert_one(structure)
657-
658-
client = OptimadeClient(callbacks=[save_callback])
659-
client.get()
660-
```
661-
662-
- Ability to create OPTIMADE structure objects from ASE atoms:
663-
```python
664-
from optimade.adapters import Structure
665-
from ase import Atoms
666-
667-
co = Atoms('CO', positions=[(0, 0, 0), (0, 0, 1.1)])
668-
669-
structure = Structure.from_ase_atoms(co)
670-
```
671-
663+
This minor release contains new client functionality and improved support for ASE.
664+
665+
## New features:
666+
667+
- Ability to specify async callback functions that are called after every client response.
668+
This can be used for e.g., iteratively saving to file or a database. For example:
669+
670+
```python
671+
from optimade.client import OptimadeClient
672+
673+
DATABASE = pymongo.MongoClient().database.collection
674+
675+
def save_callback(url, results) -> None:
676+
for structure in results["data"]:
677+
DATABASE.insert_one(structure)
678+
679+
client = OptimadeClient(callbacks=[save_callback])
680+
client.get()
681+
```
682+
683+
- Ability to create OPTIMADE structure objects from ASE atoms:
684+
```python
685+
from optimade.adapters import Structure
686+
from ase import Atoms
687+
688+
co = Atoms('CO', positions=[(0, 0, 0), (0, 0, 1.1)])
689+
690+
structure = Structure.from_ase_atoms(co)
691+
```
692+
672693
- Added ability to mute the client progress bars with `--silent`/`silent=True` and increased default response timeouts to better reflect those required for practical queries.
673694

674695
**Implemented enhancements:**
@@ -704,25 +725,25 @@ This release primarily adds compatibility for the newest FastAPI releases (`>=0.
704725

705726
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.20.1...v0.20.2)
706727

707-
This release adds the ability to include or exclude particular providers from queries with the `OptimadeClient` class and `optimade-get` CLI, via the provider's registered prefix (#1412)
708-
709-
For example:
710-
711-
```shell
712-
# Only query databases served by the example providers
713-
optimade-get --include-providers exmpl,optimade
714-
# Exclude example providers from global list
715-
optimade-get --exclude-providers exmpl,optimade
716-
```
717-
718-
You can also now exclude particular databases by their URLs:
719-
```shell
720-
# Exclude specific example databases
721-
optimade-get --exclude-databases https://example.org/optimade,https://optimade.org/example
722-
```
723-
724-
The release also includes some server enhancements and fixes:
725-
- Caching of `/info/` and `/info/<entry>` endpoint responses (#1433)
728+
This release adds the ability to include or exclude particular providers from queries with the `OptimadeClient` class and `optimade-get` CLI, via the provider's registered prefix (#1412)
729+
730+
For example:
731+
732+
```shell
733+
# Only query databases served by the example providers
734+
optimade-get --include-providers exmpl,optimade
735+
# Exclude example providers from global list
736+
optimade-get --exclude-providers exmpl,optimade
737+
```
738+
739+
You can also now exclude particular databases by their URLs:
740+
```shell
741+
# Exclude specific example databases
742+
optimade-get --exclude-databases https://example.org/optimade,https://optimade.org/example
743+
```
744+
745+
The release also includes some server enhancements and fixes:
746+
- Caching of `/info/` and `/info/<entry>` endpoint responses (#1433)
726747
- A bugfix for the entry mapper classes, which were sharing cache resources globally leading to poor utilization (#1435)
727748

728749
**Implemented enhancements:**
@@ -759,8 +780,8 @@ The release also includes some server enhancements and fixes:
759780

760781
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.19.4...v0.20.0)
761782

762-
This release continues the modularisation of the package by moving the server exceptions and warnings out into top-level modules, and removing the core dependency on FastAPI (now a server dependency only). This should allow for easier use of the `optimade.models` and `optimade.client` modules within other packages.
763-
783+
This release continues the modularisation of the package by moving the server exceptions and warnings out into top-level modules, and removing the core dependency on FastAPI (now a server dependency only). This should allow for easier use of the `optimade.models` and `optimade.client` modules within other packages.
784+
764785
Aside from that, the package now supports Python 3.11, and our example server is now deployed at [Fly.io](https://optimade.fly.dev) rather than Heroku.
765786

766787
**Implemented enhancements:**
@@ -851,7 +872,7 @@ This is a hotfix release for #1335, a bug regarding chunked responses triggered
851872

852873
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.18.0...v0.19.0)
853874

854-
This minor release includes several usability improvements for the server and client arising from the OPTIMADE workshop.
875+
This minor release includes several usability improvements for the server and client arising from the OPTIMADE workshop.
855876
This release also drops support for Python 3.7, which should allow us to streamline our dependencies going forward.
856877

857878
**Implemented enhancements:**
@@ -888,10 +909,10 @@ This release also drops support for Python 3.7, which should allow us to streaml
888909

889910
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.17.2...v0.18.0)
890911

891-
This is a feature release that includes the new `optimade.client.OptimadeClient` class, a client capable asynchronously querying multiple OPTIMADE APIs simultaneously.
892-
It also contains a patch for the OPTIMADE models that allows them to be used with more recent FastAPI versions without breaking OpenAPI 3.0 compatibility.
912+
This is a feature release that includes the new `optimade.client.OptimadeClient` class, a client capable asynchronously querying multiple OPTIMADE APIs simultaneously.
913+
It also contains a patch for the OPTIMADE models that allows them to be used with more recent FastAPI versions without breaking OpenAPI 3.0 compatibility.
893914
Other changes can be found below.
894-
This release includes improvements to the validator to catch more cases where OPTIMADE APIs are only partially implemented.
915+
This release includes improvements to the validator to catch more cases where OPTIMADE APIs are only partially implemented.
895916
Previously, APIs that did not support filtering, pagination or limiting response fields at all (i.e., the query parameter is simply ignored) would pass most validation tests erroneously in some unlucky situations (#1180).
896917

897918
**Implemented enhancements:**
@@ -915,7 +936,7 @@ Previously, APIs that did not support filtering, pagination or limiting response
915936

916937
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.17.1...v0.17.2)
917938

918-
This release includes improvements to the validator to catch more cases where OPTIMADE APIs are only partially implemented.
939+
This release includes improvements to the validator to catch more cases where OPTIMADE APIs are only partially implemented.
919940
Previously, APIs that did not support filtering, pagination or limiting response fields at all (i.e., the query parameter is simply ignored) would pass most validation tests erroneously in some unlucky situations (#1180).
920941

921942
**Fixed bugs:**
@@ -930,10 +951,10 @@ Previously, APIs that did not support filtering, pagination or limiting response
930951

931952
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.17.0...v0.17.1)
932953

933-
This patch release adds a pre-built Docker container for the reference server to the GitHub Container Registry (GHCR) and a series of [Deployment instructions](https://www.optimade.org/optimade-python-tools/v0.17.1/deployment/container/) in the online documentation.
934-
935-
The image can be easily pulled from GHCR with:
936-
954+
This patch release adds a pre-built Docker container for the reference server to the GitHub Container Registry (GHCR) and a series of [Deployment instructions](https://www.optimade.org/optimade-python-tools/v0.17.1/deployment/container/) in the online documentation.
955+
956+
The image can be easily pulled from GHCR with:
957+
937958
```docker pull ghcr.io/materials-consortia/optimade```
938959

939960
**Implemented enhancements:**
@@ -953,10 +974,10 @@ The image can be easily pulled from GHCR with:
953974

954975
[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.16.12...v0.17.0)
955976

956-
This minor release contains fixes recommended for those deploying the optimade-python-tools reference server:
957-
958-
- The `meta->data_returned` field was previously incorrect when using the MongoDB backend.
959-
- Incoming URL query parameters are now validated against the provided query parameters class (if using custom query parameters, this class should be extended or the parameters should use your registered provider prefix). This functionality can be disabled with the `validate_query_parameters` config option.
977+
This minor release contains fixes recommended for those deploying the optimade-python-tools reference server:
978+
979+
- The `meta->data_returned` field was previously incorrect when using the MongoDB backend.
980+
- Incoming URL query parameters are now validated against the provided query parameters class (if using custom query parameters, this class should be extended or the parameters should use your registered provider prefix). This functionality can be disabled with the `validate_query_parameters` config option.
960981
- The results of some queries were not reversible with MongoDB (e.g., `nelements != 2` vs `2 != nelements`); this has now been fixed.
961982

962983
**Implemented enhancements:**

docs/static/default_config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"base_url": null,
1313
"implementation": {
1414
"name": "OPTIMADE Python Tools",
15-
"version": "1.4.2",
15+
"version": "1.5.0",
1616
"source_url": "https://github.com/Materials-Consortia/optimade-python-tools",
1717
"maintainer": {"email": "dev@optimade.org"}
1818
},

openapi/index_openapi.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"openapi": "3.1.0",
33
"info": {
44
"title": "OPTIMADE API - Index meta-database",
5-
"description": "The [Open Databases Integration for Materials Design (OPTIMADE) consortium](https://www.optimade.org/) aims to make materials databases interoperational by developing a common REST API.\nThis is the \"special\" index meta-database.\n\nThis specification is generated using [`optimade-python-tools`](https://github.com/Materials-Consortia/optimade-python-tools/tree/v1.4.2) v1.4.2.",
5+
"description": "The [Open Databases Integration for Materials Design (OPTIMADE) consortium](https://www.optimade.org/) aims to make materials databases interoperational by developing a common REST API.\nThis is the \"special\" index meta-database.\n\nThis specification is generated using [`optimade-python-tools`](https://github.com/Materials-Consortia/optimade-python-tools/tree/v1.5.0) v1.5.0.",
66
"version": "1.2.0"
77
},
88
"paths": {

openapi/openapi.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"openapi": "3.1.0",
33
"info": {
44
"title": "OPTIMADE API",
5-
"description": "The [Open Databases Integration for Materials Design (OPTIMADE) consortium](https://www.optimade.org/) aims to make materials databases interoperational by developing a common REST API.\n\nThis specification is generated using [`optimade-python-tools`](https://github.com/Materials-Consortia/optimade-python-tools/tree/v1.4.2) v1.4.2.",
5+
"description": "The [Open Databases Integration for Materials Design (OPTIMADE) consortium](https://www.optimade.org/) aims to make materials databases interoperational by developing a common REST API.\n\nThis specification is generated using [`optimade-python-tools`](https://github.com/Materials-Consortia/optimade-python-tools/tree/v1.5.0) v1.5.0.",
66
"version": "1.2.0"
77
},
88
"paths": {

optimade/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
__version__ = "1.4.2"
1+
__version__ = "1.5.0"
22
__api_version__ = "1.2.0"

0 commit comments

Comments
 (0)