Tools for extending Safe Software's FME using Python.
Project description
fmetools: helpers for FME Python
fmetools is a Python library that streamlines plugin development for Safe Software's 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.
fmetools is built on top of the Python fmeobjects API 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. The Hello World package tutorial 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/.
Installation
fmetools is distributed as a wheel on PyPI,
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 tool on PyPI.
The Hello World package tutorial covers this topic.
FME does not include fmetools, so packages that use it must include it themselves.
For maintainers of fmetools
- Start with a clean environment
- Install dev requirements using
pip install -r requirements.txt - Do a dev install using
pip install --editable . - Run tests using
pytest - Build wheel using
python -m build --wheel - To build docs:
sphinx-build -M html docs docs/_build
fmetools changes
0.13.1
fmetools.paramparsing.TransformerParameterParser: represent FME's null and no-op values as enums.- Code that handles parameters set to null, either directly or via an attribute, must be updated to check for
fmetools.paramparsing.ParameterState.NULL.
- Code that handles parameters set to null, either directly or via an attribute, must be updated to check for
0.12.2
- Fix handling of special characters in Custom Proxy Map credentials.
fmetools.paramparsing.TransformerParameterParser: Update documentation with changes in FME 2025.2+.
0.12.1
- Fix regression around unit testing scenarios in
fmetools.paramparsing.TransformerParameterParser. - Improve TypeError message when getting parsed value of unsupported parameter types, such as table.
0.12.0
- Improve performance of
fmetools.features.get_attributes_with_prefix(). - Improve documentation and performance of
fmetools.paramparsing.TransformerParameterParser.
0.11.1
- Improve DEF line parameter parsing.
0.11.0
- Update base classes for
fmetools.plugins.FMESimplifiedReader,fmetools.plugins.FMESimplifiedWriter, andfmetools.parsers.MappingFile.
0.10.3
- Updated docstring references to
fmetools._deprecated.FMEBaseTransformer.*to link to newfme.BaseTransformerdocumentation.
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.BaseTransformerif 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, omitCONTINUEkey 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.paramparsingto 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.FMETransformertoFMEBaseTransformerto avoid potential confusion withfmeobjects.FMETransformer. Instantiatingfmetools.plugins.FMETransformernow 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
CHECKBOXandCHOICE.
0.4.2
- Prepare for PyPI release.
0.4.0
- Support new GUI types
ACTIVECHOICE_LOOKUPandNAMED_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
guiparamsmodule, for parsing GUI parameter values. This initial implementation supports just a small subset of GUI types.
0.2.0
- Remove
FMEEnhancedTransformer.keywordand replace its usages withFMETransformer.factory_name. - Use relative imports, to support copy-paste vendorization.
0.1.4
- Add
hasSupportFor()toplugins.FMESimplifiedReaderto 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()toplugins.FMETransformerto 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fmetools-0.13.1.tar.gz.
File metadata
- Download URL: fmetools-0.13.1.tar.gz
- Upload date:
- Size: 60.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c85ab3736988dd6f76e3d5bafcc17a0a7f7c00b675fee17f026d5d2661b4766d
|
|
| MD5 |
4b855a9f963a914d4e5b55592be0fe47
|
|
| BLAKE2b-256 |
77e4285fe2b4963492febd8b257403eaf176a6677cc0528088da47ae54ee4d58
|
Provenance
The following attestation bundles were made for fmetools-0.13.1.tar.gz:
Publisher:
release-pypi.yml on safesoftware/fmetools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fmetools-0.13.1.tar.gz -
Subject digest:
c85ab3736988dd6f76e3d5bafcc17a0a7f7c00b675fee17f026d5d2661b4766d - Sigstore transparency entry: 760496516
- Sigstore integration time:
-
Permalink:
safesoftware/fmetools@56d05267b1e864b62b90507377e57c0f88ff0026 -
Branch / Tag:
refs/tags/v0.13.1 - Owner: https://github.com/safesoftware
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-pypi.yml@56d05267b1e864b62b90507377e57c0f88ff0026 -
Trigger Event:
release
-
Statement type:
File details
Details for the file fmetools-0.13.1-py3-none-any.whl.
File metadata
- Download URL: fmetools-0.13.1-py3-none-any.whl
- Upload date:
- Size: 49.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37d8a48ae459c332c2ccd1a93f28c94080e141653952e6d31679bb82428cae78
|
|
| MD5 |
19e5c122d89d6f5fff6a509f801c7037
|
|
| BLAKE2b-256 |
404d605569d8f7ca90b89efe33018b24d724fcbeba7918379be93046669d9335
|
Provenance
The following attestation bundles were made for fmetools-0.13.1-py3-none-any.whl:
Publisher:
release-pypi.yml on safesoftware/fmetools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fmetools-0.13.1-py3-none-any.whl -
Subject digest:
37d8a48ae459c332c2ccd1a93f28c94080e141653952e6d31679bb82428cae78 - Sigstore transparency entry: 760496518
- Sigstore integration time:
-
Permalink:
safesoftware/fmetools@56d05267b1e864b62b90507377e57c0f88ff0026 -
Branch / Tag:
refs/tags/v0.13.1 - Owner: https://github.com/safesoftware
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-pypi.yml@56d05267b1e864b62b90507377e57c0f88ff0026 -
Trigger Event:
release
-
Statement type: