Metadata-Version: 2.1
Name: fmetools
Version: 0.7.4
Summary: Tools for extending Safe Software's FME using Python.
Home-page: https://github.com/safesoftware/fmetools
Author: Safe Software Inc.
License: BSD
Project-URL: Documentation, https://docs.safe.com/fme/html/fmetools/
Keywords: FME fmeobjects
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: License :: OSI Approved :: BSD License
Classifier: Intended Audience :: Developers
Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev
Requires-Dist: ruff>=0.1.5; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: hypothesis; extra == "dev"
Requires-Dist: sphinx>=6.0.0; extra == "dev"
Requires-Dist: sphinx-rtd-theme>=1.2.2; extra == "dev"

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

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

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