From b546336ca8504b634e34752e2a66c8bb9ef47b0d Mon Sep 17 00:00:00 2001 From: OPTIMADE Developers Date: Wed, 21 Dec 2022 09:10:43 +0000 Subject: [PATCH] Release v0.20.2 - Changelog --- CHANGELOG.md | 70 +++++++++++++++++++++++++++++++-- docs/static/default_config.json | 2 +- openapi/index_openapi.json | 2 +- openapi/openapi.json | 14 +++---- optimade/__init__.py | 2 +- 5 files changed, 76 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 204fa4c1d..dbbe53bb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,74 @@ ## [Unreleased](https://github.com/Materials-Consortia/optimade-python-tools/tree/HEAD) -[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.20.1...HEAD) +[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.20.2...HEAD) + +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) + +For example: + +```shell +# Only query databases served by the example providers +optimade-get --include-providers exmpl,optimade +# Exclude example providers from global list +optimade-get --exclude-providers exmpl,optimade +``` + +You can also now exclude particular databases by their URLs: +```shell +# Exclude specific example databases +optimade-get --exclude-databases https://example.org/optimade,https://optimade.org/example +``` + +The release also includes some server enhancements and fixes: +- Caching of `/info/` and `/info/` endpoint responses (#1433) +- A bugfix for the entry mapper classes, which were sharing cache resources globally leading to poor utilization (#1435) + +## [v0.20.2](https://github.com/Materials-Consortia/optimade-python-tools/tree/v0.20.2) (2022-12-21) + +[Full Changelog](https://github.com/Materials-Consortia/optimade-python-tools/compare/v0.20.1...v0.20.2) + +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) + +For example: + +```shell +# Only query databases served by the example providers +optimade-get --include-providers exmpl,optimade +# Exclude example providers from global list +optimade-get --exclude-providers exmpl,optimade +``` + +You can also now exclude particular databases by their URLs: +```shell +# Exclude specific example databases +optimade-get --exclude-databases https://example.org/optimade,https://optimade.org/example +``` + +The release also includes some server enhancements and fixes: +- Caching of `/info/` and `/info/` endpoint responses (#1433) +- A bugfix for the entry mapper classes, which were sharing cache resources globally leading to poor utilization (#1435) + +**Implemented enhancements:** + +- Cache `/info` and `/info/` responses [\#1433](https://github.com/Materials-Consortia/optimade-python-tools/pull/1433) ([ml-evs](https://github.com/ml-evs)) **Fixed bugs:** -- Cannot retrieve child database links [\#1410](https://github.com/Materials-Consortia/optimade-python-tools/issues/1410) +- `lru_cache`s on the mapper classes are subtly wrong [\#1434](https://github.com/Materials-Consortia/optimade-python-tools/issues/1434) +- Fix for mapper caches [\#1435](https://github.com/Materials-Consortia/optimade-python-tools/pull/1435) ([ml-evs](https://github.com/ml-evs)) + +**Closed issues:** + +- Migrate away from Heroku for demo server [\#1307](https://github.com/Materials-Consortia/optimade-python-tools/issues/1307) +- Add ability to use provider prefixes/custom index base URLs with client [\#1295](https://github.com/Materials-Consortia/optimade-python-tools/issues/1295) + +**Merged pull requests:** + +- Add pip caches to CI and tidy old flake8 job [\#1442](https://github.com/Materials-Consortia/optimade-python-tools/pull/1442) ([ml-evs](https://github.com/ml-evs)) +- Allow empty strings through chemical formula regexp [\#1428](https://github.com/Materials-Consortia/optimade-python-tools/pull/1428) ([ml-evs](https://github.com/ml-evs)) +- Explicitly use Python 3.8 environment for pre-commit in CI [\#1421](https://github.com/Materials-Consortia/optimade-python-tools/pull/1421) ([ml-evs](https://github.com/ml-evs)) +- Add ability to \(in/ex\)clude providers by ID within client [\#1412](https://github.com/Materials-Consortia/optimade-python-tools/pull/1412) ([ml-evs](https://github.com/ml-evs)) ## [v0.20.1](https://github.com/Materials-Consortia/optimade-python-tools/tree/v0.20.1) (2022-12-03) @@ -14,6 +77,7 @@ **Fixed bugs:** +- Cannot retrieve child database links [\#1410](https://github.com/Materials-Consortia/optimade-python-tools/issues/1410) - Fix typo that breaks `get_child_databases` retriever [\#1411](https://github.com/Materials-Consortia/optimade-python-tools/pull/1411) ([ml-evs](https://github.com/ml-evs)) ## [v0.20.0](https://github.com/Materials-Consortia/optimade-python-tools/tree/v0.20.0) (2022-11-29) @@ -38,10 +102,8 @@ Aside from that, the package now supports Python 3.11, and our example server is **Closed issues:** - Fully isolate server code from other submodules [\#1403](https://github.com/Materials-Consortia/optimade-python-tools/issues/1403) -- Replace https://gitlab.com/pycqa/flake8 with https://github.com/pycqa/flake8 [\#1388](https://github.com/Materials-Consortia/optimade-python-tools/issues/1388) - OpenAPI schema should not enforce recommended constraint on `page_number` [\#1372](https://github.com/Materials-Consortia/optimade-python-tools/issues/1372) - Pydantic models docs are broken on the mkdocs site with new renderer [\#1353](https://github.com/Materials-Consortia/optimade-python-tools/issues/1353) -- Migrate away from Heroku for demo server [\#1307](https://github.com/Materials-Consortia/optimade-python-tools/issues/1307) - FastAPI should not be a core dependency [\#1198](https://github.com/Materials-Consortia/optimade-python-tools/issues/1198) **Merged pull requests:** diff --git a/docs/static/default_config.json b/docs/static/default_config.json index 151f08a58..0817474da 100644 --- a/docs/static/default_config.json +++ b/docs/static/default_config.json @@ -13,7 +13,7 @@ "base_url": null, "implementation": { "name": "OPTIMADE Python Tools", - "version": "0.20.1", + "version": "0.20.2", "source_url": "https://github.com/Materials-Consortia/optimade-python-tools", "maintainer": {"email": "dev@optimade.org"} }, diff --git a/openapi/index_openapi.json b/openapi/index_openapi.json index 38b883057..126198d24 100644 --- a/openapi/index_openapi.json +++ b/openapi/index_openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.2", "info": { "title": "OPTIMADE API - Index meta-database", - "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/v0.20.1) v0.20.1.", + "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/v0.20.2) v0.20.2.", "version": "1.1.0" }, "paths": { diff --git a/openapi/openapi.json b/openapi/openapi.json index 180dce2b9..0901f9509 100644 --- a/openapi/openapi.json +++ b/openapi/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.2", "info": { "title": "OPTIMADE API", - "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/v0.20.1) v0.20.1.", + "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/v0.20.2) v0.20.2.", "version": "1.1.0" }, "paths": { @@ -3360,8 +3360,8 @@ }, "description": "If present MUST be a list of floats expressed in a.m.u.\nElements denoting vacancies MUST have masses equal to 0.", "x-optimade-queryable": "optional", - "x-optimade-unit": "a.m.u.", - "x-optimade-support": "optional" + "x-optimade-support": "optional", + "x-optimade-unit": "a.m.u." }, "original_name": { "title": "Original Name", @@ -3640,8 +3640,8 @@ "description": "The three lattice vectors in Cartesian coordinates, in \u00e5ngstr\u00f6m (\u00c5).\n\n- **Type**: list of list of floats or unknown values.\n\n- **Requirements/Conventions**:\n - **Support**: SHOULD be supported by all implementations, i.e., SHOULD NOT be `null`.\n - **Query**: Support for queries on this property is OPTIONAL.\n If supported, filters MAY support only a subset of comparison operators.\n - MUST be a list of three vectors *a*, *b*, and *c*, where each of the vectors MUST BE a list of the vector's coordinates along the x, y, and z Cartesian coordinates.\n (Therefore, the first index runs over the three lattice vectors and the second index runs over the x, y, z Cartesian coordinates).\n - For databases that do not define an absolute Cartesian system (e.g., only defining the length and angles between vectors), the first lattice vector SHOULD be set along *x* and the second on the *xy*-plane.\n - MUST always contain three vectors of three coordinates each, independently of the elements of property `dimension_types`.\n The vectors SHOULD by convention be chosen so the determinant of the `lattice_vectors` matrix is different from zero.\n The vectors in the non-periodic directions have no significance beyond fulfilling these requirements.\n - The coordinates of the lattice vectors of non-periodic dimensions (i.e., those dimensions for which `dimension_types` is `0`) MAY be given as a list of all `null` values.\n If a lattice vector contains the value `null`, all coordinates of that lattice vector MUST be `null`.\n\n- **Examples**:\n - `[[4.0,0.0,0.0],[0.0,4.0,0.0],[0.0,1.0,4.0]]` represents a cell, where the first vector is `(4, 0, 0)`, i.e., a vector aligned along the `x` axis of length 4 \u00c5; the second vector is `(0, 4, 0)`; and the third vector is `(0, 1, 4)`.", "nullable": true, "x-optimade-queryable": "optional", - "x-optimade-unit": "\u00c5", - "x-optimade-support": "should" + "x-optimade-support": "should", + "x-optimade-unit": "\u00c5" }, "cartesian_site_positions": { "title": "Cartesian Site Positions", @@ -3657,8 +3657,8 @@ "description": "Cartesian positions of each site in the structure.\nA site is usually used to describe positions of atoms; what atoms can be encountered at a given site is conveyed by the `species_at_sites` property, and the species themselves are described in the `species` property.\n\n- **Type**: list of list of floats\n\n- **Requirements/Conventions**:\n - **Support**: SHOULD be supported by all implementations, i.e., SHOULD NOT be `null`.\n - **Query**: Support for queries on this property is OPTIONAL.\n If supported, filters MAY support only a subset of comparison operators.\n - It MUST be a list of length equal to the number of sites in the structure, where every element is a list of the three Cartesian coordinates of a site expressed as float values in the unit angstrom (\u00c5).\n - An entry MAY have multiple sites at the same Cartesian position (for a relevant use of this, see e.g., the property `assemblies`).\n\n- **Examples**:\n - `[[0,0,0],[0,0,2]]` indicates a structure with two sites, one sitting at the origin and one along the (positive) *z*-axis, 2 \u00c5 away from the origin.", "nullable": true, "x-optimade-queryable": "optional", - "x-optimade-unit": "\u00c5", - "x-optimade-support": "should" + "x-optimade-support": "should", + "x-optimade-unit": "\u00c5" }, "nsites": { "title": "Nsites", diff --git a/optimade/__init__.py b/optimade/__init__.py index 03cfc5ad6..c82a81d22 100644 --- a/optimade/__init__.py +++ b/optimade/__init__.py @@ -1,2 +1,2 @@ -__version__ = "0.20.1" +__version__ = "0.20.2" __api_version__ = "1.1.0"