Skip to main content

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

  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.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.

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, and fmetools.parsers.MappingFile.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fmetools-0.13.1.tar.gz (60.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fmetools-0.13.1-py3-none-any.whl (49.6 kB view details)

Uploaded Python 3

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

Hashes for fmetools-0.13.1.tar.gz
Algorithm Hash digest
SHA256 c85ab3736988dd6f76e3d5bafcc17a0a7f7c00b675fee17f026d5d2661b4766d
MD5 4b855a9f963a914d4e5b55592be0fe47
BLAKE2b-256 77e4285fe2b4963492febd8b257403eaf176a6677cc0528088da47ae54ee4d58

See more details on using hashes here.

Provenance

The following attestation bundles were made for fmetools-0.13.1.tar.gz:

Publisher: release-pypi.yml on safesoftware/fmetools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for fmetools-0.13.1-py3-none-any.whl
Algorithm Hash digest
SHA256 37d8a48ae459c332c2ccd1a93f28c94080e141653952e6d31679bb82428cae78
MD5 19e5c122d89d6f5fff6a509f801c7037
BLAKE2b-256 404d605569d8f7ca90b89efe33018b24d724fcbeba7918379be93046669d9335

See more details on using hashes here.

Provenance

The following attestation bundles were made for fmetools-0.13.1-py3-none-any.whl:

Publisher: release-pypi.yml on safesoftware/fmetools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page