Changelog¶
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.
unreleased¶
0.15.0 - 2025-02-25¶
Added¶
- Temporary
._token_refresh_lock
asyncio.Lock
bound to the new event loop for synchronous request invocations. DELETE
request to the ChemCloud server after successfully receivingProgramOutput
.- Adaptive polling interval to
FutureOutput.get_async()
so that the interval is reset if results are collected.
Removed¶
_HTTPClient._httpx_timeout
.
0.14.0 - 2025-02-20¶
Added¶
- Full async API for
chemcloud
. This enables Jupyter support. Allchemcloud
methods have an_async
version that can be awaited as follows:
from chemcloud import compute_async
...
output = await compute_async("terachem", prog_inputs)
0.13.3 - 2025-02-19¶
Added¶
FutureOutput.save()
andFutureOutput.open()
methods to serialize futures to disks and then open the later for retrieval.
Changed¶
FutureOutput.single_input
to.return_single_output
.
0.13.2 - 2025-02-18¶
Added¶
FutureOutput.single_input
so that list of len 1 submitted tocompute()
still get returned as list. May want to refactor intoFutureOutput
andFutureOutputs
, but this solution works for a quick fix for today's presentation.
0.13.1 - 2025-02-17¶
Added¶
- Usage examples for main
chemcloud
functions. - Tests for main
chemcloud
functions. queue
can be passed toconfigure_client()
orCCClient()
to specify that all calculations should be submitted to a particular queue.
Changed¶
ProgramOutput
objects are removed from theFutureOutput.output
list as they are returned by.as_completed()
to reduce memory footprint for collecting large batches of results.
0.13.0 - 2025-02-16¶
Added¶
- High level
compute()
interface for doing calculations without needing to first instantiate a client. - More complete
TaskStatus
enum. - Parallel task submission and retrieval with ChemCloud server via asynchronous coroutines.
asyncio.Lock()
to auth requests so that token refreshes are not duplicated by multiple coroutines..save()
and.open()
methods to FutureOutput to serialize to/from disk.
Changed¶
- Refactored
CCClient
,_RequestsClient
andFutureOutput
to have cleaner interface and more clearly defined roles. CCClient.configure()
renamed to.setup_profile()
to improve clarity and reserve the termconfigure
for the newconfigure_client
function.compute()
andclient.compute()
are now synchronous by default. If end users want to run calculations asynchronously and have a future object returned passreturn_future=True
._RequestsClient
is entirelyasync
now with a.run_parallel_requests()
method that can be used for synchronous tasks.- Lists of
ProgramInput
objects submitted toCCClient.compute()
are now submitted individually (and concurrently) rather than as a batched, single request. This will prevent the server from having to retrieve large batch calculations which occasionally fills server memory and crashes it. _HTTPClient
and updated requests methods to reuse these clients across requests rather than creating a new connection for each request. This enables connection pooling and reuse ofTCP/SSL
connections, greatly speeding up requests and lowering server load.- Refactored and renamed methods on
_HTTPClient
for clarity and maintainability. - Updated documentation to use new
compute()
API instead of instantiating aclient
.
Removed¶
TaskStatus.complete
.TaskStatus
has been expanded to mirror celery's states.FutureOutputGroup
in favor of a singleFutureResult
object that can handle both single tasks and arrays of tasks.- Convenience types defined in
models
.
0.12.5 - 2025-02-12¶
Fixed¶
- Retry logic for
httpx.RequestError
now correctly raises an exception aftermax_attempts
. Requests that fail due to sporadic connection/network issues will now be retried up tomax_attempts
times.
Changed¶
- Removed retry logic for 4xx and 5xx errors.
0.12.4 - 2025-02-11¶
Added¶
- Retry requests for 4xx and 5xx status codes. This is a short term fix for the sporadic 500 errors related to
LookupError: unknown encoding: idna
on the server.
0.12.3 - 2025-02-10¶
Added¶
- Retry loop for HTTP requests to handle ssl handshake errors or other non-HTTP status code errors.
0.12.2 - 2025-02-07¶
Changed¶
- Loosened dependency specifications for
qcio
andhttpx
.
0.12.1 - 2024-09-11¶
Changed¶
- Using
FutureOutput
for arrays of inputs of length 1. - Updated to Python 3.9 typing syntax.
0.12.0 - 2024-08-06¶
Changed¶
- Removed
black
andisort
in favor forruff
Updated¶
- 🚨
python
(>=3.8
->>=3.9
) tomli
(^1.0
->^2.0
)httpx
(^0.23.1
->^0.27
)ruff
(^0.0287
->^0.5
)pytest-httpx
(<0.23.0
->>=0.23.0
)format.sh
script droppedblack
andisort
.
0.11.1 - 2024-07-19¶
Changed¶
- Updated to qcio 0.11..
0.11.0 - 2024-07-12¶
Changed¶
Updated qcio (0.10.1 -> 0.10.2). Structure.ids
-> Structure.identifiers
0.10.1 - 2024-07-11¶
Added¶
py.typed
file for type checking in projects that depend uponchemcloud
.
0.10.0 - 2024-07-10¶
Changed¶
- Updated to
qcio 0.10.1
which usesStructure
instead ofMolecule
.
0.9.0 - 2024-06-14¶
Changed¶
- Upgraded to
qcio
Generics data structures. - Upgraded
black
from^23.0.0
to^24.0.0
. - Renamed
collect_wavefucntion
kwarg toCCClient.compute(...)
tocollect_wfn
. - Updated the response returned by ChemCloud server to have attributes
status
andprogram_output
fromstate
andresults
. - Rebuilt documentation to reflect new
qcio
Generics and renamed kwargs.
0.8.3 - 2023-10-20¶
Changed¶
- Updated GitHub actions to run on
pull_request
in addition topush
. - Migrated dependency
uiri/toml
tohukkin/tomli
(Python < 3.11) or the built-intomllib
(Python >= 3.11) - Updated GitHub actions to test against both Python 3.8 and Python 3.11
0.8.2 - 2023-09-25¶
Changed¶
- Removed
pydantic==2.4.0
from supported versions due to immediate bug upon this release. When trying to importCCClient
a reference count error appears to trigger aKeyError
. Bugs are being tracked here: https://github.com/pydantic/pydantic/issues/7617.
0.8.1 - 2023-09-20¶
Changed¶
- Updated to
qcio>=0.7.0
to account for renaming ofDualProgramArgs
toSubProgramArgs
.
0.8.0 - 2023-09-19¶
Changed¶
FutureResult
objects now calledFutureOutput
to keep in harmony withqcio
nomenclature.- Documentation rewritten to capture API changes with
qcio
andqcop
. /examples
scripts instantiate aMolecule
directly rather than openingh2o.xyz
so that code examples can be run directly from the documentation website.- All
mkdocs
and associated documentation packages updated to the latest versions.
0.7.0 - 2023-09-08¶
Changed¶
- Dropped
QCElemental
in favor ofqcio
. - Updated client to work with
v2
of the ChemCloud server usingqcio
. - Updated DevOps stack to be in harmony with other qc* packages (
poetry
,GitHub Actions
,pre-commit
, etc). - Updated from pydantic
v1
->v2
, addedpydantic-settings
to dependencies. - Changed settings
chemcloud_default_credentials_profile
tochemcloud_credentials_profile
. - Updated a few names from
result
tooutput
to be more in harmony withqcio
nomenclature.
Added¶
- Publish to pypi from GitHub actions.
0.6.2 - 2022-12-27¶
Changed¶
- Updated
qcelemental==0.24.0 -> 0.25.1
0.6.1 - 2022-07-19¶
Changed¶
- Pegged
qcelemental
to version0.24.0
since0.25.0
introduces breaking changes. Need to keep this version in sync withChemCloud
server version.
0.6.0 - 2022-07-19¶
Changed¶
- Updated project name from
qccloud
tochemcloud
0.5.0 - 2022-07-15¶
Changed¶
- Updated project name from
tccloud
toqccloud
0.4.1 - 2022-05-07¶
Changed¶
- Upped the default timeout on http reads from 5.0s -> 20.0s.
0.4.0 - 2022-4-02¶
Added¶
to_file()
andfrom_file()
methods to easily save compute job ids for later retrieval.
Changed¶
- Simplified management of task ids between client and server. Only need to send a single id to server even if a batch computation was initiated.
Removed¶
- Support for Python3.6. Python3.6 end-of-lif'ed December 23, 2021.
0.3.1 - 2022-03-27¶
Added¶
- Decode b64 encoded data returned from server in
AtomicResult.extra['tcfe:keywords']
Changed¶
- Updated
config.settings.tcfe_config_kwargs = "tcfe:config
->config.settings.tcfe_keywords = "tcfe:keywords
0.3.0 - 2022-03-26¶
Added¶
- Support for
AtomicInput.protocols.native_files
. User can now request QC package specific files generated during a computation. - Added support for TeraChem-specific
native_files
. c0/ca0/cb0 bytes files (or any bytes data) placed inAtomicInput.extras['tcfe:keywords']
will be automatically base64 encoded and sent to the server. The enables seeding computations with a wave function as an initial guess. - Base64 encoded
native_files
returned from server will be automatically decoded to bytes.
0.2.4 - 2021-06-07¶
Added¶
- Private compute queues to
compute()
andcompute_procedure()
0.2.3 - 2021-06-04¶
Added¶
- Batch compute for both
compute()
andcompute_procedure()
methods FutureResultGroup
for batch computations
Changed¶
- Added
pydantic
BaseModel
as base forFutureResult
objects.
0.2.2 - 2021-05-21¶
Added¶
- Extended documentation to include a Code Reference section and much more comprehensive documentation of the main objects.
- Added
compute_procedure
toTCClient
for geometry optimizations. - Added
TCClient.version
property for quick version checks.
0.2.1 - 2021-03-05¶
Added¶
- Changelog
- User documentation
- Website for documentation
0.2.0 - 2021-02-26¶
Added¶
- Added
TaskStatus
enum to hold all task statuses. - Basic documentation on main classes.
- [core_decisions.md] to document thinking behind architectural choices.
Changed¶
FutureResult.get()
to return either anAtomicResult
or aFailedComputation
- Simplified README.md overview to use dictionaries instead of classes. Results in simpler tutorial with fewer imports.
0.1.1 - 2021-01-22¶
Added¶
TCClient
that can manage credentials, submit AtomicInput computations, and retrieve AtomicResult output from TeraChem Cloud._RequestsClient
class that handles all network requests to TeraChem Cloud serverFutureResults
object that is created from atask_id
and can be used to retrieve a result once finished.