# 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.8 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.10.3
* Updated docstring references to `fmetools._deprecated.FMEBaseTransformer.*` to link to new `fme.BaseTransformer` documentation.
## 0.10.2
* FMERequestsSession: Fix use of Windows Certificate Store in
FME 2024.1.2+ and Requests 2.32.3+.
## 0.10.1
* Use `fme.BaseTransformer` if it exists.
* Deprecate `fmetools.plugins.FMEBaseTransformer`.
## 0.10.0
* Fix support for Python 3.8 and require Python 3.8+.
## 0.9.3
* Update docstrings for FMEEnhancedTransformer and FMEBaseTransformer.
## 0.9.2
* In `fmetools.scripted_selection.ContainerContentResponse`,
omit `CONTINUE` key if there's no pagination info.
## 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": null,
"docs_url": null,
"requires_python": ">=3.8.0",
"maintainer_email": null,
"keywords": "FME fmeobjects",
"author": "Safe Software Inc.",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/6b/22/bee8277ee4aac0bfb446f8eebd09b84943510b4740094dc1e90e407ac61f/fmetools-0.10.3.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.8 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.10.3\n\n* Updated docstring references to `fmetools._deprecated.FMEBaseTransformer.*` to link to new `fme.BaseTransformer` documentation.\n\n\n## 0.10.2\n\n* FMERequestsSession: Fix use of Windows Certificate Store in\n FME 2024.1.2+ and Requests 2.32.3+.\n\n## 0.10.1\n\n* Use `fme.BaseTransformer` if it exists.\n* Deprecate `fmetools.plugins.FMEBaseTransformer`.\n\n## 0.10.0\n\n* Fix support for Python 3.8 and require Python 3.8+.\n\n## 0.9.3\n\n* Update docstrings for FMEEnhancedTransformer and FMEBaseTransformer.\n\n## 0.9.2\n\n* In `fmetools.scripted_selection.ContainerContentResponse`,\n omit `CONTINUE` key if there's no pagination info.\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.10.3",
"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": "c3c2fafa6e71f31edf226f6fcafd2edb9c7be3196a2a0de78e83aa0f7daa63e1",
"md5": "d8c765f8d53433f789ad1ba2a6903450",
"sha256": "7ea5f56303d61e9f651c6ff7861cb57c94a538aad50f8ee09be2c1992b57459d"
},
"downloads": -1,
"filename": "fmetools-0.10.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d8c765f8d53433f789ad1ba2a6903450",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.8.0",
"size": 40141,
"upload_time": "2024-11-22T21:37:57",
"upload_time_iso_8601": "2024-11-22T21:37:57.939118Z",
"url": "https://files.pythonhosted.org/packages/c3/c2/fafa6e71f31edf226f6fcafd2edb9c7be3196a2a0de78e83aa0f7daa63e1/fmetools-0.10.3-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6b22bee8277ee4aac0bfb446f8eebd09b84943510b4740094dc1e90e407ac61f",
"md5": "3d4a8d568edfa731495855000544813b",
"sha256": "ea03ba11d52831995e4984f37e06c610a4c12e11aa86c5b07d5096fd662c1a8b"
},
"downloads": -1,
"filename": "fmetools-0.10.3.tar.gz",
"has_sig": false,
"md5_digest": "3d4a8d568edfa731495855000544813b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8.0",
"size": 45843,
"upload_time": "2024-11-22T21:37:59",
"upload_time_iso_8601": "2024-11-22T21:37:59.726892Z",
"url": "https://files.pythonhosted.org/packages/6b/22/bee8277ee4aac0bfb446f8eebd09b84943510b4740094dc1e90e407ac61f/fmetools-0.10.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-22 21:37:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "safesoftware",
"github_project": "fmetools",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "fmetools"
}