v30.0.0 (2026-01-16)¶
New Features¶
Automatically set
votable_xtypeon timestamp columns to “timestamp”, following the documentation in the VOTable REC on Extended Type (xtype). (DM-45133)Added optional generation of unique key_id values when loading data into the TAP_SCHEMA keys and key_columns tables. This feature can be activated using the
-uor--unique-keysflag of theload-tap-schemacommand. (DM-45619)Added insertion of TAP_SCHEMA self-description records when initializing the database. (DM-48167)
Add support in the data model for optionally setting the
ON UPDATEorON DELETEactions of a foreign key constraint, corresponding to theon_updateandon_deleteproperties in the YAML file. Valid values for these properties are covered in the SQLAlchemy documentation. (DM-48204)Added support for serializing schemas back to YAML. Fixed multiple issues with classes in the data model which were preventing this from working, previously. Added a test case that “round trips” a test YAML file and verifies that it is the same as the original data. Added a
dumpcommand to the CLI which can be used to dump a schema to a YAML or JSON file. (DM-48925)Added a feature flag
--force-unbounded-arraysizeto theload-tap-schemacommand for working around Astropy issue #18099. (DM-50914)Add option to strip IDs from output YAML when dumping a schema to YAML. The command
felis dump --strip-idscan be used to activate this behavior. (DM-51376)Added schema-level checks of constraints to validate their column references. These will be reported as proper Pydantic validation errors if the column data is bad. (DM-51502)
Added support for managing indexes in the database.
Added
--skip-indexesoption tocreatecommand for skipping index creation when initializing a schema in a database.Added index management commands to the CLI including
create-indexesfor creating indexes from a schema in a database anddrop-indexesfor dropping them. (DM-52344)
Added Docker support.
Added Dockerfile to build image with the felis cli available.
Added github workflow to build and push image to ghcr. (DM-52910)
Add option to instantiate TAP_SCHEMA with extensions to table columns. (DM-53031)
Add view_target to tap_schema extensions for the tables table. (DM-53338)
API Changes¶
By default, generate the
@idfield for any schema object if it is missing. To turn this off, usefelis --no-id-generation [command]. (DM-46240)
Bug Fixes¶
Other Changes and Additions¶
v29.0.0 (2025-03-26)¶
New Features¶
Added tools for comparing schemas in the
diffmodule. These can be run from the command line withfelis diff. (DM-46130)Added column grouping functionality to the data model. Column groups are sets of related columns that, in addition to the standard object attributes, may have an
ivoa:ucd. Information on column groups was also added to the User Guide. (DM-48427)
Other Changes and Additions¶
Added Python 3.13 to supported versions. No code changes were required. (DM-47900)
An API Removal or Deprecation¶
Removed the
apply_schema_to_tablesflag on theMetaDataBuilderwhich creates SQLAlchemyMetaDatafrom a FelisSchema. This was a redundant variable as enabling theapply_schema_to_metadataflag already correctly associated the metadata to the schema. (DM-47256)Removed the
tapmodule, which was replaced bytap_schema. Theinit-tapcommand was removed from the CLI and replaced withinit-tap-schema. (DM-48616)
v28.0.0 (2024-11-26)¶
New Features¶
Added a new
tap_schemamodule designed to deprecate and eventually replace thetapmodule. This module provides utilities for translating a Felis schema into a TAP_SCHEMA representation. The commandfelis load-tap-schemacan be used to activate this functionality. (DM-45263)Added a check to the data model which ensures that all constraint names are unique within the schema. TAP_SCHEMA uses these names as primary keys in its
keystable, so they cannot be duplicated. (DM-45623)Added automatic ID generation for objects in Felis schemas when the
--id-generationflag is included on the command line. This is supported for thecreateandvalidatecommands. Also added a Schema validator function that checks if index names are unique. (DM-45938)
Bug Fixes¶
Fixed a bug where the error locations on constraint objects during validation were reported incorrectly. This was accomplished by replacing the
create_constraints()function with a Pydantic discriminated union. (DM-46002)
v27.0.0 (2024-04-17)¶
New Features¶
Added option for setting TAP_SCHEMA index in
load-tapcommand. (DM-43683)Added option for creating a schema’s database if it does not exist when running the
createcommand. (DM-43108)Added setting of log level and output file in the CLI (DM-43040)
Created a validator that will look for redundant datatype specifications. This is activated from the command line with the
--check-redundant--datatypesflag. (DM-41247)
API Changes¶
Added a new
metadatamodule for generating SQLAlchemyMetaDatafrom a schema. This replaces the old module that was used in thecreatecommand for initializing the database. (DM-43079)Made columns nullable by default in the Pydantic data model. (DM-43753)
Refactored the
tapmodule to use the Pydantic data model. (DM-42935)Moved database utilities into a separate package and refactored them. (DM-44721)
An API Removal or Deprecation¶
Documentation Improvements¶
Updated Felis documentation infrastructure. (DM-43787)