Version 1.0.0 (2026-07-07) ************************** * *Continuous integration*: Update ci permissions for pushing packages * *Continuous integration*: Pluginify version update * *Continuous integration*: Use vars.runner for runners * *Continuous integration*: Update code base for black 2026 style - see black 26.1.0 release notes for details. * *Continuous integration*: Pypi publish bug fix * *Enhancement*: Migrate obp "expand" functionality to pluginify. * *Enhancement*: Copy over all geoips-based plugin registry code. * *Enhancement*: Pluginify release updates * *Enhancement*: Omit dot files and directories from registry. * *Bug fix*: Fix bug where non-plugin modules are treated like plugins during registry initialization * *Documentation*: Add release note for version 1.19.0 * *Documentation*: Minor updates to pluginify cli and unit tests * *Refactor*: Replace any reference of geoips with pluginify code * *Release process*: Add 1.19.0 release note * *Release updates - open source upload*: Open source upload Continuous integration ====================== Update ci permissions for pushing packages ------------------------------------------ Updates the permissions to allow writing. :: modified: .github/workflows/package-and-publish.yaml Continuous integration ====================== Pluginify version update ------------------------ Updated package version from v0.0.0 to v1.0.0. Needed to push most up to date code to PyPi. :: modified: pluginify/_version.py modified: pyproject.toml Continuous integration ====================== Use vars.runner for runners --------------------------- Ensure we are using standard vars.RUNNER for the new pluginify-specific workflows. Eventually we will want to consolidate this CI with the standard actions in geoips_ci, but for now at least use vars.RUNNER. :: modified: .github/workflows/generate-badges.yaml modified: .github/workflows/lint-and-test.yaml Continuous integration ====================== Update code base for black 2026 style - see black 26.1.0 release notes for details. ----------------------------------------------------------------------------------- Please make sure you update your local Black install as old versions will produce different results. :: modified: my_package/plugins/modules/algorithms/pmw_89test.py Continuous integration ====================== Pypi publish bug fix -------------------- Updated package-and-publish.yaml workflow to recognize dynamic versioning via git tags. Hopefully this will work. :: modified: .github/workflows/package-and-publish.yaml modified: pyproject.toml Enhancement =========== Migrate obp "expand" functionality to pluginify. ------------------------------------------------ Direct copy over of changes made in a GeoIPS PR to the plugin_registry.py file. Changes made added support for pluginify to dynamically 'expand' a workflow if a product, product_default, or workflow was found within a workflow plugin. This is only done if the '_expand' argument is set to True, which is done via the 'geoips expand ' command. :: modified: pluginify/plugin_registry.py Enhancement =========== Copy over all geoips-based plugin registry code. ------------------------------------------------ This PR is a simple copy-over of all plugin registry related code found in GeoIPS. No direct modifications to any of the code, tests, or documentation has been made. :: deleted: tests/integration_tests/test_template_basic_plugin.py deleted: tests/outputs/amsr2.global_clean.89-PCT-Fully-Specified/20200518.062048.gcom-w1.amsr2.89-PCT-Fully-Specified.global.13p55.star.20p0.png deleted: tests/outputs/amsr2.global_clean.89-PCT-Using-Product-Defaults/20200518.062048.gcom-w1.amsr2.89-PCT-Using-Product-Defaults.global.13p55.star.20p0.png deleted: tests/outputs/amsr2.global_clean.color37/20200518.062048.gcom-w1.amsr2.color37.global.18p65.star.20p0.png deleted: tests/outputs/amsr2.tc_clean.89-PCT-Fully-Specified/20200518_073601_IO012020_amsr2_gcom-w1_89-PCT-Fully-Specified_140kts_28p31_1p0-clean.png deleted: tests/outputs/amsr2.tc_clean.89-PCT-Product-Defaults/20200518_073601_IO012020_amsr2_gcom-w1_89-PCT-Product-Defaults_140kts_28p31_1p0-clean.png deleted: tests/outputs/amsr2.tc_clean.89-PCT-Using-Product-Defaults/20200518_073601_IO012020_amsr2_gcom-w1_89-PCT-Using-Product-Defaults_140kts_28p31_1p0-clean.png deleted: tests/outputs/amsr2.tc_clean.89pct/20200518_073601_IO012020_amsr2_gcom-w1_89pct_140kts_28p31_1p0-clean.png deleted: tests/scripts/amsr2.global_clean.89-PCT-Using-Product-Defaults.sh deleted: tests/scripts/amsr2.tc_clean.89-PCT-Fully-Specified.sh deleted: tests/scripts/test_config.sh deleted: tests/scripts/test_config.yaml added: pluginify/errors.py added: pluginify/interfaces/base.py added: pluginify/plugin_registry.py added: pluginify/utils/__init__.py added: pluginify/utils/context_managers.py added: tests/unit_tests/plugin_registries/files/bad/invalid_interfaces.yaml added: tests/unit_tests/plugin_registries/files/bad/missing_lowest_keys.yaml added: tests/unit_tests/plugin_registries/files/bad/missing_plugin_types.yaml added: tests/unit_tests/plugin_registries/files/good/data_fusion.yaml added: tests/unit_tests/plugin_registries/files/good/geoips.yaml added: tests/unit_tests/plugin_registries/files/good/geoips_clavrx.yaml added: tests/unit_tests/plugin_registries/files/good/geoips_plugin_example.yaml added: tests/unit_tests/plugin_registries/files/good/overcast_package.yaml added: tests/unit_tests/plugin_registries/files/good/recenter_tc.yaml added: tests/unit_tests/plugin_registries/files/good/template_basic_plugin.yaml added: tests/unit_tests/plugin_registries/files/good/template_fusion_plugin.yaml added: tests/unit_tests/plugin_registries/test_plugin_registries.py modified: pyproject.toml Enhancement =========== Pluginify release updates ------------------------- Final updates to this package in order to get a stable release up on PyPi. Updates include restructuring of the documentation, adding support for sphinxcontrib-typer for CLI documentation, refactored the CLI to use the 'typer' package instead of argparse, complete removal of any reference to GeoIPS, and implemented new interfaces and dummy plugins of those interfaces in order to run the unit tests without GeoIPS. :: added: docs/source/concepts/architecture/index.rst added: docs/source/concepts/command_line/index.rst added: docs/source/concepts/functionality/index.rst added: docs/source/concepts/index.rst added: docs/source/pluginify_api/index.rst added: pluginify/__init__.py added: pluginify/commandline_typer.py added: pluginify/config.py added: pluginify/interfaces/__init__.py added: pluginify/interfaces/class_based/data_modifiers.py added: pluginify/interfaces/class_based_plugin.py added: pluginify/interfaces/yaml_based/configs.py added: pluginify/plugins/classes/data_modifiers/cuboid.py added: pluginify/plugins/yaml/configs/stucco.yaml added: pluginify/pydantic_models/v1/configs.py added: tests/unit_tests/config/test_config.py added: tests/unit_tests/plugin_registries/files/good/pluginify.yaml deleted: pluginify/commandline.py deleted: tests/unit_tests/plugin_registries/files/good/data_fusion.yaml deleted: tests/unit_tests/plugin_registries/files/good/geoips.yaml deleted: tests/unit_tests/plugin_registries/files/good/geoips_clavrx.yaml deleted: tests/unit_tests/plugin_registries/files/good/geoips_plugin_example.yaml deleted: tests/unit_tests/plugin_registries/files/good/overcast_package.yaml deleted: tests/unit_tests/plugin_registries/files/good/recenter_tc.yaml deleted: tests/unit_tests/plugin_registries/files/good/template_basic_plugin.yaml deleted: tests/unit_tests/plugin_registries/files/good/template_fusion_plugin.yaml modified: pluginify/create_plugin_registries.py modified: pluginify/errors.py modified: pluginify/interfaces/base.py modified: pluginify/plugin_registry.py modified: pluginify/utils/context_managers.py modified: pyproject.toml modified: tests/unit_tests/plugin_registries/files/bad/invalid_interfaces.yaml modified: tests/unit_tests/plugin_registries/files/bad/missing_lowest_keys.yaml modified: tests/unit_tests/plugin_registries/test_plugin_registries.py Enhancement =========== Omit dot files and directories from registry. --------------------------------------------- Updated plugin registry code to ignore any instance of dot files or directories from the plugin registry. This is a minor update to prevent .ipynb files and other irrelevant files from sometimes leaking into the registry and causing problems (such as duplicate keys). :: modified: pluginify/create_plugin_registries.py Bug fix ======= Fix bug where non-plugin modules are treated like plugins during registry initialization ---------------------------------------------------------------------------------------- In GeoIPS 1342 we converted nearly all of the module-based plugins to true class-based plugins. In doing so I discovered a bug where non-plugin modules living in the geoips/plugins/classes/.../ directory caused errors when trying to build the plugin registry. To fix this, I've added a check to see if a module has an 'interface' attribute set to None. If that condition is met, then just ignore the module and continue to the next potential plugin. :: modified: pluginify/create_plugin_registries.py Documentation ============= Add release note for version 1.19.0 ----------------------------------- Release note on release branch to force tag/release, package/publish, and deploy docs. Additionally add any updated files from geoips_ci/sync :: added: docs/source/releases/latest/1.19.0-release-note.yaml modified: geoips_ci/sync updated files Documentation ============= Minor updates to pluginify cli and unit tests --------------------------------------------- Updates to CLI help information and refactoring of plugin registry unit test code. Moved PluginRegistryValidator class to a utility module so packages outside of pluginify could make use of that code. Updating CLI commands help information by providing examples and more context. Removed <3.13 restriction for python. :: added: pluginify/utils/validators.py modified: docs/source/concepts/command_line/index.rst modified: docs/source/concepts/functionality/index.rst modified: pluginify/commandline_typer.py modified: tests/unit_tests/plugin_registries/test_plugin_registries.py modified: README.md modified: pyproject.toml Refactor ======== Replace any reference of geoips with pluginify code --------------------------------------------------- This PR refactors all copied code from GeoIPS to make use of pluginify without any reference to GeoIPS. This way, this package can be used without having to install the large dependency that is GeoIPS. Due to the fact that this PR removed all validation code from pluginify, independent validation routines will need to be set up by packages that hope to use this library for their own plugin infrastructure. :: deleted: docs/source/getting-started/template_instructions.rst deleted: docs/source/my_package_api/index.rst added: docs/source/architecture.rst added: docs/source/command_line.rst added: docs/source/functionality.rst added: docs/source/index.rst added: pluginify/commandline.py modified: .gitignore modified: README.md modified: pluginify/create_plugin_registries.py modified: pluginify/interfaces/base.py modified: pluginify/plugin_registry.py modified: pyproject.toml modified: tests/unit_tests/plugin_registries/files/good/geoips.yaml modified: tests/unit_tests/plugin_registries/test_plugin_registries.py Release process =============== Add 1.19.0 release note ----------------------- Currently tagged internal version 1.18.2. :: added: docs/source/releases/1.19.0/1.19.0-internal-release.yaml Release updates - open source upload ==================================== Open source upload ------------------ This repo updated with current geoips version release :: modified: standard sync files modified: release notes