pyright

Pysa:Facebook最新开源Python静态分析工具

南笙酒味 提交于 2021-01-14 03:31:50
Python代码静态分析是一个标准化工程必不可少的一个环节,工程在上线之前需要对代码规范、语法问题进行详细的检查,防止问题随着代码发布到生产环境,避免酿成更大的故障。 这一点,在很多大型公司是非常重视的。因此,Python方面的静态检查工具层出不穷,处理经常使用的 pylint ,还有除此知名公司的一些工具: Google的pytype Microsoft的pyright Facebook的Pyre 虽然这些静态检查工具出自不同公司,但是核心功能如出一辙。都是基于PEP规范,去检查Python代码中的语言风格,判断是否符合编程规范,是否满足Python语法的要求,而对于更深层次的 安全 问题却从未涉足。 而Facebook最新开源的 Pysa 则是一款专注于检测和预防Python代码中 安全性问题 的静态检查工具,本文就来介绍一下这款出自Facebook的Python静态检查工具。 Pysa Pysa是一个专注于安全性的工具,它是在Facebook之前开源的静态检查工具 Pyre 的基础上进行开发的。 它主要用于检查代码中的数据流问题,这一点至关重要,因为,许多安全和隐私问题都可以归结为数据流入和流出过程中产生的。 Pysa使用了一些Facebook内部框架进行开发而成,这些框架主要基于隐私策略相关技术来防止用户数据的访问和泄露,这对于一家以社交为主的公司,可以说是非常擅长。

Fixing 'Import [module] could not be resolved' in pyright

早过忘川 提交于 2020-07-07 09:41:11
问题 I'm using pyright for type checking and I'm also using pytest for testing inside Visual Studio Code. The folder structure for my tests is to have a 'test' subfolder in the package root . For example | MyPackage |-- __init__.py |-- MyModule.py |--test |-- __init__.py |--MyModule_test.py I'm organizing things like this as there will be many packages and I want to keep things organized. Inside pytest I have import pytest import MyPackage.MyModule ... Pytest is able to discover the tests and run

Fixing 'Import [module] could not be resolved' in pyright

心已入冬 提交于 2020-07-07 09:36:55
问题 I'm using pyright for type checking and I'm also using pytest for testing inside Visual Studio Code. The folder structure for my tests is to have a 'test' subfolder in the package root . For example | MyPackage |-- __init__.py |-- MyModule.py |--test |-- __init__.py |--MyModule_test.py I'm organizing things like this as there will be many packages and I want to keep things organized. Inside pytest I have import pytest import MyPackage.MyModule ... Pytest is able to discover the tests and run

How can I add python type annotations to the flask global context g?

江枫思渺然 提交于 2020-07-06 09:41:24
问题 I have a decorator which adds a user onto the flask global context g: class User: def __init__(self, user_data) -> None: self.username: str = user_data["username"] self.email: str = user_data["email"] def login_required(f): @wraps(f) def wrap(*args, **kwargs): user_data = get_user_data() user = User(user_data) g.user = User(user_data) return f(*args, **kwargs) return wrap I want the type (User) of g.user to be known when I access g.user in the controllers. How can I achieve this? (I am using