Skip to content

Changelog

Unreleased (2024-05-13)

Full Changelog

Closed issues:

  • Fly has marked us as "high risk" and needs a credit card to unlock #2027

v1.0.4 (2024-03-29)

Full Changelog

Closed issues:

  • Asking a syntax of paging #2020

Merged pull requests:

  • Use simple bools in pymatgen Structure converter #2021 (ml-evs)

v1.0.3 (2024-01-30)

Full Changelog

Fixed bugs:

  • Add requests timeout when getting providers list #1955 (ml-evs)

Merged pull requests:

v0.25.5 (2024-01-30)

Full Changelog

Fixed bugs:

  • Missing timeout for requests.get in get_providers #1954
  • Transformers not recognizing LinksResource #939

Closed issues:

  • ImportError and AttributeError in the Python notebooks on Binder and Google Colab #1939
  • Docs builds with new mkdocstrings handler ignore filters #1934
  • Cannot release backport branches #1930

v0.25.4 (2024-01-11)

Full Changelog

v1.0.2 (2024-01-11)

Full Changelog

Implemented enhancements:

  • Client: counting number of matching entries when data_returned is not available #1924
  • Client: add ability to count the number of matches for a filter using binary search over pagination #1925 (ml-evs)

Merged pull requests:

v1.0.1 (2023-12-04)

Full Changelog

Closed issues:

  • Validator does not error on empty endpoints #1890
  • Provider fields not served when already prefixed in database #1883
  • Other potential bandaids to pull off before v1.0.0 #1847

Merged pull requests:

  • Add optional test for whether entry endpoints have any actual entries #1891 (ml-evs)

v1.0.0 (2023-11-09)

Full Changelog

optimade-python-tools has reached v1.0.0!

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.

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. 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.

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.

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.

Fixed bugs:

  • Deserialization regressions: cannot resolve child databases in client #1843
  • Performance regressions following pydantic update #1835

Closed issues:

  • Fly is using the wrong config file #1869
  • Python 3.12 support #1859
  • Remove nullable from schemas (for OpenAPI 3.1) #1814

Merged pull requests:

v0.25.3 (2023-09-29)

Full Changelog

Merged pull requests:

  • Add mp-api and emmet pins to avoid premature pydantic v2 upgrade #1795 (ml-evs)
  • Debugging links->next issues #1794 (ml-evs)
  • Add option for custom landing pages #1788 (ml-evs)
  • Add config option mongo_count_timeout to skip the global count per request #1757 (ml-evs)

v0.25.2 (2023-09-12)

Full Changelog

Merged pull requests:

v0.25.1 (2023-08-10)

Full Changelog

This release simply tests the migration to pyproject.toml, as well as updating a few dependencies along the way.

Merged pull requests:

v0.25.0 (2023-07-25)

Full Changelog

This release primarily contains changes to the server code including significant optimizations, the ability to fully disable validation of outgoing responses and the ability to configure provider fields that already exist in the database with a prefix, as well as various bug fixes and dependency compatibility updates. Other important changes include the dropping of Python 3.8 support. This version still uses Pydantic v1 and a future version will migrate fully to Pydantic v2.

Fixed bugs:

Closed issues:

  • Flaky elasticsearch tests #1683
  • Suggestion: add functionality for listing the fields in an API to the client #1662

Merged pull requests:

v0.24.1 (2023-06-07)

Full Changelog

Implemented enhancements:

  • Add --list-properties and --search-property functionality to client #1663 (ml-evs)

Merged pull requests:

v0.24.0 (2023-05-19)

Full Changelog

Implemented enhancements:

  • Validate list LENGTH queries with validator #1637 (ml-evs)

Closed issues:

  • Local version app not reachable in docker container. #1589

Merged pull requests:

v0.23.1 (2023-04-13)

Full Changelog

Merged pull requests:

  • Removing Codecov from dependencies because it is no longer on pypi. #1603 (JPBergsma)

v0.23.0 (2023-03-28)

Full Changelog

Fixed bugs:

  • Landing page provider homepage link is broken #1568

Merged pull requests:

  • Element symbols are now used when generating an ase atom. #1571 (JPBergsma)
  • Fix provider homepage on landing page #1569 (ml-evs)
  • Small code corrections #1562 (JPBergsma)
  • Extract next link query param creation into EntriesCollection method. #1561 (markus1978)
  • Preliminary support for page_above in base entry collections #1560 (ml-evs)

v0.22.2 (2023-03-16)

Full Changelog

Closed issues:

  • Validator presents internal errors when run with --skip-optional #1558

Merged pull requests:

v0.22.1 (2023-02-28)

Full Changelog

This patch release changes the synchronous functionality of OptimadeClient to use "vanilla" requests rather than httpx. This enables easier use inside of Jupyter notebooks.

Closed issues:

  • Add docs examples for client callbacks #1527
  • Cannot use the OptimadeClient in async mode with an existing event loop #1195

Merged pull requests:

  • Replace httpx usage in synchronous OptimadeClient with requests #1536 (ml-evs)

v0.22.0 (2023-02-27)

Full Changelog

This release adds a new feature to the reference server for avoiding validating data on the way out of the API (useful in cases where a small amount of leniency is desirable, and will have a minor performance bump). It also fixes a bug in the schema where page_below and page_above were codified as integers rather than strings.

Implemented enhancements:

  • Add server config option to disable validation of outgoing data #1530 (ml-evs)

Fixed bugs:

  • Make page_above/below strings rather than ints #1529 (ml-evs)

v0.21.0 (2023-02-20)

Full Changelog

This minor release contains new client functionality and improved support for ASE.

New features:

  • Ability to specify async callback functions that are called after every client response. This can be used for e.g., iteratively saving to file or a database. For example:
from optimade.client import OptimadeClient

DATABASE = pymongo.MongoClient().database.collection

def save_callback(url, results) -> None:
    for structure in results["data"]:
        DATABASE.insert_one(structure)

client = OptimadeClient(callbacks=[save_callback])
client.get()
  • Ability to create OPTIMADE structure objects from ASE atoms:

    from optimade.adapters import Structure
    from ase import Atoms
    
    co = Atoms('CO', positions=[(0, 0, 0), (0, 0, 1.1)])
    
    structure = Structure.from_ase_atoms(co)
    

  • 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.

Implemented enhancements:

  • Add customisable callback functions to client #1515
  • Add ability to specify callbacks to run after each client request #1519 (ml-evs)
  • Increase client timeouts and tweak response_fields behaviour #1514 (ml-evs)
  • Add ASE ingester and generalize other ingestion utilities #1509 (ml-evs)

Closed issues:

  • Increase default client timeouts #1513
  • Provide basic support for older pymatgen versions in adapters #1490

Merged pull requests:

  • Replace several linters and fixers (flake8, isort etc.) with ruff #1526 (ml-evs)
  • Add --silent option to suppress client output until results #1518 (ml-evs)
  • Update tests and client to properly test async mode #1517 (ml-evs)
  • Refresh docs style and associated tweaks #1516 (ml-evs)

v0.20.3 (2023-01-09)

Full Changelog

This release primarily adds compatibility for the newest FastAPI releases (>=0.87) by updating our test client to work with both httpx and requests.

Merged pull requests:

  • Add compatibility for httpx-based TestClient for latest FastAPI version #1460 (ml-evs)

v0.20.2 (2022-12-21)

Full Changelog

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:

# 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:

# 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/<entry> 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/<entry> responses #1433 (ml-evs)

Fixed bugs:

  • lru_caches on the mapper classes are subtly wrong #1434
  • Fix for mapper caches #1435 (ml-evs)

Closed issues:

  • Migrate away from Heroku for demo server #1307
  • Add ability to use provider prefixes/custom index base URLs with client #1295

Merged pull requests:

  • Add pip caches to CI and tidy old flake8 job #1442 (ml-evs)
  • Allow empty strings through chemical formula regexp #1428 (ml-evs)
  • Explicitly use Python 3.8 environment for pre-commit in CI #1421 (ml-evs)
  • Add ability to (in/ex)clude providers by ID within client #1412 (ml-evs)

v0.20.1 (2022-12-03)

Full Changelog

Fixed bugs:

  • Cannot retrieve child database links #1410
  • Fix typo that breaks get_child_databases retriever #1411 (ml-evs)

v0.20.0 (2022-11-29)

Full Changelog

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.

Aside from that, the package now supports Python 3.11, and our example server is now deployed at Fly.io rather than Heroku.

Implemented enhancements:

  • Add support for Python 3.11 #1361
  • Improve test diagnostics and fix deprecated Elasticsearch calls #1373 (ml-evs)
  • Support Python 3.11 #1362 (ml-evs)

Fixed bugs:

  • Elasticsearch pytest oneliner in the docs is no longer working #1377
  • Remote swagger validator has changed output format #1370

Closed issues:

  • Fully isolate server code from other submodules #1403
  • OpenAPI schema should not enforce recommended constraint on page_number #1372
  • Pydantic models docs are broken on the mkdocs site with new renderer #1353
  • FastAPI should not be a core dependency #1198

Merged pull requests:

  • Move exceptions and warnings out of server code and separate deps #1405 (ml-evs)
  • Complete migration from Heroku to Fly #1400 (ml-evs)
  • Add GH actions for deploying example server to Fly #1396 (ml-evs)
  • Support new remote swagger.io validator format #1371 (ml-evs)
  • Do not enforce minimum value of page_number at model level #1369 (ml-evs)
  • Enable mypy and isort in pre-commit & CI #1346 (ml-evs)
  • Remove randomness from structure utils tests #1338 (ml-evs)
  • Demote FastAPI to a server dep only #1199 (ml-evs)

v0.19.4 (2022-09-19)

Full Changelog

This is a hotfix release for #1335, a bug regarding chunked responses triggered when using the latest FastAPI version.

Fixed bugs:

  • UnboundLocalError - chunk_size is not always set in middleware method #1335
  • Ensure chunk_size is properly set when chunking responses #1336 (ml-evs)

v0.19.3 (2022-09-06)

Full Changelog

Implemented enhancements:

  • Set correct meta->schema value automatically #1323 (ml-evs)

Merged pull requests:

  • Pin requirements in CD release workflows #1324 (ml-evs)

v0.19.2 (2022-09-05)

Full Changelog

Fixed bugs:

  • Wrong fractional particle positions in test #1232
  • Bugfix validator so next links are followed the correct number of times #1318 (JPBergsma)
  • Remove incorrect default value for page_number query parameter #1303 (ml-evs)

Closed issues:

  • If nperiodic_dimensions=2 the structure adapter can only properly convert it to ase #1212

Merged pull requests:

  • Use proper type hint for griffe 0.22 compatibility #1313 (JPBergsma)
  • Adapters now also return lattice information for structures that are periodic in 1 or 2 dimensions. #1233 (JPBergsma)

v0.19.1 (2022-08-12)

Full Changelog

Implemented enhancements:

  • Add from_pymatgen structure adapter method and concept of ingesters #1296 (ml-evs)
  • Add lru_cache to many mapper properties #1245 (ml-evs)

Merged pull requests:

  • Use animated SVG logo for optimade-python-tools landing page #1297 (ml-evs)

v0.19.0 (2022-07-18)

Full Changelog

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

Implemented enhancements:

Fixed bugs:

  • Landing page not loading #1256
  • Config values are not cached by @classproperty #1219
  • Prevent internal validator errors when entries are missing ID/type #1273 (ml-evs)
  • Improve error handling for client when updating provider list #1222 (ml-evs)

Closed issues:

  • Internal validator failures #1272
  • Use versioned Dockerfiles for CI services to allow dependabot to update them #1241
  • Wrong links to available endpoints #1214
  • The validator should check for meta->schema #1209
  • Add configurable meta->schemas field to reference server #1208

Merged pull requests:

  • Bump providers from fb05359 to a92e5bc #1267 (dependabot[bot])
  • Add schema parameter when calling meta_values in landing.py #1257 (JPBergsma)
  • Update lark dependency to new name #1231 (ml-evs)
  • Use Python 3.10 instead of 3.7 in installation instructions #1229 (JPBergsma)
  • Optimisation: do not re-access mapper properties inside the request loop #1223 (ml-evs)
  • Add meta->schema validation warning #1211 (ml-evs)
  • Add configurable schema_url and index_schema_url options #1210 (ml-evs)
  • Drop support for Python 3.7 #1179 (ml-evs)

v0.18.0 (2022-05-29)

Full Changelog

This is a feature release that includes the new optimade.client.OptimadeClient class, a client capable asynchronously querying multiple OPTIMADE APIs simultaneously. 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. Other changes can be found below. This release includes improvements to the validator to catch more cases where OPTIMADE APIs are only partially implemented. 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).

Implemented enhancements:

  • The validator should use a custom User-Agent header #1187
  • Suggestion to include an OPTIMADE python API client #932
  • Implementation of an OPTIMADE client #1154 (ml-evs)

Fixed bugs:

  • OptimadeClient crashes if an index meta-database is down #1196
  • Catch connection errors when populating client database list #1197 (ml-evs)

Merged pull requests:

  • Add a clearer error message on when trying to use client with missing deps #1200 (ml-evs)
  • Use a custom User-Agent with validator #1189 (ml-evs)
  • Syntactic tweaks to models and schemas for compatibility with fastapi>0.66 #1131 (ml-evs)

v0.17.2 (2022-05-21)

Full Changelog

This release includes improvements to the validator to catch more cases where OPTIMADE APIs are only partially implemented. 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).

Fixed bugs:

  • Server validation incorrectly passes with various unimplemented features #1180

Merged pull requests:

  • Harden validator for partially implemented APIs #1181 (ml-evs)

v0.17.1 (2022-05-18)

Full Changelog

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 in the online documentation.

The image can be easily pulled from GHCR with:

docker pull ghcr.io/materials-consortia/optimade

Implemented enhancements:

  • Release a container (Docker) image for developers #1111

Closed issues:

  • Issues with GH Changelog updater (secondary usage API requests) #976

Merged pull requests:

v0.17.0 (2022-05-10)

Full Changelog

This minor release contains fixes recommended for those deploying the optimade-python-tools reference server:

  • The meta->data_returned field was previously incorrect when using the MongoDB backend.
  • 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.
  • The results of some queries were not reversible with MongoDB (e.g., nelements != 2 vs 2 != nelements); this has now been fixed.

Implemented enhancements:

  • Add server check for typos in query parameters #1120
  • Improve handling of MongoDB ObjectIDs as OPTIMADE immutable_id #1142 (ml-evs)
  • Add support for number-based pagination #1139 (JPBergsma)
  • Added option to validate incoming URL query parameters #1122 (JPBergsma)

Fixed bugs:

  • meta->data_returned is incorrect for paginated results with MongoDB #1140
  • Queries with the form: 'value != prop' return entries where 'prop == None' #1133
  • Test on Queries on single structures fail with the check_response function. #1125
  • Fix incorrect meta->data_returned for paginated results with MongoDB #1141 (ml-evs)
  • Fix cases where comparison first and property first queries did not match #1134 (JPBergsma)

Closed issues:

  • Raise error/warning when using unsupported pagination method #1132
  • Add missing documentation for serving custom query params and fields #1123

Merged pull requests:

  • Use GitHub Actions for Heroku deployment #1165 (ml-evs)
  • Add docs for custom provider fields and query parameters #1164 (ml-evs)
  • Add deprecation warning for Python 3.7 #1157 (ml-evs)
  • Added way to specify unsupported query parameters and provide a warning #1136 (ml-evs)
  • Adjusted check_response so it can also handle single entries. #1130 (JPBergsma)
  • Corrected link in Install.MD #1124 (JPBergsma)

v0.16.12 (2022-03-23)

Full Changelog

Implemented enhancements:

  • Make structure adapters infer species from species_at_sites when missing #1103 (ml-evs)
  • Allow specification of provider field descriptions/units etc. in config file #1096 (ml-evs)
  • Moving and adding some utilities for client code #589 (ml-evs)

Closed issues:

  • Allow provider field descriptions to be provided in the config #1095

v0.16.11 (2022-03-03)

Full Changelog

Merged pull requests:

  • Remove Jinja dependency for landing page generation #1082 (ml-evs)

v0.16.10 (2022-02-05)

Full Changelog

Fixed bugs:

  • Distribution tests failing #1061

Security fixes:

  • Bump elasticsearch version to avoid CVE-2021-44832 #1066 (JPBergsma)

Merged pull requests:

  • Use build package to build distributions #1062 (CasperWA)
  • Cancel CI PR jobs that are in progress with new changes, add skip_changelog label to overrides #1057 (ml-evs)
  • Prevent validator errors/retries on read timeouts #1056 (ml-evs)

v0.16.9 (2022-01-26)

Full Changelog

Implemented enhancements:

  • Lower validator default read timeout and allow it to be customised #1051 (ml-evs)

Security fixes:

  • Bump elasticsearch to avoid log4j vulnerability #1040

Closed issues:

  • Docs reference to LarkParser failing. #1037

Merged pull requests:

  • Update dependabot config and changelog generation #1048 (ml-evs)
  • Bump elasticsearch image version to avoid any log4j issues #1041 (ml-evs)
  • Make NumPy requirement py version-specific #1036 (CasperWA)

v0.16.8 (2021-12-22)

Full Changelog

Implemented enhancements:

  • Support for Python 3.10 #956

Fixed bugs:

  • Overzealous validation of substring comparisons for chemical formula fields #1024

Merged pull requests:

  • Add configurable field-specific validator overrides to set filter operators as optional #1025 (ml-evs)
  • Add Python 3.10 support #957 (ml-evs)

v0.16.7 (2021-11-21)

Full Changelog

Implemented enhancements:

  • Stricter validation of chemical formulas in OpenAPI schema #708

Fixed bugs:

  • chemical_formula_anonymous validator accepts incorrect proportion order if started with 1 #1002

Closed issues:

  • Versioned docs do not redirect all links correctly #977
  • Missing support for timestamps/datetime in grammar #102

Merged pull requests:

  • Fixed bug in check_anonymous_formula which caused chemical_formula_anonymous = AB2 to pass validation. #1001 (JPBergsma)
  • Use diff for checking PR body #1000 (CasperWA)
  • Correct PR body comparison #996 (CasperWA)
  • Update dependency auto-PR message #989 (ml-evs)
  • Stricter formula syntax #986 (merkys)
  • Implement workflows for dependency updates #979 (CasperWA)
  • Tidy up old grammars, add a development grammar for v1.2 and update filterparser tests #879 (ml-evs)

v0.16.6 (2021-10-19)

Full Changelog

Merged pull requests:

  • Put docs release deployment in separate job #978 (CasperWA)

v0.16.5 (2021-10-18)

Full Changelog

Closed issues:

  • 'elements_ratios' model validator uses double-precision machine epsilon - could be relaxed #947
  • Versioning in Docs #724

Merged pull requests:

v0.16.4 (2021-09-20)

Full Changelog

Closed issues:

  • Code check fails because there is no valid version of jsmin #938
  • Be properly compliant with the new pip resolver #625

Merged pull requests:

v0.16.3 (2021-09-02)

Full Changelog

Implemented enhancements:

  • Add validation that anonymous/reduced chemical formulae are in fact reduced #913

Fixed bugs:

  • No error/warning when specifying a config file that does not exist #930
  • Docker tests failing in CI: http://gh_actions_host no longer exists? #906
  • Fix config file warnings when file is missing #931 (ml-evs)

Closed issues:

  • Docs don't introduce the idea of "models" #910
  • Docs don't mention anything about where to go for support #909
  • run.sh does not appear to be available from the pip installation #904
  • Missing guide for how to set up an implementation from existing database #176

Merged pull requests:

  • Add tutorial-style guide on setting up an API #915 (ml-evs)
  • Add validator to check whether anonymous and reduced formulae are reduced #914 (ml-evs)
  • Clarify the "all models" documentation page #912 (ml-evs)
  • Add more specific 'Getting Help' info to Contributing and README #911 (ml-evs)
  • Bump Materials-Consortia/optimade-validator-action from 2.5.0 to 2.6.0 #907 (dependabot[bot])
  • Clarify installation methods by use-case #905 (ml-evs)
  • Relax response top-level root validator #903 (CasperWA)
  • Add integrated app docs, tweak other use case docs #883 (ml-evs)

v0.16.2 (2021-08-06)

Full Changelog

Fixed bugs:

  • Provider fallbacks are still not working #896
  • Fix provider fallbacks #897 (ml-evs)

Merged pull requests:

v0.16.1 (2021-07-15)

Full Changelog

Implemented enhancements:

  • Change MIME type to application/vnd.api+json where appropriate #875
  • Minor corrections + use model aliases for handle_response_fields() #876 (CasperWA)

Fixed bugs:

  • Wrong behaviour HAS ONLY query for MongoDB #810
  • Correct the behaviour of HAS ONLY with MongoDB backend #861 (JPBergsma)

Merged pull requests:

  • Change default MIME type to "application/vnd.api+json" #877 (ml-evs)
  • Update elements description to match specification #874 (ml-evs)

v0.16.0 (2021-07-06)

Full Changelog

Closed issues:

  • Incoming model update (new field: issue_tracker) #592

Merged pull requests:

  • Add issue_tracker field to provider model #593 (ml-evs)

v0.15.5 (2021-07-04)

Full Changelog

Fixed bugs:

  • NOT filter operation of mongo query for complex expressions #79

Closed issues:

  • Remove CI psycopg2-binary install when aiida-core>1.6.3 #855
  • Pytest fails at Setup environment for AiiDA #853
  • Add timeout parameter to validator #681
  • Add note in installation instructions about pulling submodule for providers #370

Merged pull requests:

v0.15.4 (2021-06-15)

Full Changelog

Implemented enhancements:

  • Missing documentation for new configuration methods #766

Closed issues:

  • Add docs "use case" for the validator #841
  • Use specific configuration file for Heroku deployment #738
  • Potential submission to JOSS? #203
  • Add more tests #104

Merged pull requests:

v0.15.3 (2021-06-10)

Full Changelog

Merged pull requests:

  • Update model descriptions following spec updates #847 (ml-evs)

v0.15.2 (2021-06-10)

Full Changelog

Implemented enhancements:

  • Missing HTTP response codes in OpenAPI schema #763

Merged pull requests:

v0.15.1 (2021-06-08)

Full Changelog

Closed issues:

  • mongomock $size queries match all non-array fields for {$size: 1}, even nulls #807
  • Allow custom headers to be specified for validation #790

Merged pull requests:

  • Add --headers argument to validator to allow passing e.g. API keys #806 (ml-evs)

v0.15.0 (2021-06-01)

Full Changelog

Fixed bugs:

  • Provider fallbacks do not get used #829
  • ParserError's should not return 500 HTTP status codes #812
  • Fix provider fallback list #830 (ml-evs)
  • Return 400 Bad Request (not 500) on filter parser errors, plus filterparser module facelift #813 (ml-evs)

Closed issues:

  • Move aliasing code to base transformer #743
  • Missing optional fields are not returned as null when requested with response_fields #516

Merged pull requests:

  • Update INSTALL docs #811 (ml-evs)
  • Overhaul of filter transformers, mappers and response fields #797 (ml-evs)

v0.14.1 (2021-05-14)

Full Changelog

Fixed bugs:

  • [SECURITY] Cycle secrets #777

Closed issues:

  • Do not validate extension endpoints #793
  • Verify that missing values are not returned in comparisons #792

Merged pull requests:

v0.14.0 (2021-03-26)

Full Changelog

Implemented enhancements:

  • Rename config variable use_real_mongo to something more general #742
  • Custom configuration extensions & use standard pydantic way of loading config file #739
  • Generalising collections and adding ElasticsearchCollection #660 (ml-evs)

Fixed bugs:

  • Over-aggressive middleware to check versioned base URL #737
  • Floating point comparisons should not be tested with the validator #735
  • Mapper method alias_of extracts alias wrongly #667

Closed issues:

  • Docs builds are not properly tested for each PR #747

Merged pull requests:

  • Fix CheckWronglyVersionedBaseUrls middleware (for landing pages) #752 (CasperWA)
  • Deprecate Python 3.6 support, v0.14 last supported version #751 (CasperWA)
  • Run full API docs invoke task for every PR #748 (ml-evs)
  • Change aliasing method names in mapper and deprecate the old #746 (ml-evs)
  • Bump providers from e2074e8 to 7a54843 #741 (dependabot[bot])
  • Config updates #740 (CasperWA)
  • Disable all floating-point comparisons during validation #736 (ml-evs)
  • Report user errors in filter as HTTP 400 Bad Request and not 501 Not Implemented #658 (markus1978)

v0.13.3 (2021-03-05)

Full Changelog

Fixed bugs:

  • Python 3.9 support invalid #728

Merged pull requests:

v0.13.2 (2021-03-01)

Full Changelog

Implemented enhancements:

  • Improve validation of providers #723

v0.13.1 (2021-02-23)

Full Changelog

Fixed bugs:

  • Supported OPTIMADE __api_version__ is incorrect in latest release #712

Merged pull requests:

v0.13.0 (2021-02-20)

Full Changelog

Closed issues:

  • Update species.mass model #630

Merged pull requests:

  • Update species->mass field following specification change #631 (ml-evs)

v0.12.9 (2021-02-10)

Full Changelog

Implemented enhancements:

  • Improve support for timestamp queries in MongoTransformer #590 (ml-evs)

Fixed bugs:

  • Use Enums for pydantic model defaults instead of strings #683

Closed issues:

  • When using --as-type in validator, one does not get a summary (--json doesn't work) #699
  • Extension/import issue with mongo collection #682

Merged pull requests:

v0.12.8 (2021-01-18)

Full Changelog

Implemented enhancements:

  • Validate mandatory query field structure_features #678

Fixed bugs:

  • Validator should not rely on meta->data_available #677
  • Validator should not rely on SHOULD "meta" field "data_returned" #675
  • Validator: remove reliance on meta fields and check mandatory queries #676 (ml-evs)

Merged pull requests:

v0.12.7 (2021-01-15)

Full Changelog

Implemented enhancements:

  • Make content-type response checks on '/versions` endpoint optional #670 (ml-evs)

Fixed bugs:

  • Publish workflow fails when no changes to api docs between versions #673
  • /versions header Content-Type value should be granularized according to RFC requirements in validator #669
  • Misleading error message from validator on failure from '/versions' #668
  • Fix publishing workflow #674 (ml-evs)

Merged pull requests:

v0.12.6 (2021-01-08)

Full Changelog

Implemented enhancements:

  • Create base transformer #286

Fixed bugs:

  • Our models and validator are too strict #399
  • Validator changes: always check unversioned '/versions' and handle rich HTML pages #665 (ml-evs)

Closed issues:

  • Add more prominent link to rendered docs #628
  • Review the required properties of StructureResourceAttributes in openapi.json #198

Merged pull requests:

  • Added GitHub CODEOWNERS #664 (ml-evs)
  • Robustness improvements to validator #659 (ml-evs)
  • Update dependencies #655 (CasperWA)
  • Bugfixes for elasticsearch filtertransformer comparision operators. #648 (markus1978)
  • Added "root_path" config parameter for FastAPI apps #634 (markus1978)
  • Bump providers from 2673be6 to fe5048b #633 (dependabot[bot])
  • Updated README and moved some files to top-level #629 (ml-evs)
  • insert reading of default optimade_config.json in example run script run.sh #627 (rartino)
  • Create template filtertransformer BaseTransformer #287 (ml-evs)

v0.12.5 (2020-12-05)

Full Changelog

Closed issues:

  • PyPI publishing build is broken by latest pip #624
  • Empty endpoints raise errors on validation #622
  • Frequency of updating online docs #452

Merged pull requests:

v0.12.4 (2020-11-16)

Full Changelog

Merged pull requests:

  • Minor fixes for versions endpoint validation #591 (ml-evs)
  • Add --minimal/--page_limit validator options and remove old code #571 (ml-evs)

v0.12.3 (2020-11-04)

Full Changelog

Fixed bugs:

  • GITHUB_TOKEN not useful for changelog action #587
  • Hill notation wrong (still) #585
  • Hill notation validation turning around C and H #581

Closed issues:

  • Make structure "deformity" tests more robust #583
  • Incomplete output of optimade-validator #568

Merged pull requests:

  • Use special release PAT for CHANGELOG generation action #588 (CasperWA)
  • Check for carbon in elements for Hill #586 (CasperWA)
  • Added better expected error messages to deformity tests #584 (ml-evs)
  • Fix Hill ordering validation #582 (CasperWA)
  • Moved CONFIG import so it does not get triggered when just importing mapper #569 (ml-evs)

v0.12.2 (2020-10-31)

Full Changelog

Implemented enhancements:

  • Add convenience method for adding all required middleware #536
  • Add model validators and regexp for chemical formulae fields #547 (ml-evs)
  • Validator improvements #515 (ml-evs)

Fixed bugs:

  • 'Chosen entry had no value for ...' when property is not requested #514
  • Fix Species validators and error messages #561 (ml-evs)

Closed issues:

  • Chemical symbols D and T #570
  • Spurious validation errors in Structure->Species #559
  • Chemical formulae are not properly validated on model creation #546

Merged pull requests:

v0.12.1 (2020-09-24)

Full Changelog

Implemented enhancements:

  • Move entry schemas to separate submodule #511 (ml-evs)

Closed issues:

  • Validator should allow implementations to return "501 Not Implemented" for unsupported filters #518
  • Landing page wrong URL #371

Merged pull requests:

v0.12.0 (2020-09-11)

Full Changelog

Fixed bugs:

  • Missing field descriptions in schema for Species->name and Person->name #492
  • "type" field not marked as required for derived entry resource models #479
  • OpenAPI validations fails due to incorrect type of "dimension_types" #478
  • Have fallbacks for retrieving providers list #450
  • Commit only when necessary #495 (CasperWA)
  • Fix field optonality inconsistency in schema #482 (ml-evs)

Closed issues:

  • Validator message for wrong version #493
  • Validator should validate versions endpoint #491
  • List of providers not included in /links endpoint for index meta-database #454
  • Validate bad version URLs responding with 553 Version Not Supported #427
  • Nonexistent property 'list' in validator tests #423
  • Test data_returned #402
  • AiiDA tests only run on Python 3.8 in CI #401
  • Links under top-level 'links' may be objects #394
  • Suggestion: use absolute imports in app code to allow re-use #298
  • error when browsing OpenAPI docs #192

Merged pull requests:

  • Don't report untracked and ignored files #496 (CasperWA)
  • Improved error message for bad version returning 553 #494 (ml-evs)
  • Allow Link objects for pagination #484 (ml-evs)
  • Absolute imports #483 (CasperWA)
  • Validate OpenAPI specification in CI #481 (ml-evs)
  • Update types to align with OpenAPI #480 (CasperWA)
  • Unpin CI Python version for AiiDA tests #472 (ml-evs)
  • Provider list fallback and list of providers in both servers' /links-endpoints #455 (CasperWA)
  • SHOULD/MUST/OPTIONAL fields in models #453 (ml-evs)
  • Validator overhaul #417 (ml-evs)

v0.11.0 (2020-08-05)

Full Changelog

Implemented enhancements:

  • Use logging more thoroughly throughout the code base #242
  • Implement warnings #105

Fixed bugs:

  • Heroku is failing - raising OSError when making LOGS_DIR #448
  • /versions endpoint content-type parameter "header=present" is provided in the wrong place #418
  • Publish workflow cannot push to protected branch #341
  • Fix circular dep and extra permission error in logs #436 (ml-evs)

Closed issues:

  • log_dir option in config is unused #435
  • Allow all types of JSON API relationships #429
  • OPTIMADE version badge was not bumped on 1.0 release #415
  • Add api_hint query parameter #392
  • Return 553 for wrongly versioned base URLs #391
  • Private/dunder methods incorrectly documented in mkdocs #365
  • Configuration documentation #310
  • Improve handling of sorting in MongoDB backend #276

Merged pull requests:

v0.10.0 (2020-07-17)

Full Changelog

Implemented enhancements:

  • Move tests to pytest system from unittest #270

Fixed bugs:

Closed issues:

  • Validation of 'structures' type crashes #397
  • Validator verbosity levels need more detailed description #396
  • Validator treats top-level 'included' array as mandatory #393
  • (Un)versioned URLs #379

Merged pull requests:

  • Temporarily run AiiDA tests on Python 3.8 only #400 (ml-evs)
  • Make the example for --as_type more similar to a real use case #398 (merkys)
  • Fix some validator-specific crashes #395 (ml-evs)
  • Use pytest instead of unittest #390 (CasperWA)

v0.9.8 (2020-07-03)

Full Changelog

Implemented enhancements:

  • Set implementation version in config by default #385 (CasperWA)

Merged pull requests:

  • Update models, endpoints and responses to 1.0.0 #380 (ml-evs)

v0.9.7 (2020-06-28)

Full Changelog

v0.9.6 (2020-06-28)

Full Changelog

Fixed bugs:

v0.9.5 (2020-06-26)

Full Changelog

v0.9.4 (2020-06-26)

Full Changelog

v0.9.3 (2020-06-26)

Full Changelog

Merged pull requests:

v0.9.2 (2020-06-25)

Full Changelog

Fixed bugs:

  • Heroku cannot handle submodules when deploying via GitHub #373

Closed issues:

  • Updates to models (new OPTIONAL type field under properties) #345
  • Add aggregatation fields to links model #344
  • Updates to models (nperiodic_dimensions) #343
  • Updates to models (changing unknown atoms) #342
  • Improvements/fixes for openapi.json #332
  • Update to v1.0.0-rc.1 #329
  • RST not rendering with mkdocs #307

Merged pull requests:

  • Retrieve providers list if no submodule is found #374 (CasperWA)
  • Update default implementation information #372 (shyamd)
  • Bump spec version to 1.0.0-rc.2 #367 (ml-evs)
  • Merge all Dependabot updates #353 (shyamd)
  • Update model descriptions and openapi.json for 1.0.0-rc2 #351 (ml-evs)
  • Update models according to changes during CECAM 2020 meeting #350 (ml-evs)
  • Decouple changes in providers repo #312 (shyamd)

v0.9.1 (2020-06-17)

Full Changelog

v0.9.0 (2020-06-17)

Full Changelog

Implemented enhancements:

  • Breaking up the python tools into seperable packages #255
  • Run both servers as standard #238

Fixed bugs:

  • Non-running CI job #331
  • Special species "X" not tested for non-disordered structures #304
  • Standardize timezone of datetime responses #288
  • Queries on aliased/provider fields are broken for nested properties #282
  • General exceptions not being put into response #281
  • Issue with CIF export #271
  • Type-cast inputs for general Error #280 (CasperWA)

Closed issues:

  • Update links resources #299
  • Need to set up mkdocs #289
  • Need to add custom schema entries for unit/sortable (and eventually type) #278
  • /info/\<entry-endpoint> missing sortable key under each property #273
  • Make CI linting more useful #269
  • [PR SPECIFIC] Reminder: Validator test pinned to specific commit #268
  • Validator does not check that pagination links work #265
  • available_api_versions is not correctly validated #261
  • Implementation model should allow for any URL type in source_url #260
  • Extra structure endpoints in the api specification @ odbx #259
  • Wrong response structure at info endpoint @ cod #258
  • Missing base url for api's docs @ materialscloud #257
  • Handling of KNOWN in mongo backend #254
  • None values in lattice_vectors #170
  • Make sure that the PyPI distribution works #143
  • Move run.sh to a python file to be environment-agnostic #81

Merged pull requests:

  • Another fix for release pipeline #355 (shyamd)
  • Fix publish workflow #354 (CasperWA)
  • Fix publish workflow #352 (CasperWA)
  • Update publish workflow #340 (shyamd)
  • Remove test publish action #338 (shyamd)
  • Fix 'publish_TestPyPI' CI job #337 (CasperWA)
  • Represent the datetime objects as UTC in RFC3339 format #333 (fekad)
  • dependamat: Bump \<package_name> v x.y.z to vx.y.(z+1) #330 (ml-evs)
  • Update links resources #306 (CasperWA)
  • Add special species for adapters testing #305 (CasperWA)
  • Clean Up Build Environment #301 (shyamd)
  • Enable CI failures for linting #300 (ml-evs)
  • Adding jarvis-tools structures #297 (knc6)
  • Update Docs #295 (shyamd)
  • Setup MKDocs for Documentation #294 (shyamd)
  • Fix filters on nested provider/aliased fields #285 (ml-evs)
  • Use heroku-shields instead of heroku-badge #284 (CasperWA)
  • Add OPTIMADE logo to badge by extending JSON #283 (CasperWA)
  • Add null check to mongo filtertransformer for KNOWN/UNKNOWN filters #279 (ml-evs)
  • Add sortable=True to all properties #274 (CasperWA)
  • Make _atom_site_label unique in CIF generation #272 (CasperWA)
  • Not so quick fix to allow "/" at end of validator URL, plus fixes and tests for --as_type #267 (ml-evs)
  • Check pagination links->next with validator #266 (ml-evs)
  • Relax HTTP URL constraints on meta->implementation->source_url field. #262 (ml-evs)
  • Validate lattice_vectors for all null or all float #171 (CasperWA)

v0.8.1 (2020-04-25)

Full Changelog

Fixed bugs:

  • Pip install missing some files #252

Merged pull requests:

v0.8.0 (2020-04-22)

Full Changelog

Implemented enhancements:

  • Switch to pydantic's BaseSettings for the config file? #152
  • Remove query constraints for /links-endpoint #244 (CasperWA)
  • Add adapters - Base design + 'structures' (+ 'references'... sort of) #241 (CasperWA)
  • Add dependabot and last commit date badges #237 (CasperWA)
  • Add mongo length operator functionality with length aliases #222 (ml-evs)

Fixed bugs:

  • Use Path.home() instead of ~ in default config path values #245

Closed issues:

  • Have Dependabot take care of various requirements.txt files as well #249
  • Remove commented out GH Action job deps_clean-install #247
  • Local testing fails without default config #239
  • Release only when pushing to master #229
  • Do we need server.cfg? #134
  • Implement LENGTH in query #86

Merged pull requests:

v0.7.1 (2020-03-16)

Full Changelog

Closed issues:

  • Fix all capitalisation of OPTIMADE #232
  • Remove validator action from README #230

Merged pull requests:

  • Fix github actions for non-release tags #235 (shyamd)
  • Update OPTIMADE capitalisation #233 (ml-evs)
  • Update mentions of action in readme #231 (ml-evs)

v0.7.0 (2020-03-13)

Full Changelog

Implemented enhancements:

  • Validate all non-optional :filter: examples from the spec #213 (ml-evs)

Fixed bugs:

  • Some mandatory filter examples from spec do not work #217
  • Add txt-files in optimade.validator.data to MANIFEST #225 (CasperWA)
  • Handle arbitrary nested NOT/AND/OR in queries #221 (ml-evs)

Closed issues:

  • Validator only validates what we have working, not what is required by the spec #182

Merged pull requests:

v0.6.0 (2020-03-06)

Full Changelog

Implemented enhancements:

  • Possibly add CORS middleware #159
  • Add debug flag to server #130
  • Make validator GitHub Action #191 (CasperWA)

Fixed bugs:

  • meta/query/representation value not cutting off version properly #199
  • URL for providers.json from Materials-Consortia has changed #186
  • Relationships don't work when "/" present in id #181
  • Redirect middleware not hitting single-entry endpoints #174

Closed issues:

  • /info/ reports wrong url under available_api_versions #215
  • Query parameters not handled correctly #208
  • Test for AvailableApiVersion is correct for the wrong reasons #204
  • Drop '/optimade' from paths in openapi.json #197
  • heroku is failing #185
  • List properties and HAS _ operators missing #98
  • Checklist for OPTiMaDe v0.10.1 #29

Merged pull requests:

v0.5.0 (2020-02-13)

Full Changelog

Implemented enhancements:

  • Implement a landing page for requests to the base URL #169

Fixed bugs:

  • 'minor' and 'patch' versioned base URL prefixes are wrong #177

Closed issues:

  • Handle include standard JSON API query parameter #94

Merged pull requests:

v0.4.0 (2020-02-06)

Full Changelog

Implemented enhancements:

Fixed bugs:

  • Server app intermingles #161
  • response_fields not working #154

Closed issues:

  • Change page_page to page_number #165
  • Add schema-relevant parameters to query parameters #164
  • Alias optimade/structures/ to optimade/structure #128
  • Minor changes to specification v0.10.1-develop #115
  • Update models with new levels of REQUIRED response properties #114
  • Constraining list/array types in the schema #55

Merged pull requests:

v0.3.4 (2020-02-04)

Full Changelog

Implemented enhancements:

  • Include develop or not? Default branch? - Create INSTALL.md #136

Fixed bugs:

  • Excepting non-existent exception #129

Closed issues:

  • disable serving API under /v0.10 and /v0.10.0 by default? #122
  • PyPI release checklist #67

Merged pull requests:

v0.3.3 (2020-01-24)

Full Changelog

Fixed bugs:

  • Lark files not being distributed #141

Merged pull requests:

  • Updated lark-parser to 0.8.1 #149 (ml-evs)
  • Split eager and standard tests to avoid unnecessary badge of shame #148 (ml-evs)
  • Bump to v0.3.3 #147 (CasperWA)
  • Fix root_validator issues with optional fields and made meta optional #145 (ml-evs)
  • Handle JSONDecodeErrors in validator #144 (ml-evs)

v0.3.2 (2020-01-20)

Full Changelog

Implemented enhancements:

Fixed bugs:

Merged pull requests:

v0.3.1 (2020-01-17)

Full Changelog

Merged pull requests:

v0.3.0 (2020-01-14)

Full Changelog

Implemented enhancements:

  • Implement optional implementation in top-level meta response #117
  • Create "special" index meta-database server #100
  • Implement relationships in server #71
  • Add missing /references endpoint to server #69
  • Automatically publish version tags to PyPI via GH Actions #107 (CasperWA)
  • Using routers #99 (CasperWA)
  • Add relationships functionality #91 (ml-evs)
  • Added external API validator based on our pydantic models #74 (ml-evs)

Fixed bugs:

  • The invoke task update-openapijson is incomplete #123
  • Django vulnerability #108

Closed issues:

  • info endpoint duplicated? #120
  • Commented-out validator #111
  • FastAPI v0.44.0 supports pydantic > 1.0.0 #101
  • Server is missing /links endpoint #89
  • Make sure all validators are tested #87
  • The sortable field must be added to models #84
  • Package structure #72
  • Possibly make /info/{endpoint} dynamic #70
  • setuptools package with server as "extra" #62
  • use examples from specs as resources #57
  • httptools dependency has build issues on GCC/Linux #54
  • Lark grammar file for v0.9.8 #50
  • type is missing in response #43
  • Enforce use of autoformatter #33
  • switch license to MIT #28
  • write a lark JSONTransformer / JSONdecoder #26
  • server.jsonapi has no additionalProperties=false #23
  • server.jsonapi has no patternProperties #22
  • Developer-friendly pre-commit openapi.json visual diff #21
  • add JSON schema API #12
  • generate static documentation on github from openapi.json #9
  • test how to generate a client from the openapi.json #8
  • come up with suggested toolchain for validating existing optimade API against openapi.json #7
  • add travis test that checks openapi.json is valid OpenAPI spec #6
  • add 2 examples of how to include documentation in python classes #5
  • add one-line command to update openapi.json #4

Merged pull requests:

v0.1.2 (2018-06-14)

Full Changelog

v0.1.1 (2018-06-13)

Full Changelog

v0.1.0 (2018-06-05)

Full Changelog

* This Changelog was automatically generated by github_changelog_generator