Dynamic typed languages are widely used due to their lightweight syntax without explicit types and ease of use. However, the absence of explicit type annotations reduces code comprehension and increases the likelihood of type-related errors. Recently, type annotations have been introduced to these languages, and static type analyzers have been developed and used. However, existing analyzers have limited accuracy, as they treat unannotated code as an Any type or merge types into unions. Furthermore, whole-program analyzer cannot analyze code that is not executed, and thus cannot analyze libraries such as PyTorch. In this paper, we propose a Python type analysis that uses intersection types instead of union types at the point where type information converges and performs modular analysis. This design improves the accuracy of type error detection while enabling analysis of non-executable code such as libraries.