All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.14.5 - 2025-02-14
- Random
410
errors caused (presumably) by using aBackgroundTask
in the/compute
endpoint to set thetask_id
in celery's backend. I suspect that when users query/compute/output/{task_id}
right after submitting a big batch it's possible theBackgroundTask
hasn't set thetask_id
in celery's backend yet and so the spurious410
is returned due to a race condition.
0.14.4 - 2025-02-08
- Removed type aliasing of
ProgramOutput
generic types that was required for earlier versions ofpydantic
but was now causingSinglePointResults
objects (orProgramInput
objects) to get consumed asFiles
(orFileInput
) objects since that type was listed first and could consume theSinglePointResults
data.
0.14.3 - 2025-02-08
- Removed
black
andisort
in favor ofruff
. - Upgraded to Python 3.13 for docker container.
- Moved code quality checks from CircleCI to GitHub actions.
- Fixed a few
httpx
calls to use the new API (content=
vsdata=
for text/bytes data).
0.14.2 - 2024-09-12
- Upgraded BigChem 0.9.0 -> 0.10.0.
- Upgraded
poetry.lock
package dependencies.
crest
toSupportedPrograms
.
0.14.1 - 2024-08-07
- Updated to qcio ^0.11.7 which removes
NoResult
and moves.files
fromProgramOutput
toProgramOutput.results
.
0.14.0 - 2024-07-12
- Updated qcio (0.10.1 -> 0.10.2).
Structure.ids
->Structure.identifiers
- Updated qcop (0.7.1 -> 0.7.3)
- Updated bigchem (0.8.0 -> 0.8.1)
0.13.0 - 2024-07-10
- 🚨 Updated to
BigChem 0.8.0
which uses newqcio
Structure
in place ofMolecule
.
0.12.0 - 2024-06-14
- Updated to
BigChem 0.7.2
which uses latest Generics structures fromqcio
. Not a breaking change since the json representation of these objects is all the same as before; however, will bump major version since this feels like a shift to core data structures. - 🚨 Renamed top-level argument to
/compute
collect_wavefunction
tocollect_wfn
to matchqcop
nomenclature. - Updated a number of dependencies and subpackages to latest versions. (
poetry lock
) - Modernized typing syntax by removing
Dict
,List
,Union
declaration in favor ofdict
,list
,|
. - Renamed
TaskState
->TaskStatus
- Renamed
Output
toProgramOutputWrapper
.- 🚨 Renamed attributes from
state
->status
andresult
->program_output
.
- 🚨 Renamed attributes from
0.11.6 - 2024-03-16
- Updated
bigchem
to0.6.5
which incorporatesqcop 0.5.0
which raises exceptions by default and therefore changed thecompute
signature in BigChem by removing theraise_exc=True
default argument. - Updated
black
from `23.x.x -> 24.x.x'.
0.11.5 - 2024-01-12
- Updated
bigchem
to0.6.4
which incorporatesqcop
update that properly capturesgeometric
exceptions.
0.11.4 - 2023-09-22
- Added test for
propagate_wfn
passed to program adapters that do not support it. An updated inqcop
andbigchem
resolved this issue resulting in aProgramFailure
object being correctly added to the exception so it can be returned in the/compute/output/{task_id}
endpoint.
- Updated dashboard styling to be more modern.
0.11.3 - 2023-09-20
- Updated BigChem from
0.5.x
->0.6.x
to account for renaming ofDualProgramArgs
toSubProgramArgs
inqcio
package.
0.11.2 - 2023-09-19
- Fixed bug with
/v1/
->/v2/
change in API prefix and Auth0 callbacks.
- Changed exception handing in
/compute/output/
endpoint to use celery result.traceback rather than traceback.format_exc() to capture the full traceback of the error.
0.11.1 - 2023-09-16
- Fixed
/compute/output/{task_id}
endpoint to properly return*Output
orProgramFailure
objects for each calculation in a list of inputs.
- Removed distinction between
Result
andResultGroup
and created a single output object for the/compute/output/{task_id}
endpoint,Output
.
0.11.0 - 2023-09-08
- Typos to pre-commit.
pydantic-settings
packages as part of pydanticv1
->v2
upgrade.- Added
x-max_batch_inputs
to OpenAPI schema so clients can query the max number of inputs they can send in a list.
- Removed
QCElemental
models in favor ofqcio
. - Upgraded from pydantic
v1
->v2
. - Updated BigChem to latest version
0.5.x
and running jobs on the premise that exceptions will be raised by failed tasks. - Api prefix updated from
/api/v1/
->/api/v2/
/compute/results/
updated to/compute/output/
to more closely matchqcop
nomenclature of "inputs" and "outputs."- Now returning the celery state directly as the
result.status
value. Need to decide how to handle status and result returning in the future (I think it can be significantly simplified), but for now this setup works. - Always install the latest version of
poetry
in the docker image. - Build BigChem in
/opt
.
mypy.ini
andsetup.cfg
and moved all configuration topyproject.toml
.flake8
in favor ofruff
.compute-procedure
endpoint as it's not longer needed withqcio
.- Dropped
git
,python3-dev
, andgcc
from main docker image sincepsutil
is no longer required (was required byqcengine
)
0.10.1 - 2023-02-20
- Running BigChem containers from
mtzgroup
rather thancoltonbh
0.10.0 - 2023-02-20
- Changed
pipenv
forpoetry
- Updated python
3.9
->3.11
- Updated tests to only depend upon
httpx
and removedrequests
library - Updated BigChem to
0.4.0
and installing from PyPi now
0.9.1 - 2022-12-27
- Updated BigChem to
0.3.0
released on PyPi instead of building from GitHub. - Updated a bunch of packages in
Pipfile.lock
- Updated dependencies for
isort
and added explicitOptional[]
typing formypy
0.9.0 - 2022-07-19
- Changed projects name from
QCCloud
toChemCloud
- Updated
bigqc
tobigchem
0.8.1 - 2022-07-15
- Changed distributed algorithms from being called
qcc
algorithms tobigqc
algorithms to correctly identify where they are coming from.
0.8.0 - 2022-07-14
- Updated project name from TeraChem Cloud to Quantum Chemistry Cloud
0.7.2 - 2022-07-11
- Pass only strings for default values to
compute_tcc
function that executes distributed algorithms. PassingEnum
values caused celery to try and deserialize objects containing references to theterachem_cloud
package where theEnums
were defined.
0.7.1 - 2022-07-12
- Update to BigQCv0.1.3
0.7.0 - 2022-06-14
- Refactored all backend workers and middleware to a separate out the BigQC project. This project now comprises just a web layer on top of the BigQC engine. This change resulted in the need to change a few environment variables to reflect the change to BigQC.
CELERY_BROKER_CONNECTION_STRING
->BIGQC_BROKER_URL
andCELERY_BACKEND_CONNECTION_STRING
->BIGQC_BACKEND_URL
. - Changed dependencies to reflect the refactor.
0.6.2 - 2022-06-02
- Removed web server memory constraints at docker level. Large results were crashing server because of 500MB limit. When (300MB+) results were pulled into memory server would require >500MB memory and would be terminated by process manager.
- Increased gunicorn worker timeout from 30s -> 60s to accommodate larger results.
- Set results to expire in 3 days instead of default 1 day in backend store.
0.6.1 - 2022-04-25
- Patched
geomeTRIC
to enabletransition=True
for json inputs used inQCEngine
0.6.0 - 2022-04-02
/compute/result
changed toGET
request with signature/compute/result/{task_id}
- Removed much unnecessary internal code around managing Task state due to saving task structure to the DB so that clients only have to supply a single task ID regardless if the task is a batch or single calculation.
0.5.1 - 2022-03-27
- Base64 encode bytes input values submitted to terachem_fe by client
0.5.0 - 2022-03-26
- 🚨BREAKING CHANGE🚨: Support for
native_files
protocol that enables end users to retrieves files generated by a QC package during computation. E.g., can retrievec0
files from a TeraChem computation. Only a breaking change if end user has an old version ofqcelemental
that does not support thenative_files
protocol and output field. - Users can upload
c0
files to seed a TeraChem computation with a wave function. - TeraChem Frontend containers to XStream deployment to access files created by TeraChem job.
- 🚨BREAKING CHANGE🚨: Supported Engine for TeraChem changed from
terachem_pbs
->terachem_fe
- 🚨BREAKING CHANGE🚨:
tcc_kwargs
->tcc:keywords
- Pegged versions of psi4, rdkit, and xtb-python. Updated qcelemental to work with psi4v1.5. Updated python packages without pegged versions.
- Updated app to run python3.9.
- Updated CircleCI python3.7->3.9.
- Updated XStream TeraChem workers to new image.
0.4.2 - 2021-06-11
- "tcc" compute engine
- Parallel hessian and parallel frequency analysis methods to tcc engine
- Changed celery serializer from
json
topickle
. This allows chained methods to receive python data types directly, rather than serialized representations. Since users do not have direct access to the celery layer and can only submit json serialized (and validated) objects via the API I do not feel there are security risks.
0.4.1 - 2021-06-07
- Private queues for compute
0.4.0 - 2021-06-04
- Batch compute capabilities to
/compute
and/compute-procedure
- 🚨BREAKING CHANGE🚨: Updated
/compute*
endpoints to returnTask
objects includingGroupTask
objects that may contain subtasks instead of returning a singlestr
of thetask_id
- 🚨BREAKING CHANGE🚨: Updated
/result
endpoint to acceptTask
objects instead of just astr
oftask_id
. This included updating the endpoint to be aPOST
instead ofGET
endpoint.
0.3.5 - 2021-05-26
xtb
to compute engines- Added
cached-property
package sincekombu
didn't install it by default as a dependency into the linux docker container.
- Updated
tcpb>=0.8.0
- Updated
celery
version
0.3.4 - 2021-05-21
geomeTRIC
optimizerrdkit
engine (adds force fields which can be used for single point computations or in optimizers)
- Run compute tests on hydrogen instead of water for faster results
0.3.3 - 2021-05-19
compute_procedure
task for doing geometry optimizations usingpyberny
- VSCode settings file added to repo.
- Combined two commands from the CI/CD pipeline used against XStream to get fewer auth errors
- Updated
mypy
definitions onSettings
object to passmypy
checks while still allowing tests to run on CircleCi without needing Auth0 configuration. I.e., the web application can be run without needing Auth0 config (for testing purposes). - pre-commit
mypy
now loads from GitHub repo instead of localmypy
install.
0.3.2 - 2021-04-06
- Test assertions to check that results are deleted from celery backend after retrieval by client.
- Added flags
--without-heartbeat --without-mingle --without-gossip
to celery workers to reduce network overhead chattiness. - Delete celery results from backend upon retrieval by client. This will prevent Redis from becoming a memory hog at times of high computational load.
0.3.1 - 2021-03-10
- Changelog
- Updated
tcpb
package to>=0.7.1
to enable molden file creation usingimd_orbital_type="whole_c"
keyword.
0.3.0 - 2021-01-26
- Added TeraChem Protocol Buffer server to available compute engines.
- XStream deployment for both dev and prod now require GPUs to power Terachem. Deployment config for dev/prod was split into
docker-compose.xstream.dev.yaml
anddocker-compose.xstream.prod.yaml
. - TeraChem license.key docker secret to swarm on XStream
architecture.md
to/docs/development
to document core architectural decisions.- Links on user dashboard to
qccloud
python client,/logout
, and a brief description of how to change password. - Links to
users/dashboard
on the main documentation page. - Forgotten
__init__.py
toterachem_cloud
package. Added__version__
to file. This causesmypy
checks to fail as they were previously not inspecting this package fully due to missing__init__.py
. TaskStatus
enum to hold task status values.
/compute/result/{task_id}
can return eitherAtomicResult
orFailedOperation
objects.- CircleCi build pipelines to only include a single build step for web and workers instead of a split pipeline for dev/prod
- Can approve CircleCi build and deploy steps upfront without having to wait for tests to pass. Build/deploy will still only occur if tests pass.
- XStream stacks for dev/prod no longer derive from the same template file.
- Changed
CeleryAtomicResult
toTaskResult
and changeatomic_result
attribute to justresult
to note thatresult
may now be anAtomicResult
or aFailedOperation
(a result could either of these data types).
0.2.1 - 2021-01-21
- Removed
docker_layer_caching
from CircleCi build process
0.2.0 - 2021-01-21
- refresh_flow to
/oauth/token
endpoint
0.1.0 - 2020-12-18
- Three endpoints all available on
/api/v1
:/oauth/token
to get JWTs,/compute
to submit AtomicInput compute request,/compute/result/{task_id}
to request a result delivered as an AtomicResult object.
- Auth provided by Auth0.