[BEAM-1319] Add conflict resolution to the PipelineOptions internal argparse. #1848
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In some instances where a PipelineOptions subclass was defined in the
main session and save_main_session option is enabled, that subclass may
appear multiple times in the PipelineOptions.subclassess() list.
This is causing problems with the argparse because options are not
unique any more.
This changes filter the subclasses by name, and pick the last unique
instance of each subclass.
As an alternative option, we could use the conflict_handler='resolve' of
the argparse. However, the drawback of this approach would be that allowing
accidental overriding of the same option name in two different PipelineOptions
subclasses.
Also moves wordcount example to use PipelineOptions. This both serves as an
example of using PipelineOptions, also it is already integrated with
tests and will continue to test this case.