fmetools


Namefmetools JSON
Version 0.9.1 PyPI version JSON
download
home_pagehttps://github.com/safesoftware/fmetools
SummaryTools for extending Safe Software's FME using Python.
upload_time2024-03-12 22:47:36
maintainer
docs_urlNone
authorSafe Software Inc.
requires_python!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7
licenseBSD
keywords fme fmeobjects
VCS
bugtrack_url
requirements build pytest pytest-vcr hypothesis ruff
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # fmetools: helpers for FME Python

_fmetools_ is a Python library that streamlines plugin development for [Safe Software's FME][fme].
Developers should use fmetools as a foundation to create plugins such as transformers.
It's part of the recommended toolchain for developing FME Packages to share on [FME Hub][hub].

fmetools is built on top of the [Python `fmeobjects` API][fmeobjects] that's included with FME,
and requires an FME installation with Python 3.7 or newer.

## Getting started

The best way to get started with fmetools is through the tutorials in the [FME Packages SDK Guide][fpkg-sdk].
The [Hello World package tutorial][hello world] guides you through creating a simple FME Package that uses fmetools.

The fmetools API reference is available at https://docs.safe.com/fme/html/fmetools/.

[fme]: https://safe.com
[hub]: https://hub.safe.com
[fpkg-sdk]: https://docs.safe.com/fme/html/fpkg-sdk/
[hello world]: https://docs.safe.com/fme/html/fpkg-sdk/hello-world-package/
[vendorize]: https://pypi.org/project/vendorize/
[fmeobjects]: https://docs.safe.com/fme/html/fmepython/index.html


## Installation

fmetools is distributed as a wheel on [PyPI](https://pypi.org/project/fmetools/),
but it should _not_ be installed with `pip install`.
Instead, developers include a copy of fmetools with their FME Package.
This process is called vendorizing, and can be done using the [vendorize][vendorize] tool on PyPI.
The [Hello World package tutorial][hello world] covers this topic.

FME does not include fmetools, so packages that use it must include it themselves.

## For maintainers of fmetools

1. Start with a clean environment
2. Install dev requirements using `pip install -r requirements.txt`
3. Do a dev install using `pip install --editable .`
4. Run tests using `pytest`
5. Build wheel using `python -m build --wheel`
6. To build docs: `sphinx-build -M html docs docs/_build`

# fmetools changes

## 0.9.1

* Allow ScriptedSelectionCallback subclasses to omit constructor.

## 0.9.0

* Add support for multiple input tags. Requires FME 2024.0+.

## 0.8.0

* Add support for multiple output tags. Requires FME 2024.0+.

## 0.7.4

* Update doc for `fmetools.paramparsing` to note FME 2024 requirement
  when running under FME Flow.
* Add Scripted Selection API

## 0.7.3

* Add links to HTML docs.

## 0.7.2

* Relax FME version requirements from 0.7.0 release.

## 0.7.1

* Fix type annotations when using Python 3.8 and earlier.

## 0.7.0

* Add HTML docs and expanded existing docstrings.
* Clarify which components are considered part of the public API.
* Add type annotations.
* `fmetools.plugins.FMEEnhancedTransformer`: Support Bulk Mode by default.

## 0.6.0

* Rename `fmetools.plugins.FMETransformer` to `FMEBaseTransformer`
  to avoid potential confusion with `fmeobjects.FMETransformer`.
  Instantiating `fmetools.plugins.FMETransformer` now emits a warning,
  and will be removed in a future release.
* `fmetools.paramparsing.TransformerParameterParser`: Support FME >= b23264.

## 0.5.1

* Add `fmetools.paramparsing.TransformerParameterParser`: a class for parsing
  internal attribute values from transformer parameters. Requires FME 2023.
* Require Python 3.7+.

## 0.4.4

* Fixed error when parsing custom proxy URLs starting with 'http'

## 0.4.3

* Support new GUI types `CHECKBOX` and `CHOICE`.

## 0.4.2

* Prepare for PyPI release.

## 0.4.0

* Support new GUI types `ACTIVECHOICE_LOOKUP` and `NAMED_CONNECTION`.
* Int and float GUI types: parse empty string to None instead of raising ValueError.

## 0.3.1

* Fix FMESession leak in `parsers.parse_def_line()`.

## 0.3.0

* Add `guiparams` module, for parsing GUI parameter values.
  This initial implementation supports just a small subset of GUI types.

## 0.2.0

* Remove `FMEEnhancedTransformer.keyword` and replace its usages with `FMETransformer.factory_name`.
* Use relative imports, to support copy-paste vendorization.

## 0.1.4

* Add `hasSupportFor()` to `plugins.FMESimplifiedReader` to allow for reader bulk mode support.

## 0.1.3

* Add `webservices.set_session_auth_from_named_connection()` to honour SSL verification settings on Named Connections.

## 0.1.2

* Add `has_support_for()` to `plugins.FMETransformer` to enable transformer bulk mode support.

## 0.1.1

* Maintain Python 2.7 support.

## 0.1.0

* Respect web connection token placement settings.

## 0.0.2

* Added localization utilities.
* Updated logging infrastructure.

## 0.0.1

* Initial packaging of utility functions.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/safesoftware/fmetools",
    "name": "fmetools",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7",
    "maintainer_email": "",
    "keywords": "FME fmeobjects",
    "author": "Safe Software Inc.",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/13/b4/f81f138162629f24a6a0becfd1bf35ffb4a655065b69b4dae7a77ff2ae11/fmetools-0.9.1.tar.gz",
    "platform": null,
    "description": "# fmetools: helpers for FME Python\n\n_fmetools_ is a Python library that streamlines plugin development for [Safe Software's FME][fme].\nDevelopers should use fmetools as a foundation to create plugins such as transformers.\nIt's part of the recommended toolchain for developing FME Packages to share on [FME Hub][hub].\n\nfmetools is built on top of the [Python `fmeobjects` API][fmeobjects] that's included with FME,\nand requires an FME installation with Python 3.7 or newer.\n\n## Getting started\n\nThe best way to get started with fmetools is through the tutorials in the [FME Packages SDK Guide][fpkg-sdk].\nThe [Hello World package tutorial][hello world] guides you through creating a simple FME Package that uses fmetools.\n\nThe fmetools API reference is available at https://docs.safe.com/fme/html/fmetools/.\n\n[fme]: https://safe.com\n[hub]: https://hub.safe.com\n[fpkg-sdk]: https://docs.safe.com/fme/html/fpkg-sdk/\n[hello world]: https://docs.safe.com/fme/html/fpkg-sdk/hello-world-package/\n[vendorize]: https://pypi.org/project/vendorize/\n[fmeobjects]: https://docs.safe.com/fme/html/fmepython/index.html\n\n\n## Installation\n\nfmetools is distributed as a wheel on [PyPI](https://pypi.org/project/fmetools/),\nbut it should _not_ be installed with `pip install`.\nInstead, developers include a copy of fmetools with their FME Package.\nThis process is called vendorizing, and can be done using the [vendorize][vendorize] tool on PyPI.\nThe [Hello World package tutorial][hello world] covers this topic.\n\nFME does not include fmetools, so packages that use it must include it themselves.\n\n## For maintainers of fmetools\n\n1. Start with a clean environment\n2. Install dev requirements using `pip install -r requirements.txt`\n3. Do a dev install using `pip install --editable .`\n4. Run tests using `pytest`\n5. Build wheel using `python -m build --wheel`\n6. To build docs: `sphinx-build -M html docs docs/_build`\n\n# fmetools changes\n\n## 0.9.1\n\n* Allow ScriptedSelectionCallback subclasses to omit constructor.\n\n## 0.9.0\n\n* Add support for multiple input tags. Requires FME 2024.0+.\n\n## 0.8.0\n\n* Add support for multiple output tags. Requires FME 2024.0+.\n\n## 0.7.4\n\n* Update doc for `fmetools.paramparsing` to note FME 2024 requirement\n  when running under FME Flow.\n* Add Scripted Selection API\n\n## 0.7.3\n\n* Add links to HTML docs.\n\n## 0.7.2\n\n* Relax FME version requirements from 0.7.0 release.\n\n## 0.7.1\n\n* Fix type annotations when using Python 3.8 and earlier.\n\n## 0.7.0\n\n* Add HTML docs and expanded existing docstrings.\n* Clarify which components are considered part of the public API.\n* Add type annotations.\n* `fmetools.plugins.FMEEnhancedTransformer`: Support Bulk Mode by default.\n\n## 0.6.0\n\n* Rename `fmetools.plugins.FMETransformer` to `FMEBaseTransformer`\n  to avoid potential confusion with `fmeobjects.FMETransformer`.\n  Instantiating `fmetools.plugins.FMETransformer` now emits a warning,\n  and will be removed in a future release.\n* `fmetools.paramparsing.TransformerParameterParser`: Support FME >= b23264.\n\n## 0.5.1\n\n* Add `fmetools.paramparsing.TransformerParameterParser`: a class for parsing\n  internal attribute values from transformer parameters. Requires FME 2023.\n* Require Python 3.7+.\n\n## 0.4.4\n\n* Fixed error when parsing custom proxy URLs starting with 'http'\n\n## 0.4.3\n\n* Support new GUI types `CHECKBOX` and `CHOICE`.\n\n## 0.4.2\n\n* Prepare for PyPI release.\n\n## 0.4.0\n\n* Support new GUI types `ACTIVECHOICE_LOOKUP` and `NAMED_CONNECTION`.\n* Int and float GUI types: parse empty string to None instead of raising ValueError.\n\n## 0.3.1\n\n* Fix FMESession leak in `parsers.parse_def_line()`.\n\n## 0.3.0\n\n* Add `guiparams` module, for parsing GUI parameter values.\n  This initial implementation supports just a small subset of GUI types.\n\n## 0.2.0\n\n* Remove `FMEEnhancedTransformer.keyword` and replace its usages with `FMETransformer.factory_name`.\n* Use relative imports, to support copy-paste vendorization.\n\n## 0.1.4\n\n* Add `hasSupportFor()` to `plugins.FMESimplifiedReader` to allow for reader bulk mode support.\n\n## 0.1.3\n\n* Add `webservices.set_session_auth_from_named_connection()` to honour SSL verification settings on Named Connections.\n\n## 0.1.2\n\n* Add `has_support_for()` to `plugins.FMETransformer` to enable transformer bulk mode support.\n\n## 0.1.1\n\n* Maintain Python 2.7 support.\n\n## 0.1.0\n\n* Respect web connection token placement settings.\n\n## 0.0.2\n\n* Added localization utilities.\n* Updated logging infrastructure.\n\n## 0.0.1\n\n* Initial packaging of utility functions.\n",
    "bugtrack_url": null,
    "license": "BSD",
    "summary": "Tools for extending Safe Software's FME using Python.",
    "version": "0.9.1",
    "project_urls": {
        "Documentation": "https://docs.safe.com/fme/html/fmetools/",
        "Homepage": "https://github.com/safesoftware/fmetools"
    },
    "split_keywords": [
        "fme",
        "fmeobjects"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1de95d4c2101614390c2170779256933efb14ce906b68bf3dfef4b93339c4a08",
                "md5": "155c38a12cdd21a88c832977959213d4",
                "sha256": "ec62b4e51f6df6ac2f77a9786fb13fc18667f9f032a746b0cdcb84b9c11f760f"
            },
            "downloads": -1,
            "filename": "fmetools-0.9.1-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "155c38a12cdd21a88c832977959213d4",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7",
            "size": 38481,
            "upload_time": "2024-03-12T22:47:34",
            "upload_time_iso_8601": "2024-03-12T22:47:34.484202Z",
            "url": "https://files.pythonhosted.org/packages/1d/e9/5d4c2101614390c2170779256933efb14ce906b68bf3dfef4b93339c4a08/fmetools-0.9.1-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "13b4f81f138162629f24a6a0becfd1bf35ffb4a655065b69b4dae7a77ff2ae11",
                "md5": "42085d07147563302de6665a60cccebe",
                "sha256": "8dda71198e011367eafc8b019fc66bc4a1c1d9919658b621fe41e0a4411af348"
            },
            "downloads": -1,
            "filename": "fmetools-0.9.1.tar.gz",
            "has_sig": false,
            "md5_digest": "42085d07147563302de6665a60cccebe",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7",
            "size": 44502,
            "upload_time": "2024-03-12T22:47:36",
            "upload_time_iso_8601": "2024-03-12T22:47:36.166454Z",
            "url": "https://files.pythonhosted.org/packages/13/b4/f81f138162629f24a6a0becfd1bf35ffb4a655065b69b4dae7a77ff2ae11/fmetools-0.9.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-12 22:47:36",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "safesoftware",
    "github_project": "fmetools",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "build",
            "specs": []
        },
        {
            "name": "pytest",
            "specs": []
        },
        {
            "name": "pytest-vcr",
            "specs": []
        },
        {
            "name": "hypothesis",
            "specs": []
        },
        {
            "name": "ruff",
            "specs": []
        }
    ],
    "lcname": "fmetools"
}
        
Elapsed time: 0.20705s