tree f4bace898551ac3d6dd374a07527743549faf480
parent eca606e48ef900d3723a1e211893538dc9864ec7
author Scott Todd <scotttodd@google.com> 1682439990 -0700
committer GitHub <noreply@github.com> 1682439990 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJkR/82CRBK7hj4Ov3rIwAARhsIACIJHpS50ipYnV39CjGZRa4G
 zDZRCsy8RFc6zI+lxGK0Zx29wjPMqxOxMH4+hfMNN7o92lbN3DuIKypVo8hJKhs5
 kNamsh877qcCUokwOUQt7Z4iT88NFywL+UZxli3JLhMFK4LPRW5Zuhl39WHETDQh
 /HIzKtAQf1QPBN2DmxppPEbZ0nGnMZ5vQJsSD0hLwnZK9fjSbtdNrYrswvPktq+0
 0cnarRDl+nFUHsUTRnqHukD1tX+bQSAP1qRPR1BQHlAhU0pKil16FlTMK/ZsINP0
 6Q52i4RAquR1tnOlGM3LhZP6kh7op7MEBZAFsekfy7sw0Bm3rQrIom/cDwKqCDA=
 =OfPU
 -----END PGP SIGNATURE-----
 

Handle supported ImportOptions in tf.py and fix Windows compatibility. (#13287)

This adds back support for `import_only` and `save_temp_iree_input` to
our TensorFlow `compile_saved_model` API. I also removed unsupported
options (`import_extra_args`, `save_temp_tf_input`,
`save_temp_mid_level_input`, and `use_tosa`).

Those flags were dropped in https://github.com/openxla/iree/pull/12758 /
https://github.com/openxla/iree/pull/13025 , but they are still useful
in Colab notebooks and when debugging tests.

---

Progress on https://github.com/openxla/iree/issues/13148, though some
further updates will be needed to our Colab notebooks, such as
```python
# before:
compiler_module = tfc.compile_module(
    EdgeDetectionModule(), import_only=True,
    import_extra_args=["--output-format=mlir-ir"])
print("Edge Detection MLIR: ", compiler_module.decode('utf-8'))

# after:
compiler_module = tfc.compile_module(
    EdgeDetectionModule(), import_only=True)
print("Edge Detection MLIR: ", compiler_module)
```

---

I developed this change on Windows (Yes! Finally, I can use Python that
touches TF on Windows without needing to build TF from source!), where I
found that this pattern is broken:
```python
 with tempfile.NamedTemporaryFile(mode="w") as temp_file: 
   __main__.import_saved_model(output_path=temp_file.name, 
```
See https://stackoverflow.com/a/23212515 - `NamedTemporaryFile` _creates
and opens_ the file, and the file _cannot be opened again_... on Windows
(it can be opened again on Unix). I used the trick from
https://stackoverflow.com/a/45803022 to work around this:
```python
with tempfile.TemporaryDirectory() as tmpdir:
  # ...

  # Not saving the file, so generate a loose temp file without tfs.
  tf_iree_input = os.path.join(tmpdir, 'tf-iree-input.mlir')
```