You can’t have the same argument in the parse_know_args and XyzOptions 
(assuming you get these args in the same way).

From: Sofia’s World <mmistr...@gmail.com>
Sent: Tuesday, December 3, 2024 11:32 PM
To: user@beam.apache.org
Subject: Re: Problem running pipeline in unit tests

Hello
  thanks for getting back.I tracked down the problem to one of the pipeline 
option classes i have been using for years.
Somehow the argparse library is clashing, not sure if it is my IDE or something 
else.....
I have replaced the option class at the bottom of this email with this method 
and i will see how it goes.. but i think it's entirely my issue

Kind regards


def parse_known_args(argv):
    """Parses args for the workflow."""
    parser = argparse.ArgumentParser()
    parser.add_argument('--recipients')

class XyzOptions(PipelineOptions):

    @classmethod
    def _add_argparse_args(cls, parser):
        parser.add_argument('--recipients', 
default='mmistr...@gmail.com<mailto:mmistr...@gmail.com>')
        parser.add_argument('--key')
        parser.add_argument('--sendgridkey')

On Tue, Dec 3, 2024 at 10:05 PM XQ Hu via user 
<user@beam.apache.org<mailto:user@beam.apache.org>> wrote:
Can you share the full example to reproduce this?

On Mon, Dec 2, 2024 at 4:30 PM Sofia’s World 
<mmistr...@gmail.com<mailto:mmistr...@gmail.com>> wrote:
HI all
   i am starting writing beam test in a new environment and suddenly i am 
finding this error
while running a very simple test

def test_word_count(self):
with TestPipeline() as p:
input_data = p | 'Start' >> beam.Create(['hello world', 'hello beam'])
counts = (
input_data
| 'One' >>beam.FlatMap(lambda x: x.split(' '))
| 'Two' >> beam.Map(lambda x: (x, 1))
| 'Three' >> beam.CombinePerKey(sum)
)
debugSink = beam.Map(print)
counts | debugSink


the bot says it's an issue with argparse, and perhaps i have some lib clash... 
i fixed it long time ago but now i forgot
Could anyone advise how can i address this problem?

Kind regards
Marco


test_word_count 
(shareloader.test.test_stock_pick.TestEdgarUtils.test_word_count) ... Missing 
pipeline option (runner). Executing pipeline using the default runner: 
DirectRunner.
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
'function' object has no attribute '__self__'
ERROR

======================================================================
ERROR: test_word_count 
(shareloader.test.test_stock_pick.TestEdgarUtils.test_word_count)
----------------------------------------------------------------------
Traceback (most recent call last):
  File 
"/workspaces/GCP_Experiments/dataflow/shareloader/test/test_stock_pick.py", 
line 63, in test_word_count
    with TestPipeline() as p:
  File 
"/home/codespace/.python/current/lib/python3.12/site-packages/apache_beam/pipeline.py",
 line 620, in __exit__
    self.result = self.run()
                  ^^^^^^^^^^
  File 
"/home/codespace/.python/current/lib/python3.12/site-packages/apache_beam/testing/test_pipeline.py",
 line 115, in run
    result = super().run(
             ^^^^^^^^^^^^
  File 
"/home/codespace/.python/current/lib/python3.12/site-packages/apache_beam/pipeline.py",
 line 570, in run
    self._options).run(False)
                   ^^^^^^^^^^
  File 
"/home/codespace/.python/current/lib/python3.12/site-packages/apache_beam/pipeline.py",
 line 594, in run
    return self.runner.run_pipeline(self, self._options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File 
"/home/codespace/.python/current/lib/python3.12/site-packages/apache_beam/runners/direct/direct_runner.py",
 line 151, in run_pipeline
    all_options = options.get_all_options()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File 
"/home/codespace/.python/current/lib/python3.12/site-packages/apache_beam/options/pipeline_options.py",
 line 351, in get_all_options
    cls._add_argparse_args(parser)  # pylint: disable=protected-access
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/GCP_Experiments/dataflow/samples/email_pipeline.py", line 
46, in _add_argparse_args
    parser.add_value_provider_argument('--input_file', type=str,
  File 
"/home/codespace/.python/current/lib/python3.12/site-packages/apache_beam/options/pipeline_options.py",
 line 129, in add_value_provider_argument
    self.add_argument(*args, **kwargs)
  File "/home/codespace/.python/current/lib/python3.12/argparse.py", line 1472, 
in add_argument
    action = action_class(**kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^
TypeError: _StoreAction.__init__() got an unexpected keyword argument 
'default_value'

Reply via email to