Skip to content

Latest commit

 

History

History
694 lines (472 loc) · 34.1 KB

File metadata and controls

694 lines (472 loc) · 34.1 KB

Release 1.1.0 April 19, 2026

New features

Search engine performance improvements

ExpressionAnd, ExpressionOr, and ExpressionNegation in query_expressions.py now use set-based deduplication instead of O(n²) list scanning, giving a significant speedup for queries that produce many intermediate results. Supporting this, SearchResult gains __eq__ and __hash__ methods so instances can be stored in sets and dicts. QueryHandler._expr_has_wildcard() replaces the fragile "?" in str(interior) string check with a proper recursive AST walk, eliminating false positives on queries whose string representations happen to contain a literal ?.

StringQueryHandler and schema_lookup (internal / experimental)

Two new internal modules support schema-free HED search:

  • hed/models/string_search.pyStringQueryHandler subclasses QueryHandler and accepts a raw HED string instead of a parsed HedString, enabling query evaluation without loading a schema. StringNode duck-types HedGroup/HedTag so that existing Expression subclasses evaluate against it without modification.
  • hed/models/schema_lookup.pygenerate_schema_lookup(schema) builds a compact {short_tag: tag_terms} dict from a loaded schema that can be passed to StringQueryHandler.search() to enable ancestor-aware matching on short-form strings. save_schema_lookup() / load_schema_lookup() persist the table as JSON for offline use.

These modules are not part of the public API and may change in future releases.

HedGroup find-method documentation clarified

Docstrings for find_tags, find_wildcard_tags, find_exact_tags, and find_tags_with_term now document the exact comparison property each method uses (short_base_tag, short_tag, HedTag.__eq__, and tag_terms respectively) and explain the rationale for that choice.

Search benchmarks

A new benchmarks/ directory provides reproducible performance benchmarking tools: search_benchmark.py measures throughput across query types and string sizes, data_generator.py synthesizes realistic HED strings, and report.py generates Markdown and PNG reports. Pre-computed results are stored under benchmarks/results/ and benchmark figures under docs/_static/images/.

Search documentation

A new docs/search_details.md page covers all three HED search implementations (basic_search, QueryHandler, and StringQueryHandler): design trade-offs, query language reference, and measured performance characteristics with benchmark figures.

Pandas 3.0 compatibility

All pandas 3.0 breaking changes have been addressed, and the pandas version constraint in pyproject.toml has been updated from <3.0.0 to <4.0.0:

  • Copy-on-Write (CoW): Chained df[col][mask] = ... assignments in df_util.py replaced with df.loc[mask, col] = ... to prevent silent no-ops and the new ChainedAssignmentError.
  • drop() API: Removed redundant axis=1 argument when columns= is already specified in data_util.py (the two arguments conflict in pandas 3.0).
  • NaN handling in schema loading: df2schema.py, df_util.py, and hed_id_util.py now check isinstance(value, str) before calling string methods such as .strip() and .startswith(), preventing AttributeError when empty cells are float NaN rather than "".
  • StringDtype in _merge_dataframes: Fillna logic updated in schema_io/df_util.py to use pd.api.types.is_numeric_dtype() instead of dtype == "object", correctly handling pandas 3.0 StringDtype columns.
  • Float64 column FutureWarning: assign_hed_ids_section in hed_id_util.py now casts all-NaN hedId columns from float64 to object before assigning string values, eliminating a pandas deprecation warning.
  • Added tests/test_pandas3_compat.py with 27 targeted tests covering all of the above fixes.

Filename filter for extract bids-sidecar

hedpy extract bids-sidecar and the underlying hed_extract_bids_sidecar script now accept a --filter / -fl option. Only files whose name contains the filter string are included in the sidecar extraction. Example:

hedpy extract bids-sidecar /path/to/dataset --filter sub-01

BidsFileGroup.get_task_names()

BidsFileGroup now exposes a get_task_names() method that returns a sorted list of unique task names (the xxxx portion of task-xxxx BIDS entities) found across all sidecar and data files in the group.

TabularSummary deduplicates skip_cols

TabularSummary.__init__ now deduplicates the skip_cols list using dict.fromkeys, preserving order. Passing the same column name more than once no longer produces duplicate entries in skip_cols or in the "Skip columns" field of the summary metadata output. Functional behaviour (which columns are skipped) is unchanged.

Documentation

  • Removed {index} placeholder annotations from README.md and examples/README.md.

CI/CD

  • Bumped actions/configure-pages from 5 to 6.
  • Bumped astral-sh/setup-uv from v7 to v8.0.0.
  • Updated anthropics/claude-code-action to v1.0.97.
  • Pinned all GitHub Actions steps to full SHA hashes for supply-chain security.
  • Updated spec_tests/hed-examples, spec_tests/hed-schemas, and spec_tests/hed-tests submodules.

Release 1.0.0 March 27, 2026

This is a major release with breaking changes. It removes several subsystems that are no longer part of the core hedtools package, completes the schema library-extras support across all schema formats, and cleans up the public API.

Breaking changes

Removed remodeling tools

The entire hed/tools/remodeling/ subsystem (dispatcher, operations, backup manager, and CLI entry points run_remodel / run_remodel_backup / run_remodel_restore) has been removed (issue #1180). Remodeling functionality is now maintained as a separate repository: table-remodeler:

Removed visualization code

hed/tools/visualization/ (TagWordCloud, word_cloud_util) and the wordcloud dependency have been removed. Visualization is maintained in the separate hedvis package in repository hed-vis

Removed ontology utilities

ontology_util.py and the associated create_ontology.py script have been removed (issue #1177) and are now in the hed-ontology HED ID management is now handled by the new hed/schema/schema_io/hed_id_util.py module.

Removed sequence_map.py

hed/tools/analysis/sequence_map.py has been moved to the hedvis package in the hed-vis and is no longer part of hedtools.

Removed HedLogger

The HedLogger logging class has been removed from hed/errors/. Use Python's standard logging module instead.

Removed check_prerelease parameter from schema loading API

The check_prerelease flag has been removed from all public schema-loading functions (load_schema_version(), load_schema(), from_string(), from_dataframes()) and all SchemaLoader subclasses. Prerelease schemas are now found automatically whenever they are present in the local cache — no flag is needed.

check_warnings renamed to check_for_warnings

ErrorReporter.check_warnings() has been renamed to check_for_warnings() for API consistency.

Removed versionner dependency

Version management has migrated fully to setuptools-scm. The versionner tool and its configuration have been removed (issue #1181). hed/_version.py continues to be auto-generated — do not edit it manually.

Schema enhancements

Library schema extras (inLibrary) fully supported across all formats

Extra (non-standard) sections in library schemas, marked with inLibrary, now round-trip correctly through all three schema file formats:

  • XML: inLibrary attribute written and read for all extra node types.
  • JSON/DataFrame: in_library column propagated through all extra section tables.
  • MediaWiki: inLibrary tags serialized and parsed in extra sections.

Comprehensive roundtrip test suites have been added for each format.

Consistent inLibrary / in_library naming

A naming inconsistency between the XML attribute name (inLibrary) and the internal DataFrame column name (in_library) has been resolved. All internal representations now use in_library; serialization to XML uses inLibrary as required by the schema specification.

Prerelease schemas found automatically

When a requested version is present only in the prerelease cache, it is now loaded without any additional flags. The previous check_prerelease=True requirement has been eliminated throughout the stack.

Prerelease library schemas can use their prerelease standard partner

A prerelease library schema that has withStandard set may now load against its matching prerelease standard partner instead of requiring a released standard schema.

Auto-download missing schemas from GitHub

get_hed_version_path() now automatically fetches a schema from GitHub when the requested version is absent from the default local cache directory.

Default schema version resolved dynamically

The default schema version is derived at runtime from the highest released version in the cache rather than being hardcoded in the source. New schema releases no longer require a code change.

Consistent line-ending handling

CRLF/LF differences in schema files are now normalized on read and write, preventing spurious diffs and test failures on Windows.

Fixed empty schema DataFrame sections

Writing a schema to DataFrame format no longer fails when a section (e.g., unit modifiers) is empty.

Fixed loading of early TSV-format schemas

Schemas stored in older TSV formats that predate the current DataFrame layout now load correctly.

Removed unverified omn: columns from TSV format

Columns prefixed with omn: that were written but never populated have been removed from the TSV/DataFrame schema format.

Schema error vs warning strategy revised

The ErrorReporter now distinguishes schema-level errors from warnings more precisely. check_for_warnings() (formerly check_warnings()) returns only genuine warning-level issues; schema structural errors are always reported as errors regardless of warning-filter settings.

Schema compliance tests check only latest versions

Spec-test compliance checking has been refactored to validate only the latest released version of each schema, reducing test time and avoiding failures from already-superseded versions.

Bug fixes

  • Fixed a race condition in schema-version auto-detection when multiple processes access the cache simultaneously.
  • Fixed duplicate HED ID detection — check_duplicate_hed_ids() now correctly tracks already-seen IDs across all schema sections.
  • Verified all built-in error messages are unique (no two distinct error codes share the same message text).
  • Normalized error message punctuation: sentence-ending periods are followed by one space (was inconsistently one or two).
  • Fixed extension capitalization check in schema attribute validation.
  • Removed stray debug print statements from the schema loading path.

CI/CD and developer tooling

Migrated GitHub Actions to uv

All CI workflows now use the astral-sh/setup-uv action and uv for environment creation and package installation. pip-based setup has been removed. The black formatter has been eliminated; ruff format handles all code formatting.

Updated GitHub Actions versions

  • actions/checkout: v4 → v6
  • astral-sh/setup-uv: v5 → v7
  • Added cache-dependency-glob to all setup-uv steps for correct cache invalidation.

Replaced codespell with typos

Spell checking in CI now uses typos. Configuration has been consolidated into pyproject.toml; the separate .codespellrc file has been removed. The tests/ directory and generated/binary file types are excluded from spell checking.

Added Claude Code Review and PR Assistant workflows

Two new GitHub Actions workflows provide automated AI code review on pull requests:

  • claude_code_review.yaml — posts inline review comments via the gh CLI.
  • claude_pr_assistant.yaml — responds to /review commands in PR comments.

Bot-authored PRs are excluded from automated review to prevent feedback loops.

Added project context files for AI assistants

  • .github/copilot-instructions.md — VS Code Copilot context (now tracked in the repository).
  • CLAUDE.md and .rules/ — Claude Code project context and coding rules.

Consolidated tool configuration

  • Ruff options updated; submodule directories excluded from linting.
  • lychee.toml updated to use plain URL format (replaced {meta} tags removed in newer lychee releases).
  • pyproject.toml is now the single source of truth for spell-check word lists.

Release 0.9.0 January 22, 2026

The main purpose of this release is to clean up the CLI for the hedtools and to improve the documentation in preparation for release of 1.0.0, which will be a breaking release.

Major changes

Command-line interface (CLI) overhaul

Complete CLI redesign with Git-Style commands

  • Introduced unified hedpy command-line interface with git-style subcommand structure
  • Replaced legacy standalone scripts with organized command groups: validate, schema, extract
  • Added comprehensive help system with detailed command documentation
  • Implemented click-option-group for organized command options

New commands:

  • hedpy validate bids-dataset - BIDS dataset validation
  • hedpy validate string - HED string validation
  • hedpy validate sidecar - JSON sidecar validation
  • hedpy validate tabular - TSV file validation
  • hedpy schema validate - Schema file validation
  • hedpy schema convert - Schema format conversion
  • hedpy schema add-ids - HED ID management
  • hedpy extract bids-sidecar - Sidecar template extraction
  • hedpy extract tabular-summary - Tabular file summarization

Enhanced output options:

  • Multiple output formats: text, json, json_pp (pretty-printed JSON with metadata)
  • Configurable error limiting per error type
  • File-based and per-error error counting options
  • Comprehensive logging configuration with file output support

Documentation improvements

Major documentation restructuring

  • Complete rewrite of user guide with comprehensive examples and workflows
  • Added detailed Jupyter notebook documentation section
  • Created extensive CLI documentation with command examples
  • Improved API reference organization with clearer section headers
  • Enhanced introduction page with quick start examples
  • Added troubleshooting section with common issues and solutions
  • Updated the RELEASE_GUIDE to better reflect current release process

New documentation features:

  • Sidebar quick links for easy navigation
  • Custom CSS styling for improved readability
  • Dark mode support with proper color theming
  • Brand customization with project logo and name
  • Better code block formatting and syntax highlighting
  • Comprehensive examples for all major workflows

Jupyter notebook examples

New example notebooks (examples/ directory)

  • extract_json_template.ipynb - Generate JSON sidecar templates
  • find_event_combinations.ipynb - Find unique value combinations
  • merge_spreadsheet_into_sidecar.ipynb - Merge edited annotations
  • sidecar_to_spreadsheet.ipynb - Convert JSON to spreadsheet format
  • summarize_events.ipynb - Summarize event file contents
  • validate_bids_dataset.ipynb - Validate BIDS datasets
  • validate_bids_dataset_with_libraries.ipynb - Validate with library schemas
  • validate_bids_datasets.ipynb - Batch validate multiple datasets
  • validate_bids_dataset_nondefault. ipynb - Non-standard validation scenarios

Notebook infrastructure:

  • Added comprehensive README for notebooks with usage instructions
  • Created optional dependencies group for Jupyter support
  • Added notebook testing framework for validation

Core functionality enhancements

Validation improvements:

  • Enhanced placeholder validation with units (e.g., "# m-per-s^2")
  • Fixed unit class validation for placeholders with units
  • Improved error reporting with better categorization
  • Added support for --no-log option to disable all logging

TabularSummary Enhancements:

  • Added categorical limit feature to prevent memory issues with high-cardinality columns
  • Implemented overflow column tracking for truncated summaries
  • Added categorical counts metadata (total values and file counts)
  • Improved summary statistics and reporting

Schema processing:

  • Enhanced schema validation error messages with specification links
  • Fixed schema attribute inheritance handling
  • Improved JSON schema format support
  • Updated conversion factor validation

Script and utility improvements

New scripts:

  • hed/scripts/validate_hed_string.py - Standalone HED string validation
  • hed/scripts/validate_hed_sidecar.py - Standalone sidecar validation
  • hed/scripts/validate_hed_tabular.py - Standalone tabular file validation
  • hed/scripts/extract_tabular_summary.py - Non-BIDS tabular summarization
  • hed/scripts/script_utils.py - Shared utility functions for scripts

Script utilities:

  • Centralized logging setup across all scripts
  • Standardized validation result formatting
  • Consistent error handling and reporting
  • Improved argument parsing with organized option groups

Dependencies and requirements

Updated Dependencies:

  • Added click-option-group>=0.5.0 for CLI option organization
  • Updated wordcloud from 1.9.4 to 1.9.5
  • Updated black to >=26.1.0 with Jupyter support
  • Added mdformat>=0.7.0 and mdformat-myst>=0.1.5 for markdown formatting
  • Updated Sphinx and documentation dependencies

New Optional Dependency Groups:

  • examples - Jupyter notebook support (jupyter, notebook, nbformat, ipykernel)
  • Updated docs group with version constraints
  • Enhanced dev group with markdown formatting tools

Testing enhancements

Schema test data:

  • Added extensive JSON test data for schema validation
  • New test files for schema attribute validation
  • Tests for conversion factors, HED IDs, unit classes, value classes
  • Tests for character validation and deprecation handling
  • Tests for library schema attributes

Test organization:

  • Improved test structure with categorized error cases
  • Added common causes and correction strategies to test metadata
  • Enhanced test documentation with specification references
  • Moved JSON test references from the hed-specification repository to the hed-tests repository

Documentation files

Updated documentation:

  • Comprehensive CHANGELOG.md updates
  • Enhanced CONTRIBUTING.md with detailed workflows
  • Improved README. md with better examples and structure
  • Updated RELEASE_GUIDE.md with detailed release procedures

Configuration files:

  • Added .lycheeignore for link checker exclusions
  • Added lychee.toml for link validation configuration
  • Enhanced .gitignore with additional patterns
  • Updated workflow configurations for GitHub Actions

GitHub actions and CI/CD

Workflow updates

Enhanced CI pipeline:

  • Updated cache actions from v4 to v5 across all workflows
  • Changed default branch references from develop to main
  • Renamed and reorganized workflow files (. yml → .yaml)
  • Improved Sphinx documentation build workflow

New workflows:

  • links. yaml - Lychee link checker for documentation (weekly schedule)
  • mdformat.yaml - Markdown formatting validation
  • notebook_tests.yaml - Jupyter notebook validation
  • ruff.yaml - Python linting with Ruff

Workflow improvements:

  • Updated codespell workflow to use main branch
  • Enhanced documentation deployment workflow
  • Added proper artifact handling for GitHub Pages
  • Improved test isolation and parallel execution

File organization and structure

Repository structure changes

Removed:

  • Removed spec_tests/hed-specification submodule (replaced with hed-tests)
  • Removed remodeling CLI commands (moved to separate repository)

Added:

  • New examples/ directory with Jupyter notebooks and README
  • New hed/scripts/script_utils.py for shared utilities
  • New validation scripts for string, sidecar, and tabular files
  • New extract script for non-BIDS tabular summaries

Updated:

  • Moved documentation assets from docs/assets/ to docs/_static/
  • Enhanced documentation structure with better organization
  • Improved test data organization in spec_tests/

Code quality and formatting

Black formatting:

  • Applied Black code formatter across entire codebase
  • Updated Black configuration for Python 3.14 support
  • Enhanced exclusion patterns for auto-generated files

Ruff linting:

  • Added comprehensive Ruff configuration
  • Implemented linting rules for code quality
  • Added automated linting in CI pipeline

Markdown formatting:

  • Added mdformat for consistent markdown styling
  • Configured myst-parser support
  • Automated markdown checking in CI

Bug fixes and minor improvements

Schema handling

  • Fixed MediaWiki → MEDIAWIKI naming consistency
  • Improved schema format detection and conversion
  • Enhanced schema attribute validation
  • Fixed inheritance handling for schema attributes

Validation

  • Fixed unit validation for placeholders with units
  • Improved error message clarity and documentation links
  • Fixed definition extraction from sidecars
  • Enhanced sidecar validation error reporting

Error reporting

  • Updated documentation link format in error messages
  • Improved error categorization and grouping
  • Added error iteration utility (iter_errors)
  • Enhanced printable issue formatting

Miscellaneous

  • Fixed various typos and formatting issues
  • Improved code comments and docstrings
  • Enhanced type hints and error handling
  • Cleaned up deprecated code patterns

Breaking changes

CLI command changes:

  • Legacy commands are now deprecated (still work but show warnings)
  • Recommended migration to new hedpy command structure
  • Some command-line argument names have changed for consistency

Python version:

  • Minimum Python version remains 3.10
  • Added support for Python 3.14

Migration guide

CLI Migration

# Old (deprecated)
validate_bids /path/to/dataset

# New (recommended)
hedpy validate bids-dataset /path/to/dataset

Script Imports

# Validation functions remain unchanged
from hed import HedString, load_schema_version, BidsDataset

# New utility imports available
from hed.errors import iter_errors
from hed.scripts.script_utils import format_validation_results

Release 0.8.1 December 9, 2025

The primary purpose of this release was to correct the JSON format for HED schemas so that it would accurately distinguish between inherited and non-inherited attributes. The documentation layout was also improved with quick links.

Highlights

  • HED schema JSON export is now cleaner: empty list attributes are omitted instead of written as empty arrays, with stronger tests around inheritance and round-trip behavior.
  • Default HED XML schema version bumped to 8.4.0, so helper functions pick up the latest standard without extra configuration.
  • Sphinx docs get a polished Furo theme setup, project logo, sidebar quick links, dark-mode fixes, and a proper GitHub repo icon.
  • CI updated to use actions/checkout@v6 via Dependabot

What’s Changed

Schema & JSON I/O

  • Omit empty list attributes in schema JSON Updated build_attributes_dict in schema2json.py so list-valued attributes like suggestedTag, relatedTag, valueClass, and unitClass are only written when non-empty, instead of always being present as []. This produces a more compact JSON representation and avoids ambiguous “empty list means nothing” cases.

  • Stronger JSON format tests Refined tests in test_json_explicit_attributes.py and test_schema_format_roundtrip.py to assert that:

    • Tags without relatedTag / valueClass / unitClass simply do not have those keys in attributes.
    • Any list attributes that are present must be non-empty.
    • A full 8.4.0 schema is saved as JSON and scanned to ensure no empty list attributes sneak into the output.
  • Schema comparison & round-trip robustness Extended round-trip tests for JSON schema export/import so that schema comparison is aligned with the new “omit empty lists” behavior and no longer relies on placeholder empty arrays.

  • Default XML schema → 8.4.0 Updated the default XML schema version used by helper utilities to 8.4.0 (from 8.3.0). This ensures load_schema_version() and similar functions resolve to the current standard HED schema by default.

Documentation & Site

  • Furo theme configuration and versioning Updated docs/conf.py to:

    • Set release = "0.8.0" for the docs.
    • Use the Furo theme with html_static_path = ["_static"].
    • Register extra assets: custom.css and gh_icon_fix.js.
    • Attach a project logo via html_logo.
  • Sidebar quick links Added a new quicklinks.html sidebar template and wired it into html_sidebars so all pages include a “Quick links” section pointing to HED homepage, resources, schema browser, specification, and online tools.

  • Dark-mode & header polish Extended custom.css and the new gh_icon_fix.js helper to:

    • Make the sidebar search box readable in dark mode (background, placeholder, and icon colors).
    • Hide the raw “view source” / “edit this page” links in the header.
    • Replace them with a single GitHub icon button that points to the repo root and works in both light and dark themes.
  • Minor formatting clean-ups
    Small documentation/test formatting adjustments, including updating tests to load schema version 8.4.0 and aligning text with the new JSON behavior.

CI / Tooling

  • GitHub Actions: actions/checkout v6
    Dependabot PR #1155 updates all workflows to use actions/checkout@v6 instead of v5, pulling in the latest upstream improvements (including Node.js 24 support and updated credential handling).

Release 0.8.0 November 18, 2025

  • Unified CLI Interface: Added hedpy command-line tool with git-like subcommand structure.
    • Main command: hedpy with subcommands for all HED operations.
    • Subcommands organized by category: hedpy validate-bids, hedpy remodel run, hedpy schema validate, etc.
    • Prevents CLI namespace collisions with other tools (e.g., validate_bidshedpy validate-bids).
    • Legacy commands still available for backward compatibility but deprecated.
    • Built with click framework for better CLI user experience.
    • Added comprehensive help text: hedpy --help, hedpy COMMAND --help.
    • CLI Parameter Fidelity: All CLI wrapper commands now correctly match original script parameters (38+ parameter fixes across 7 commands).
      • Fixed validate-bids: Added missing suffixes, output format, error control, and print options.
      • Fixed remodel commands: Corrected argument names, added missing parameters, fixed option conflicts.
      • Fixed schema commands: Corrected positional vs option argument structures for add-ids and create-ontology.
      • Added comprehensive test suite (tests/test_cli_parameter_parity.py) to verify CLI parameters match original parsers.
  • JSON Schema Format Support: Added comprehensive JSON format support for HED schemas alongside existing XML, MEDIAWIKI, and TSV formats.
    • Implemented SchemaLoaderJSON class for loading JSON schemas (hed/schema/schema_io/json2schema.py).
    • Implemented Schema2JSON class for exporting schemas to JSON (hed/schema/schema_io/schema2json.py).
    • Added JSON constants and key mappings (hed/schema/schema_io/json_constants.py).
    • Added save_as_json() and get_as_json_string() methods to HedSchema class.
    • JSON format uses flat tag structure with hierarchy metadata for easier programmatic access.
    • Separate units section in JSON format for improved AI/tool accessibility.
    • Placeholder structure for takes-value tags with proper attribute inheritance.
    • Full roundtrip validation ensures JSON format produces identical validation results to XML/MEDIAWIKI.
  • New BIDS Sidecar Extraction Tool: Added hed_extract_bids_sidecar command-line script for extracting sidecar templates from BIDS datasets.
    • Configurable value columns and skip columns for flexible template generation.
    • Comprehensive logging support with file output and verbosity control.
    • Integrated with BidsDataset and TabularSummary classes for robust extraction.
  • Schema Validation Enhancements: Extended schema validation to include JSON format in roundtrip testing.
    • Updated hed_script_util.py to validate all 4 schema formats (XML, MEDIAWIKI, TSV, JSON).
    • Updated schema conversion script to automatically generate JSON format alongside other formats.
  • Python Version Requirements: Minimum Python version raised to 3.10 (dropped 3.9 support).
  • Documentation Improvements: Added comprehensive Google-style docstrings to all functions in hed_script_util.py.
  • Configuration Updates:
    • Added status directory to Black exclude list in pyproject.toml for development scripts.
    • Updated matplotlib dependency to 3.10.7.
  • Specification Tests: Updated hed-specification submodule to latest version for improved test coverage.

Release 0.7.1 October 13, 2025

  • Added official support for Python 3.13 (tested in CI workflows).
  • Applied Black code formatter to entire codebase for consistent code style (148 files reformatted).
  • Added Black to development dependencies (pip install -e .[dev]) and GitHub Actions CI workflow.
  • Created .github/workflows/black.yaml for automated code formatting checks on all PRs and pushes.
  • Migrated from flake8 to ruff for linting and code quality checks (faster, more comprehensive).
  • Applied code corrections throughout codebase as suggested by ruff linter.
  • Removed .flake8 configuration file in favor of ruff configuration in pyproject.toml.
  • Removed unneeded parameters from validator functions for cleaner API.
  • Added TYPE_CHECKING imports to avoid circular import issues in type annotations.
  • Changed sentinel value name from _UNSET to _SENTINEL in bids_dataset.py for clarity.
  • Enhanced coverage workflow configuration for improved CI/CD reliability.
    • Changed ci_cov.yaml to only run on main branch (not all branches).
    • Updated Python version from 3.12 to 3.10 for coverage tests.
    • Configured qlty.toml for proper coverage reporting with relative paths.
    • Updated .coveragerc to remove explicit source specification.
  • Added pip install -e .[test] to all GitHub Actions workflows (ci.yaml, ci_windows.yaml, spec_tests.yaml).
  • Enhanced CONTRIBUTING.md with Black and ruff usage guidelines and code quality tools section.
  • Updated README.md with "Code Formatting with Black" section including Windows-specific workarounds.
  • Updated RELEASE_GUIDE.md to include code quality checks (Black, ruff, codespell) as pre-release step.
  • Configured Black in pyproject.toml with 127 character line length matching existing ruff configuration.

Release 0.7.0 October 2, 2025

  • Added comprehensive logging infrastructure with configurable log levels and file output to validation tools.
  • Enhanced validate_bids script with improved error reporting and filtering capabilities.
  • Added error code counting and filtering by count/file in ErrorHandler.
  • Improved validation output formatting with version tracking in JSON output.
  • Added comprehensive CONTRIBUTING.md with development guidelines and best practices.
  • Enhanced README.md with better documentation structure and examples.
  • Improved user guide documentation with clearer installation and usage instructions.
  • Fixed typos and improved code documentation throughout the codebase.
  • Enhanced Windows compatibility with normalized path handling in tests.
  • Updated pyproject.toml with improved metadata and dependencies.

Release 0.6.0 August 7, 2024

  • Added MATLAB integration support with improved function visibility in init.py.
  • Enhanced ontology creation and validation with better handling of equivalent classes.
  • Improved schema scripts with migration from hed-schemas repository.
  • Added DataFrame loading/saving optimizations and folder-based operations.
  • Enhanced HED ID validation with more robust checks.
  • Improved sidecar and tabular input utilities with new helper functions.
  • Added support for empty tabular files and whitespace-only files.
  • Enhanced annotation utilities for better MATLAB compatibility.
  • Improved matplotlib compatibility and updated color map access.
  • Fixed various bugs in spreadsheet handling and schema loading.
  • Updated dependencies and improved Python 3.7+ compatibility.
  • Improved code quality with better type handling and error messages.

Release 0.5.0

  • Added JSON schema specification of remodeling commands.
  • Added support for schema that are specified by .tsv files.
  • Added support for embedding schema in an ontology.
  • Added WordCloud visualizations.
  • Added handling of event context and events of temporal extent.

Release 0.4.0 October 27, 2023

  • Refactored the model classes to be based on DataFrame.
  • Added additional command line options for remodeling tools.
  • Restructured summaries for better reporting.
  • Minor refactoring to reduce code complexity.
  • Finalized and automated SPEC tests.
  • Improvements to GitHub automation -- including adding CodeSpell.
  • Improvements to API-Docs.

Release 0.3.1 July 3, 2023

  • Pinned the version of the pydantic and inflect libraries due to conflict.
  • Reorganized JSON output of remodeling summaries so that all of consistent form.
  • Fixed summarize_hed_tags_op so that tags were correctly categorized for output.
  • Minor refactoring to reduce code complexity.
  • BaseInput and Sidecar now raise HedFileError if input could not be read.

Release 0.3.0 June 20, 2023

  • Introduction of partnered schema.
  • Improved error handling for schema validation.
  • Support of Inset tags.
  • Support of curly brace notation in sidecars.
  • Expanded remodeling functionality.
  • Refactoring of models to rely on DataFrames.
  • Expanded unit tests in conjunction with specification tests.

Release 0.2.0 February 14, 2023

  • First release of the HED remodeling tools.
  • Reorganization of branches to reflect stages of development.
  • Updating of schema cache with local copies.
  • Improved schema validation and error messages.
  • First pass at search and summarization.

Release 0.1.0 June 20, 2022

  • First release on PyPI