- Fix curl and httpie installation in docker image.
- Add HTTP endpoint
PATCH /array/full/{path}
to enable updating and optionally extending an existing array. - Add associated Python client method
ArrayClient.patch
. - Minor fix to api key docs to reflect correct CLI usage.
- Add adapters for reading back assets with the image/jpeg and multipart/related;type=image/jpeg mimetypes.
- Automatic reshaping of tiff data by the adapter to account for extra/missing singleton dimension
- Add a check for the
openpyxcl
module when importing excel serializer.
- Drop support for Python 3.8, which is reached end of life upstream on 7 October 2024.
- Do not require SQL database URIs to specify a "driver" (Python library to be used for connecting).
- A regression in the container broke support for
tiled register ...
andtiled serve directory ...
. When these became client-side operations, the container needed to add the client-side dependencies to support them.
- Add kwarg to client logout to auto-clear default identity.
- Do not automatically enter username if default identity is used.
- Add API route and Python client method enabling admins to reokve API keys belonging to any user or service.
- Added support for explicit units in numpy datetime64 dtypes.
- Follow-up fix to compatibility with Starlette v0.38.0
- Adapt to change in dask public API in dask 2024.9.0.
- Compatibility with a change in Starlette v0.38.0
- Add method to
TableAdapter
which accepts a Python dictionary. - Added an
Arrow
adapter which supports reading/writing arrow tables viaRecordBatchFileReader
/RecordBatchFileWriter
.
- Make
tiled.client
accept a Python dictionary when fed towrite_dataframe()
. - The
generated_minimal
example no longer requires pandas and instead uses a Python dict. - Remove unused pytest-warning ignores from
test_writing.py
. - Rename argument in
hdf5_lookup
function frompath
todataset
to reflect change inophyd_async
- A
/healthz
endpoint, for use by orchestration infrastructure
- A bug in
Context.__getstate__
caused picking to fail if applied twice.
- Support partial download of an asset using the
HTTP
Range
Header.
- When authenticated as a Service Principal, display the SP's uuid in the client Context repr.
- The dependency
json-merge-patch
, introduced in v0.1.0b4, was missing from some pip selectors.
- Minor implementation changes were necessary to make Tiled compatible with Numpy 2.0.
- For improved security, the server-side array slicing function has been
refactored to avoid using
eval()
. To be clear: there were no known exploitable vulnerabilities in theeval()
approach. The input was validated against a regular expression before being passed toeval()
. However, avoidingeval()
altogether is better practice for defense-in-depth against potential code injection attacks due to current or future bugs in Tiled or its upstream dependencies.
- Added a new HTTP endpoint,
PATCH /api/v1/metadata/{path}
supporting modifying existing metadata using aapplication/json-patch+json
or aapplication/merge-patch+json
patch. - Added client-side methods for replacing, updating (similar to
dict.update()
), and patching metadata.
- Fixed regression introduced in the previous release (v0.1.0b1) where exceptions raised in the server sent no response instead of properly sending a 500 response. (This presents in the client as, "Server disconnected without sending a response.") A test now protects against this class of regression.
- Customized default logging configuration to include correlation ID and username of authenticated user.
- Added
--log-timestamps
CLI flag totiled serve ...
to opt in to including timestamp prefix in log messages.
- Support for
FullText
search on SQLite-backed catalogs
- Updated
BaseClient.formats
to use thedict
structure for specs. - The
tiled serve directory --watch
function was not compatible with recentanyio
- A dependency on
fastapi
was introduced intiled.adapters
. This has been removed.
- The
tiled serve ...
CLI commands now accept a--log-config
option, pointing to a custom uvicorn logging configuration file. An example file was added to the repository root,example_log_config.yml
. - Added
tiled.adapters.protocols
which will provide possibility for user to implement their custom adapters in a way that satisfies mypy. - Added
tiled.client.smoke
with a utility for walking a node and ensuring that the data in it can be read. - Added
tiled.client.sync
with a utility for copying nodes between two Tiled instances. - Show authentication state in
Context
repr.
- SQLite-backed catalogs now employ connection pooling. This results in a significant speed-up and avoids frequently re-opening the SQLite file.
- Metadata returned from the use of the
select_metadata
is now a one-item dictionary with 'selected' as the key, to match default type/behavior. - The method
BaseClient.data_sources()
returns dataclass objects instead of raw dict objects. tiled.client.sync
has conflict handling, with initial options of 'error' (default), 'warn', and 'skip'
- Propagate setting
include_data_sources
into child nodes. - Populate attributes in member data variables and coordinates of xarray Datasets.
- Update dependencies.
- Fix behavior of queries
In
andNotIn
when passed an empty list of values.
- The
content-encoding
blosc
was recently upgraded from Blosc to Blosc2. Thecontent-encoding
has been renamed toblosc2
to avoid version confusion between different versions of Tiled servers and clients.
- Metric-reporting had an error when
compress
timing was recorded butcontent-encoding
header was unset.
- Python 3.12 support
- Added
tiled.adapters.resource_cache
for caching file handles between requests.
- Removed object cache from the codebase. If
object_cache
is included in the server configuration file, a warning is raised that this configuration has no effected.
- The configuration setting
tiled_admins
did not work in practice. If a user in the list was already an admin (such as, after a server restart) an error was raised on startup. - The table creation statements for PostgreSQL were not committed. (This may have been a regression due to a change in SQLAlchemy defaults.)
- Tolerate HTTP responses that are missing a
x-tiled-request-id
header, such as when a proxy server responds with an error. - Use
httpx
status code sentinels (instead ofstarlette
ones) for typing client-side status codes.
- Removed upper bound version pin on
dask
. - Switched from
blosc
toblosc2
. - Made client objects dask-serializable
- Added support for registering multiple Assets with a DataSource in an update
- Usage of deprecated Pydantic 2.x APIs was updated.
- Specify a
fallback-version
,0.0.0
, to be used when the version-detection code cannot run.
- Support for specifying the format that uploaded data will be stored in.
- Support for storing uploaded tabular data in CSV format.
- A new HTTP endpoint,
PATCH /api/v1/table/partition/{path}
supporting appending rows to a tabular dataset. - A new method
DataFrameClient.append_partition
. - Support for registering Groups and Datasets within an HDF5 file
- Tiled version is logged by server at startup.
- Hook to authentication prompt to make password login available without TTY.
- Critical regression that broke
tiled serve directory ...
CLI.
- Updated the pydantic version in the pyproject.toml. Now the allowed versions are >2.0.0 - <3.0.0 .
- Changes to prepare for upcoming numpy 2.0 release
- Changes to address deprecations in FastAPI