Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci_windows.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ on:
pull_request:
branches: ["main"]

permissions:
contents: read

jobs:
build:
strategy:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/claude-code-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ jobs:

- name: Run Claude Code Review
id: claude-review
if: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN != '' }}
continue-on-error: true
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/spec_tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ on:
pull_request:
branches: ["*"]

permissions:
contents: read

jobs:
build:
strategy:
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/test_installer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ on:
pull_request:
branches: ["main"]

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
Expand Down
135 changes: 131 additions & 4 deletions docs/api/tools.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,30 @@ EventManager
:undoc-members:
:show-inheritance:

EventChecker
~~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.event_checker.EventChecker
:members:
:undoc-members:
:show-inheritance:

EventsChecker
~~~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.event_checker.EventsChecker
:members:
:undoc-members:
:show-inheritance:

EventsSummary
~~~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.events_summary.EventsSummary
:members:
:undoc-members:
:show-inheritance:

HedTagManager
~~~~~~~~~~~~~

Expand All @@ -22,6 +46,22 @@ HedTagManager
:undoc-members:
:show-inheritance:

HedTagCount
~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.hed_tag_counts.HedTagCount
:members:
:undoc-members:
:show-inheritance:

HedTagCounts
~~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.hed_tag_counts.HedTagCounts
:members:
:undoc-members:
:show-inheritance:

HedTypeManager
~~~~~~~~~~~~~~

Expand All @@ -30,6 +70,46 @@ HedTypeManager
:undoc-members:
:show-inheritance:

HedType
~~~~~~~

.. autoclass:: hed.tools.analysis.hed_type.HedType
:members:
:undoc-members:
:show-inheritance:

HedTypeDefs
~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.hed_type_defs.HedTypeDefs
:members:
:undoc-members:
:show-inheritance:

HedTypeFactors
~~~~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.hed_type_factors.HedTypeFactors
:members:
:undoc-members:
:show-inheritance:

HedTypeCount
~~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.hed_type_counts.HedTypeCount
:members:
:undoc-members:
:show-inheritance:

HedTypeCounts
~~~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.hed_type_counts.HedTypeCounts
:members:
:undoc-members:
:show-inheritance:

TabularSummary
~~~~~~~~~~~~~~

Expand All @@ -38,10 +118,10 @@ TabularSummary
:undoc-members:
:show-inheritance:

HedType
~~~~~~~
ColumnNameSummary
~~~~~~~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.hed_type.HedType
.. autoclass:: hed.tools.analysis.column_name_summary.ColumnNameSummary
:members:
:undoc-members:
:show-inheritance:
Expand All @@ -54,6 +134,29 @@ FileDictionary
:undoc-members:
:show-inheritance:

KeyMap
~~~~~~

.. autoclass:: hed.tools.analysis.key_map.KeyMap
:members:
:undoc-members:
:show-inheritance:

TemporalEvent
~~~~~~~~~~~~~

.. autoclass:: hed.tools.analysis.temporal_event.TemporalEvent
:members:
:undoc-members:
:show-inheritance:

Annotation utilities
~~~~~~~~~~~~~~~~~~~~

.. automodule:: hed.tools.analysis.annotation_util
:members:
:undoc-members:

BIDS tools
----------

Expand Down Expand Up @@ -101,5 +204,29 @@ BIDS utilities
~~~~~~~~~~~~~~

.. automodule:: hed.tools.bids.bids_util
:members: parse_bids_filename
:members:
:undoc-members:

Utility functions
-----------------

DataFrame utilities
~~~~~~~~~~~~~~~~~~~

.. automodule:: hed.tools.util.data_util
:members:
:undoc-members:

File/IO utilities
~~~~~~~~~~~~~~~~~

.. automodule:: hed.tools.util.io_util
:members:
:undoc-members:

Schema utilities
~~~~~~~~~~~~~~~~

.. automodule:: hed.tools.util.schema_util
:members:
:undoc-members:
62 changes: 59 additions & 3 deletions docs/api/validator.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,69 @@ OnsetValidator
:undoc-members:
:show-inheritance:

Validation utilities
--------------------

ReservedChecker
~~~~~~~~~~~~~~~

.. autoclass:: hed.validator.reserved_checker.ReservedChecker
:members:
:undoc-members:
:show-inheritance:

Validator utilities
-------------------

CharValidator
~~~~~~~~~~~~~

.. autoclass:: hed.validator.util.char_util.CharValidator
:members:
:undoc-members:
:show-inheritance:

CharRexValidator
~~~~~~~~~~~~~~~~

.. autoclass:: hed.validator.util.char_util.CharRexValidator
:members:
:undoc-members:
:show-inheritance:

UnitValueValidator
~~~~~~~~~~~~~~~~~~

.. autoclass:: hed.validator.util.class_util.UnitValueValidator
:members:
:undoc-members:
:show-inheritance:

DuplicateChecker
~~~~~~~~~~~~~~~~

.. autoclass:: hed.validator.util.dup_util.DuplicateChecker
:members:
:undoc-members:
:show-inheritance:

GroupValidator
~~~~~~~~~~~~~~

.. autoclass:: hed.validator.util.group_util.GroupValidator
:members:
:undoc-members:
:show-inheritance:

StringValidator
~~~~~~~~~~~~~~~

.. autoclass:: hed.validator.util.string_util.StringValidator
:members:
:undoc-members:
:show-inheritance:

TagValidator
~~~~~~~~~~~~

.. autoclass:: hed.validator.util.tag_util.TagValidator
:members:
:undoc-members:
:show-inheritance:
1 change: 1 addition & 0 deletions hed/scripts/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Legacy CLI entry point scripts (deprecated — prefer the ``hedpy`` CLI)."""
8 changes: 8 additions & 0 deletions hed/scripts/add_hed_ids.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""CLI script to add missing HED IDs to a schema in the hed-schemas repository."""

from hed.scripts.schema_script_util import get_prerelease_path
from hed.scripts.hed_convert_schema import convert_and_update
import argparse
Expand All @@ -6,6 +8,12 @@

# Slightly tweaked version of hed_convert_schema.py with a new main function to allow different parameters.
def main():
"""Entry point: parse arguments and add HED IDs to the specified schema version.

Returns:
int: 0 on success, non-zero on failure.

"""
parser = argparse.ArgumentParser(description="Add hed ids to a specific schema.")
parser.add_argument("repo_path", help="The location of the hed-schemas directory")
parser.add_argument("schema_name", help='The name of the schema("standard" for standard schema) to modify')
Expand Down
11 changes: 11 additions & 0 deletions hed/scripts/hed_convert_schema.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""CLI script to validate and convert HED schema files across formats (XML, MediaWiki, TSV, JSON)."""

from hed.scripts.schema_script_util import sort_base_schemas, validate_all_schemas, add_extension
from hed.schema.schema_io import load_dataframes, save_dataframes
from hed.schema.schema_io.hed_id_util import update_dataframes_from_schema
Expand Down Expand Up @@ -76,6 +78,15 @@ def convert_and_update(filenames, set_ids):


def main(arg_list=None):
"""Entry point: parse arguments and convert/validate the named schema files.

Parameters:
arg_list (list[str] or None): Argument list for testing; uses sys.argv if None.

Returns:
int: 0 on success, non-zero if validation fails.

"""
parser = argparse.ArgumentParser(description="Update other schema formats based on the changed one.")
parser.add_argument("filenames", nargs="*", help="List of files to process")
parser.add_argument("--set-ids", action="store_true", help="Add missing HED ids")
Expand Down
2 changes: 2 additions & 0 deletions hed/scripts/schema_script_util.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Shared utilities for schema validation, sorting, and format conversion used by CLI scripts."""

import os.path
from collections import defaultdict
from hed.schema import from_string, load_schema, from_dataframes
Expand Down
19 changes: 19 additions & 0 deletions hed/scripts/validate_bids.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,15 @@ def format_final_report(issue_list):


def main(arg_list=None):
"""Entry point: parse arguments, validate the BIDS dataset, and print a summary report.

Parameters:
arg_list (list[str] or None): Argument list for testing; uses sys.argv if None.

Returns:
int: 0 if no issues found, 1 if validation issues are present.

"""
# Create the argument parser
parser = get_parser()

Expand Down Expand Up @@ -231,6 +240,16 @@ def main(arg_list=None):


def validate_dataset(args):
"""Run HED validation on the BIDS dataset described by args and return the issue list.

Parameters:
args (argparse.Namespace): Parsed CLI arguments including data_path, suffixes, and
check_for_warnings.

Returns:
list[dict]: Validation issue dictionaries (empty list if no issues).

"""
logger = logging.getLogger("validate_bids")
logger.info(f"Data directory: {args.data_path}")
logger.info(f"HEDTools version: {__version__}")
Expand Down
11 changes: 11 additions & 0 deletions hed/scripts/validate_schemas.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""CLI script to validate HED schema files for compliance and format consistency."""

import sys
from hed.scripts.schema_script_util import validate_all_schemas, sort_base_schemas
from hed.errors import get_printable_issue_string
Expand All @@ -20,6 +22,15 @@ def get_parser():


def main(arg_list=None):
"""Entry point: parse arguments and validate the specified schema files.

Parameters:
arg_list (list[str] or None): Argument list for testing; uses sys.argv if None.

Returns:
int: 0 if all schemas are valid, 1 if any issues are found.

"""
parser = get_parser()
args = parser.parse_args(arg_list)

Expand Down
Loading
Loading