Esempio n. 1
0
def get_stub(args: argparse.Namespace, stdout: IO,
             stderr: IO) -> Optional[Stub]:
    module, qualname = args.module_path
    thunks = args.config.trace_store().filter(module, qualname, args.limit)
    traces = []
    failed_to_decode_count = 0
    for thunk in thunks:
        try:
            traces.append(thunk.to_trace())
        except MonkeyTypeError as mte:
            if args.verbose:
                print(f'WARNING: Failed decoding trace: {mte}', file=stderr)
            failed_to_decode_count += 1
    if failed_to_decode_count and not args.verbose:
        print(
            f'{failed_to_decode_count} traces failed to decode; use -v for details',
            file=stderr)
    if not traces:
        return None
    rewriter = args.config.type_rewriter()
    if args.disable_type_rewriting:
        rewriter = NoOpRewriter()
    stubs = build_module_stubs_from_traces(
        traces,
        args.config.max_typed_dict_size(),
        existing_annotation_strategy=args.existing_annotation_strategy,
        rewriter=rewriter,
    )
    if args.sample_count:
        display_sample_count(traces, stderr)
    return stubs.get(module, None)
Esempio n. 2
0
 def stubs(logger, modules=None, main=True):
     modules = modules or []
     if main:
         modules += [DUNDER % 'main', 'main']
     stubs = build_module_stubs_from_traces(logger.data, True)
     return '\n'.join(
         stubs.get(module).render() for module in modules
         if stubs.get(module))
Esempio n. 3
0
    def test_remove_funcs_with_unparsable_defaults(self):
        """We should remove stubs for functions with default values whose reprs are unparsable.

        During application, retype needs to parse the stubs that we give it. We
        use repr() to produce what is used for the default value.
        """
        trace = CallTrace(has_unparsable_default, {})
        stubs = build_module_stubs_from_traces([trace])
        assert stubs == {}
Esempio n. 4
0
def get_stub(args: argparse.Namespace, stdout: IO,
             stderr: IO) -> Optional[Stub]:
    module, qualname = args.module_path
    thunks = args.config.trace_store().filter(module, qualname, args.limit)
    traces = []
    for thunk in thunks:
        try:
            traces.append(thunk.to_trace())
        except MonkeyTypeError as mte:
            print(f'ERROR: Failed decoding trace: {mte}', file=stderr)
    if not traces:
        return None
    rewriter = args.config.type_rewriter()
    if args.disable_type_rewriting:
        rewriter = NoOpRewriter()
    stubs = build_module_stubs_from_traces(traces,
                                           args.include_unparsable_defaults,
                                           rewriter)
    return stubs.get(module, None)