使用Python/MyPy类型提示,可以使用.pyi存根将注释保存在单独的文件中以实现.我正在使用此功能来提供SQLAlchemy的ORM(更具体地说,flask_sqlalchemy插件)的基本提示.
模型定义如下:
class MyModel(db.Model):
id = db.Column()
...
...
Run Code Online (Sandbox Code Playgroud)
其中db.Model直接包含在SQLAlchemy中.例如,可以通过以下方式查询它们:
MyModel.query.filter({options: options}).one_or_none()
Run Code Online (Sandbox Code Playgroud)
其中filter()返回另一个Query,one_or_none()返回MyModel的实例(显然是None).
下面的.pyi文件成功提示上面的构造,虽然它不完整 - 没有办法提示返回类型one_or_none().
class _SQLAlchemy(sqlalchemy.orm.session.Session):
class Model:
query = ... # type: _Query
class _Query(sqlalchemy.orm.query.Query):
def filter(self, *args) -> query.Query: ...
def one_or_none(self) -> Any: ...
db = ... # type: _SQLAlchemy
Run Code Online (Sandbox Code Playgroud)
如何完全和一般地暗示上述内容,并提示one_or_none()的返回类型?我的第一次尝试是使用泛型,但看起来我无法访问所讨论的子类型(在给定的示例中,MyModel).为了说明一种非工作方法:
from typing import Generic, TypeVar
_T = TypeVar('_T')
class _SQLAlchemy(sqlalchemy.orm.session.Session):
class Model:
def __init__(self, *args, **kwargs):
self.query = ... # type: _Query[self.__class__]
class _Query(Generic[_T], sqlalchemy.orm.query.Query):
def filter(self, *args) -> _Query[_T]: ...
def …
Run Code Online (Sandbox Code Playgroud) 在Javascript中,我们可以使用window对象在任何点添加全局变量:
'use strict';
var a = 1;
function test() {
window.b = 2;
}
test();
console.log(a); // a
console.log(b); // b
Run Code Online (Sandbox Code Playgroud)
是否有类似(或非类似!)的方式将vars分配给ES6中的当前模块范围?
谢谢
在 Pandas 中,我可以自己指定分类类型的级别:
MyCat = pd.CategoricalDtype(categories=['A','B','C'], ordered=True)
my_data = pd.Series(['A','A','B'], dtype=MyCat)
Run Code Online (Sandbox Code Playgroud)
这意味着
有没有办法用 Polar 来做到这一点?我知道您可以使用字符串缓存功能以不同的方式实现 1),但是我很感兴趣是否可以直接指定我的 dtype/levels。我不知道有什么方法可以实现 2),但是我认为 Arrow 中的分类数据类型确实允许可选的排序,所以也许这是可能的?
我正在用 Typescript 编写一段 Express 中间件。它将作为独立包发布到 npm。我希望能够使用 Express 类型定义我的函数,因为这让我可以使用类型安全进行编写:
function playWithRequest( req: express.Request, res: express.Response, next: express.NextFunction ) {
req['key'] = 'stuff';
}
module.exports = playWithRequest;
Run Code Online (Sandbox Code Playgroud)
但是,我不需要require('express')
自己,并且我想避免import
会生成此类require()
调用的语句。如何在不导入 express 本身的情况下告诉 Typescript 有关 express 类型的信息?
快速类型由 安装npm install @types/express
,因此在node_modules/@types/express/index.d.ts
.
ecmascript-6 ×1
import ×1
javascript ×1
node.js ×1
npm ×1
python ×1
python-3.5 ×1
rust-polars ×1
scope ×1
type-hinting ×1
typescript ×1