Change app.py() to pass through unparsed flags.

This commit is contained in:
Vijay Vasudevan 2016-08-19 15:23:03 -07:00
parent ce3572a08b
commit 4f9a3a4def
4 changed files with 69 additions and 3 deletions

View File

@ -71,6 +71,26 @@ tf_py_test(
],
)
tf_py_test(
name = "flags_test",
size = "small",
srcs = ["platform/flags_test.py"],
additional_deps = [
":platform",
":platform_test",
],
)
tf_py_test(
name = "app_test",
size = "small",
srcs = ["platform/app_test.py"],
additional_deps = [
":platform",
":platform_test",
],
)
cc_library(
name = "numpy_lib",
srcs = ["lib/core/numpy.cc"],

View File

@ -25,6 +25,6 @@ from tensorflow.python.platform import flags
def run(main=None):
f = flags.FLAGS
f._parse_flags()
flags_passthrough = f._parse_flags()
main = main or sys.modules['__main__'].main
sys.exit(main(sys.argv))
sys.exit(main(sys.argv[:1] + flags_passthrough))

View File

@ -0,0 +1,45 @@
# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""Tests for our flags implementation."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import sys
from tensorflow.python.platform import app
from tensorflow.python.platform import flags
FLAGS = flags.FLAGS
flags.DEFINE_boolean('myflag', False, '')
def main(argv):
if (len(argv) != 3):
print("Length of argv was not 3: ", argv)
sys.exit(-1)
if argv[1] != "--passthrough":
print("--passthrough argument not in argv")
sys.exit(-1)
if argv[2] != "extra":
print("'extra' argument not in argv")
sys.exit(-1)
if __name__ == '__main__':
sys.argv.extend(["--myflag", "--passthrough", "extra"])
app.run()

View File

@ -30,10 +30,11 @@ class _FlagValues(object):
self.__dict__['__parsed'] = False
def _parse_flags(self):
result, _ = _global_parser.parse_known_args()
result, unparsed = _global_parser.parse_known_args()
for flag_name, val in vars(result).items():
self.__dict__['__flags'][flag_name] = val
self.__dict__['__parsed'] = True
return unparsed
def __getattr__(self, name):
"""Retrieves the 'value' attribute of the flag --name."""