Exemplo n.º 1
0
 def _initialise_type_inference_strategies() -> List[TypeInferenceStrategy]:
     strategy = config.INSTANCE.type_inference_strategy
     if strategy == config.TypeInferenceStrategy.NONE:
         return [NoTypeInferenceStrategy()]
     if strategy == config.TypeInferenceStrategy.STUB_FILES:
         if config.INSTANCE.stub_dir is None:
             raise ConfigurationException(
                 "Missing configuration value `stub_dir' for StubInferenceStrategy"
             )
         return [StubInferenceStrategy(config.INSTANCE.stub_dir)]
     if strategy == config.TypeInferenceStrategy.TYPE_HINTS:
         return [TypeHintsInferenceStrategy()]
     raise ConfigurationException("Invalid type-inference strategy")
Exemplo n.º 2
0
    def infer_type_info(self, method: Callable) -> InferredSignature:
        assert self._pyi_dir

        module = sys.modules[method.__module__]
        name = module.__name__.replace(".", "/")
        pyi_src = name + ".pyi"
        pyi_ast = self._read_stub(pyi_src)
        parameter_types, return_type = self._get_parameter_annotations(method, pyi_ast)
        if parameter_types:
            return InferredSignature(
                signature=inspect.signature(method),
                parameters=parameter_types if parameter_types else {},
                return_type=return_type if return_type else None,
            )
        return TypeHintsInferenceStrategy().infer_type_info(method)
Exemplo n.º 3
0
def test_infer_type_info(method, expected_parameters, expected_return_types):
    strategy = TypeHintsInferenceStrategy()
    result = strategy.infer_type_info(method)
    assert result.parameters == expected_parameters
    assert result.return_type == expected_return_types