seppl


Nameseppl JSON
Version 0.2.20 PyPI version JSON
download
home_pagehttps://github.com/waikato-datamining/seppl
SummaryPython3 library for parsing pipeline components with their own options.
upload_time2025-07-15 02:54:15
maintainerNone
docs_urlNone
authorPeter Reutemann
requires_pythonNone
licenseMIT License
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Simple Entry Point PipeLines (seppl). Python library for parsing pipeline components with their own options. 

**seppl** takes a very light-weight approach to avoid encroaching too much on
your code. If you want to, you can add some compatibility checks between the
pipeline components with some additional mixins.
However, the execution of the pipeline (and potentially moving data between
components) is left to you and your code.

Usage and examples can be found here:

`https://github.com/waikato-datamining/seppl <https://github.com/waikato-datamining/seppl>`__


Changelog
=========

0.2.20 (2025-07-15)
-------------------

- the `is_help_requested` method can now pinpoint whether global help or help for a specific
  plugin was requested (requires supplying a list of valid handler names and whether to use
  partial matching)
- the `args_to_objects` method now resolves the plugin name and throws an error if it is
  flagged as unknown


0.2.19 (2025-07-10)
-------------------

- the write methods of `DirectStreamWriter` and `DirectBatchWriter` now have the additional
  `as_bytes` parameter, to indicate whether whether to write as bytes or str


0.2.18 (2025-07-03)
-------------------

- formalized support for direct read from/write to file-like objects with the
  `DirectReader`, `DirectStreamWriter`, `DirectBatchWriter` mixins


0.2.17 (2025-06-26)
-------------------

- replaced deprecated `pkg_resources` with `importlib.metadata`-based approach
  (based on: https://packaging.python.org/en/latest/guides/creating-and-discovering-plugins/#using-package-metadata)


0.2.16 (2025-04-08)
-------------------

- filters and writers can be skipped now via the `--skip` flag, making it easy for external
  scripts to enable/disable pipeline components


0.2.15 (2025-03-28)
-------------------

- added support to the `seppl.io.Splitter` class for keeping item/sample groups together via a `split_group`
  regular expression
- backported helper methods for `seppl.io.Writer` classes for managing splitting


0.2.14 (2025-03-24)
-------------------

- added `resume_from` parameter to `seppl.io.locate_files` method which allows to skip all
  files preceding this glob


0.2.13 (2025-03-14)
-------------------

- the `resolve_handler` and `split_args` methods now have the `partial` boolean
  parameter which determines whether partial matches are accepted or not; off
  by default as it can interfere with parameters from plugins


0.2.12 (2025-03-13)
-------------------

- moved placeholder functionality from `seppl` to `seppl.placeholders`
- `load_user_defined_placeholders` now ignores lines that start with #


0.2.11 (2025-03-13)
-------------------

- added support for placeholders, which can be expanded via the `Session` object
- plugins supporting placeholders should import the `PlaceholderSupporter` indicator
  mixin for automatically adding help on placeholders to the help screen; plugins
  that support placeholders based on the current input should import the
  `InputBasedPlaceholderSupporter` indicator mixin
- placeholder-supporting plugins can use the `placeholder_list` method in their argparse options
- the `load_user_defined_placeholders` method allows incorporating custom placeholders for directories


0.2.10 (2025-02-11)
-------------------

- added alias support to the `ClassRegistry` class
- added method `is_alias(...)` and property `all_aliases` to the `Registry` and `ClassRegistry` classes
- extended the `enumerate_plugins` method to allow flagging of aliases (default: `*`)


0.2.9 (2025-01-24)
------------------

- added support for using partial handler/plugin names (as long as they are unique)
- added experimental support for aliases with `AliasSupporter` mixin


0.2.8 (2024-12-20)
------------------

- added `setuptools` as dependency


0.2.7 (2024-08-29)
------------------

- the `seppl.io.locate_files` method can support recursive globs now (default is no)


0.2.6 (2024-07-01)
------------------

- reworked the `execute` method, properly distinguishing between stream/batch mode now


0.2.5 (2024-06-18)
------------------

- the `seppl.io.locate_files` method can take a default glob now, which gets appended
  to inputs that point to directories


0.2.4 (2024-05-06)
------------------

- reworked excluding of classes


0.2.3 (2024-05-03)
------------------

- `_determine_from_entry_points` method of `ClassListerRegistry` class now checks whether
  there the attributes tuple has any elements (i.e., whether the optional `:function_name`
  was provided)
- message `X records processed in total` now only output at the end


0.2.2 (2024-05-02)
------------------

- `ClassListerRegistry` now safely removes any excluded class listers before locating the classes


0.2.1 (2024-05-02)
------------------

- `ClassListerRegistry` now removes any excluded class listers before locating the classes


0.2.0 (2024-05-01)
------------------

- the `execute` method no longer counts `None` items returned by the reader
- added the `seppl.ClassListerRegistry` class that offers a more convenient way of
  discovering classes via a function that returns a dictionary of superclasses and
  the associated modules to inspect; with this approach only a single entry_point
  has to be defined in `setup.py`, pointing to the class lister module/function


0.1.3 (2024-02-29)
------------------

- added the dummy type `AnyData` which is used by default in the `check_compatibility`
  method for a *match all* (ie can be used for general purpose plugins)


0.1.2 (2024-02-22)
------------------

- added methods `escape_args` and `unescape_args` (and corresponding command-line
  tools `seppl-escape` and `seppl-unescape`) for escaping/unescaping unicode
  characters in command-lines to make them copyable across ssh sessions


0.1.1 (2024-02-07)
------------------

- `check_compatibility` method now also checks whether generated class is
  subclass of accepted classes, to allow for broader `accepts()` methods
- `gcd` method now creates a copy of the integer ratio list before processing it


0.1.0 (2024-02-05)
------------------

- added basic support for meta-data: MetaDataHandler, get_metadata, add_metadata
- added support for splitting sequences using supplied (int) split ratios
- added session support: Session, SessionHandler
- added I/O super classes: Reader, Writer, StreamWriter, BatchWriter, Filter, MultiFilter
- added support for executing I/O pipelines: Reader, [Filter...], [Writer]


0.0.11 (2023-11-27)
-------------------

- the `DEFAULT` placeholder in the environment variable listing the modules now
  gets expanded to the default modules, making it easier to specify modules
  in derived projects
- added `excluded_modules` and `excluded_env_modules` to `Registry` class
  initializer to allow user to specify modules (explicit list or list from env
  variable) to be excluded from being registered; useful when outputting
  help for derived modules that shouldn't output all the base plugins as well.


0.0.10 (2023-11-15)
-------------------

- the registry now inspects modules when environment modules are present even when
  it already found plugins (eg default ones)


0.0.9 (2023-11-15)
------------------

- the registry now inspects modules when custom modules were supplied even when
  it already found plugins (eg default ones)


0.0.8 (2023-11-10)
------------------

- suppressing help output for unknown args now


0.0.7 (2023-11-09)
------------------

- `Plugin.parse_args` now returns any unparsed arguments that were found
- the `args_to_objects` method now raises an Exception by default when
  unknown arguments are encountered for a plugin (can be controlled with
  the `allow_unknown_args` parameter)


0.0.6 (2023-10-11)
------------------

- enforcement of uniqueness is now checking whether the class names differ
  before raising an exception.


0.0.5 (2023-10-10)
------------------

- added `OutputProducer` and `InputConsumer` mixins that can be use for checking
  the compatibility between pipeline components using the `check_compatibility`
  function.


0.0.4 (2023-10-09)
------------------

- added support for `dynamic` mode which only requires listing the superclass of a plugin
  and the module in which to look for these plugins (slower, but more convenient)


0.0.3 (2023-10-05)
------------------

- added `generate_entry_points` helper method to easily generate the `entry_points` section
  for plugins, rather than manually maintaining it
- added `generate_help` and `generate_plugin_usage` methods for generating documentation
  for plugins


0.0.2 (2023-10-04)
------------------

- removed old, logging-related code from Plugin class
- added `args_to_objects` to quickly instantiate plugins from parsed arguments
- added example to README.md and example library (https://github.com/waikato-datamining/seppl-example)


0.0.1 (2023-09-28)
------------------

- initial release


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/waikato-datamining/seppl",
    "name": "seppl",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "Peter Reutemann",
    "author_email": "fracpete@waikato.ac.nz",
    "download_url": "https://files.pythonhosted.org/packages/f7/c1/f0a42d04ccc157f39965258a3d2ef188cb11145cff2c25c74001fe54192f/seppl-0.2.20.tar.gz",
    "platform": null,
    "description": "Simple Entry Point PipeLines (seppl). Python library for parsing pipeline components with their own options. \n\n**seppl** takes a very light-weight approach to avoid encroaching too much on\nyour code. If you want to, you can add some compatibility checks between the\npipeline components with some additional mixins.\nHowever, the execution of the pipeline (and potentially moving data between\ncomponents) is left to you and your code.\n\nUsage and examples can be found here:\n\n`https://github.com/waikato-datamining/seppl <https://github.com/waikato-datamining/seppl>`__\n\n\nChangelog\n=========\n\n0.2.20 (2025-07-15)\n-------------------\n\n- the `is_help_requested` method can now pinpoint whether global help or help for a specific\n  plugin was requested (requires supplying a list of valid handler names and whether to use\n  partial matching)\n- the `args_to_objects` method now resolves the plugin name and throws an error if it is\n  flagged as unknown\n\n\n0.2.19 (2025-07-10)\n-------------------\n\n- the write methods of `DirectStreamWriter` and `DirectBatchWriter` now have the additional\n  `as_bytes` parameter, to indicate whether whether to write as bytes or str\n\n\n0.2.18 (2025-07-03)\n-------------------\n\n- formalized support for direct read from/write to file-like objects with the\n  `DirectReader`, `DirectStreamWriter`, `DirectBatchWriter` mixins\n\n\n0.2.17 (2025-06-26)\n-------------------\n\n- replaced deprecated `pkg_resources` with `importlib.metadata`-based approach\n  (based on: https://packaging.python.org/en/latest/guides/creating-and-discovering-plugins/#using-package-metadata)\n\n\n0.2.16 (2025-04-08)\n-------------------\n\n- filters and writers can be skipped now via the `--skip` flag, making it easy for external\n  scripts to enable/disable pipeline components\n\n\n0.2.15 (2025-03-28)\n-------------------\n\n- added support to the `seppl.io.Splitter` class for keeping item/sample groups together via a `split_group`\n  regular expression\n- backported helper methods for `seppl.io.Writer` classes for managing splitting\n\n\n0.2.14 (2025-03-24)\n-------------------\n\n- added `resume_from` parameter to `seppl.io.locate_files` method which allows to skip all\n  files preceding this glob\n\n\n0.2.13 (2025-03-14)\n-------------------\n\n- the `resolve_handler` and `split_args` methods now have the `partial` boolean\n  parameter which determines whether partial matches are accepted or not; off\n  by default as it can interfere with parameters from plugins\n\n\n0.2.12 (2025-03-13)\n-------------------\n\n- moved placeholder functionality from `seppl` to `seppl.placeholders`\n- `load_user_defined_placeholders` now ignores lines that start with #\n\n\n0.2.11 (2025-03-13)\n-------------------\n\n- added support for placeholders, which can be expanded via the `Session` object\n- plugins supporting placeholders should import the `PlaceholderSupporter` indicator\n  mixin for automatically adding help on placeholders to the help screen; plugins\n  that support placeholders based on the current input should import the\n  `InputBasedPlaceholderSupporter` indicator mixin\n- placeholder-supporting plugins can use the `placeholder_list` method in their argparse options\n- the `load_user_defined_placeholders` method allows incorporating custom placeholders for directories\n\n\n0.2.10 (2025-02-11)\n-------------------\n\n- added alias support to the `ClassRegistry` class\n- added method `is_alias(...)` and property `all_aliases` to the `Registry` and `ClassRegistry` classes\n- extended the `enumerate_plugins` method to allow flagging of aliases (default: `*`)\n\n\n0.2.9 (2025-01-24)\n------------------\n\n- added support for using partial handler/plugin names (as long as they are unique)\n- added experimental support for aliases with `AliasSupporter` mixin\n\n\n0.2.8 (2024-12-20)\n------------------\n\n- added `setuptools` as dependency\n\n\n0.2.7 (2024-08-29)\n------------------\n\n- the `seppl.io.locate_files` method can support recursive globs now (default is no)\n\n\n0.2.6 (2024-07-01)\n------------------\n\n- reworked the `execute` method, properly distinguishing between stream/batch mode now\n\n\n0.2.5 (2024-06-18)\n------------------\n\n- the `seppl.io.locate_files` method can take a default glob now, which gets appended\n  to inputs that point to directories\n\n\n0.2.4 (2024-05-06)\n------------------\n\n- reworked excluding of classes\n\n\n0.2.3 (2024-05-03)\n------------------\n\n- `_determine_from_entry_points` method of `ClassListerRegistry` class now checks whether\n  there the attributes tuple has any elements (i.e., whether the optional `:function_name`\n  was provided)\n- message `X records processed in total` now only output at the end\n\n\n0.2.2 (2024-05-02)\n------------------\n\n- `ClassListerRegistry` now safely removes any excluded class listers before locating the classes\n\n\n0.2.1 (2024-05-02)\n------------------\n\n- `ClassListerRegistry` now removes any excluded class listers before locating the classes\n\n\n0.2.0 (2024-05-01)\n------------------\n\n- the `execute` method no longer counts `None` items returned by the reader\n- added the `seppl.ClassListerRegistry` class that offers a more convenient way of\n  discovering classes via a function that returns a dictionary of superclasses and\n  the associated modules to inspect; with this approach only a single entry_point\n  has to be defined in `setup.py`, pointing to the class lister module/function\n\n\n0.1.3 (2024-02-29)\n------------------\n\n- added the dummy type `AnyData` which is used by default in the `check_compatibility`\n  method for a *match all* (ie can be used for general purpose plugins)\n\n\n0.1.2 (2024-02-22)\n------------------\n\n- added methods `escape_args` and `unescape_args` (and corresponding command-line\n  tools `seppl-escape` and `seppl-unescape`) for escaping/unescaping unicode\n  characters in command-lines to make them copyable across ssh sessions\n\n\n0.1.1 (2024-02-07)\n------------------\n\n- `check_compatibility` method now also checks whether generated class is\n  subclass of accepted classes, to allow for broader `accepts()` methods\n- `gcd` method now creates a copy of the integer ratio list before processing it\n\n\n0.1.0 (2024-02-05)\n------------------\n\n- added basic support for meta-data: MetaDataHandler, get_metadata, add_metadata\n- added support for splitting sequences using supplied (int) split ratios\n- added session support: Session, SessionHandler\n- added I/O super classes: Reader, Writer, StreamWriter, BatchWriter, Filter, MultiFilter\n- added support for executing I/O pipelines: Reader, [Filter...], [Writer]\n\n\n0.0.11 (2023-11-27)\n-------------------\n\n- the `DEFAULT` placeholder in the environment variable listing the modules now\n  gets expanded to the default modules, making it easier to specify modules\n  in derived projects\n- added `excluded_modules` and `excluded_env_modules` to `Registry` class\n  initializer to allow user to specify modules (explicit list or list from env\n  variable) to be excluded from being registered; useful when outputting\n  help for derived modules that shouldn't output all the base plugins as well.\n\n\n0.0.10 (2023-11-15)\n-------------------\n\n- the registry now inspects modules when environment modules are present even when\n  it already found plugins (eg default ones)\n\n\n0.0.9 (2023-11-15)\n------------------\n\n- the registry now inspects modules when custom modules were supplied even when\n  it already found plugins (eg default ones)\n\n\n0.0.8 (2023-11-10)\n------------------\n\n- suppressing help output for unknown args now\n\n\n0.0.7 (2023-11-09)\n------------------\n\n- `Plugin.parse_args` now returns any unparsed arguments that were found\n- the `args_to_objects` method now raises an Exception by default when\n  unknown arguments are encountered for a plugin (can be controlled with\n  the `allow_unknown_args` parameter)\n\n\n0.0.6 (2023-10-11)\n------------------\n\n- enforcement of uniqueness is now checking whether the class names differ\n  before raising an exception.\n\n\n0.0.5 (2023-10-10)\n------------------\n\n- added `OutputProducer` and `InputConsumer` mixins that can be use for checking\n  the compatibility between pipeline components using the `check_compatibility`\n  function.\n\n\n0.0.4 (2023-10-09)\n------------------\n\n- added support for `dynamic` mode which only requires listing the superclass of a plugin\n  and the module in which to look for these plugins (slower, but more convenient)\n\n\n0.0.3 (2023-10-05)\n------------------\n\n- added `generate_entry_points` helper method to easily generate the `entry_points` section\n  for plugins, rather than manually maintaining it\n- added `generate_help` and `generate_plugin_usage` methods for generating documentation\n  for plugins\n\n\n0.0.2 (2023-10-04)\n------------------\n\n- removed old, logging-related code from Plugin class\n- added `args_to_objects` to quickly instantiate plugins from parsed arguments\n- added example to README.md and example library (https://github.com/waikato-datamining/seppl-example)\n\n\n0.0.1 (2023-09-28)\n------------------\n\n- initial release\n\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Python3 library for parsing pipeline components with their own options.",
    "version": "0.2.20",
    "project_urls": {
        "Homepage": "https://github.com/waikato-datamining/seppl"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f7c1f0a42d04ccc157f39965258a3d2ef188cb11145cff2c25c74001fe54192f",
                "md5": "778d96fc25a948b05a96989bf91fe3b7",
                "sha256": "c1b950cde94fe83661ced95c374a089a3397b8b5f44b0f448477c13c11bcd452"
            },
            "downloads": -1,
            "filename": "seppl-0.2.20.tar.gz",
            "has_sig": false,
            "md5_digest": "778d96fc25a948b05a96989bf91fe3b7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 33871,
            "upload_time": "2025-07-15T02:54:15",
            "upload_time_iso_8601": "2025-07-15T02:54:15.445416Z",
            "url": "https://files.pythonhosted.org/packages/f7/c1/f0a42d04ccc157f39965258a3d2ef188cb11145cff2c25c74001fe54192f/seppl-0.2.20.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-15 02:54:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "waikato-datamining",
    "github_project": "seppl",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "seppl"
}
        
Elapsed time: 1.10612s