小编mr.*_*rre的帖子

我可以在数据类中有一个可选参数,当转换为 dict 时可以省略该参数吗?

我希望对某些字典执行静态类型检查( pylancein )。vscode“棘手”的部分是我希望一些参数是可选的并且根本不显示在字典中。我尝试过使用dataclassesandTypedDict但到目前为止还没有运气。

from typing import Optional, List
from dataclasses import dataclass, asdict


@dataclass
class SubOrder:
    name: str


@dataclass
class Order:
    name: str
    sub_orders: Optional[List[SubOrder]]


assert asdict(Order(name="Pizza")) == {"name": "Pizza"}
assert asdict(Order(name="Pizza", sub_orders=[SubOrder(name="Pasta")])) == {
    "name": "Pizza",
    "sub_orders": [{"name": "Pasta"}],
}
Run Code Online (Sandbox Code Playgroud)

这是可以实现的吗dataclasses?我基本上只是希望我的静态类型检查器 ( pylance/ pyright) 来检查我的字典,这就是我使用dataclasses. 我也尝试过TypedDict,但类型检查器的行为似乎不像我那样。他们总是要求我设置sub_orders

以下代码通过了,但pylance对没有 感到不满意sub_orders

from typing import Optional, List, TypedDict


class SubOrder(TypedDict):
    name: str …
Run Code Online (Sandbox Code Playgroud)

python python-dataclasses python-typing pyright

15
推荐指数
2
解决办法
2万
查看次数

令牌扩展与匹配器与短语匹配器与 spaCy 中的实体标尺

我试图找出提取实体的最佳方式(快速),例如一个月。我想出了 5 种不同的方法,使用spaCy.

最初设定

对于每个解决方案,我都从初始设置开始

import spacy.lang.en    
nlp = spacy.lang.en.English()
text = 'I am trying to extract January as efficient as possible. But what is the best solution?'
Run Code Online (Sandbox Code Playgroud)

解决方案:使用扩展属性(仅限单token匹配)

import spacy.tokens
NORM_EXCEPTIONS = {
    'jan': 'MONTH', 'january': 'MONTH'
}
spacy.tokens.Token.set_extension('norm', getter=lambda t: NORM_EXCEPTIONS.get(t.text.lower(), t.norm_))
def time_this():
    doc = nlp(text)
    assert [t for t in doc if t._.norm == 'MONTH'] == [doc[5]]

%timeit time_this()
Run Code Online (Sandbox Code Playgroud)

每个循环 76.4 µs ± 169 ns(7 次运行的平均值 ± 标准偏差,每次 10000 次循环)

解决方案:通过实体标尺 …

python performance spacy

9
推荐指数
1
解决办法
1816
查看次数

运行 Docker 化的 FastAPI 应用程序时出现 CORS 问题

我有一个fastapi应用程序正在运行并且工作得很好。我想使用我的 fastapi 应用程序作为部署在 firebase 托管 (https) 上的 React 前端的后端。本地运行(http fastpi 和 React)我通过在 FastAPI 中启用 CORS 使其工作

from starlette.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)
Run Code Online (Sandbox Code Playgroud)

但是当我部署时,我意识到我无法将 fastapi 作为 HTTP 提供服务,因为我的前端位于 HTTPS 上。我继续在 Google Cloud 中创建了一个 kubernetes 集群,并进入了我的 dockerized fastapi 应用程序(公开为 HTTPS)。当我卷曲到我的 HTTPS fastapi 端点时,这是有效的,但我在我的 React 应用程序中再次遇到 CORS 问题,这次我不知道如何解决它。为什么上面的内容不再适用?

CORS 错误是

从源“https://my-frontend-domain”获取“https://my-api-domain”的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:无“访问” -Control-Allow-Origin'标头存在于所请求的资源上。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

编辑

我刚刚做了一些进一步的调查,我可以得出结论,如果我在本地运行我的容器,docker run那么access-control-allow-origin会在标头中正确返回。但是当部署在 GKE 上时,就没有access-control-allow-origin.

更新

我尝试安装 nginx ingress 而不是 GKE ingress,但这使全局静态 IP 和 …

https cors google-kubernetes-engine

7
推荐指数
1
解决办法
6563
查看次数

在 Android 模拟器上删除两根手指触摸

我正在运行 Linux Mint 并正在创建 flutter 应用程序。有时,当我将工作区(CTRL + ALT + 左/右)更改为远离 Android 模拟器时,这个奇怪的跟踪器就会开始出现,如果不关闭模拟器上的所有内容,我就无法摆脱它。跟踪器跟随我的光标并对右键单击等做出反应。

有谁知道这是什么吗?

更新

我刚刚注意到它们代表两个手指。但如何摆脱它呢?

安卓模拟器

linux android-emulator flutter

7
推荐指数
1
解决办法
991
查看次数

Sphinx autosummary"toctree包含对不存在的文档的引用"警告

我遇到了与此线程相同的问题.当我构建我的Sphinx文档时,make html我得到了很多这样的警告

None:None: WARNING: toctree contains reference to nonexisting document u'cars.Car.time_elapsed'
Run Code Online (Sandbox Code Playgroud)

我在用html_theme = 'sphinx_rtd_theme'.如果我改成它classic,那么我没有得到警告.如果我想补充numpydoc_show_class_members = Falseconf.py,那么我不明白他们要么.

但; 我非常喜欢sphinx_rtd_theme,当我使用classic或添加时numpydoc_show_class_members = False,我的Python方法的' TOC '被删除(参见此图像上的红色框),我更喜欢留下.

cars模块的文档由

.. automodule:: cars
   :members:
Run Code Online (Sandbox Code Playgroud)

该模块包含一个Car具有两种方法的类.文档字符串是用来写的numpydoc.

python python-sphinx numpydoc

5
推荐指数
1
解决办法
1520
查看次数

使用elasticsearch搜索公司

想象一下我有两个数据源。一个来源正在为AP M\xc3\xb8ller - M\xc3\xa6rsk A调用 M\xc3\xa6rsk ,而另一个来源为AP M\xc3\xb8ller - M\xc3\xa6rsk A/S。现在我有很多公司,我想简化这些公司的命名。

\n\n

这两个来源都在 elasticsearch 中建立了索引,但我是这项技术的新手,无法提出适当的搜索查询。我最初的想法是使用common它给出不错的结果,但我认为还有更好的方法。

\n\n

有什么建议么?

\n\n

编辑

\n\n

稍微澄清一下。我的两个来源只是提供公司名称的数据源。我已将这些名称存储在每个源的自己的索引中 - 文档只是名称。

\n\n

所以我有两个带有公司名称的索引(没有其他内容)。现在,对于索引中的每个公司名称,A我想在索引中找到相应的公司B。挑战在于公司名称的书写方式有很多种——它并不标准化。我希望以尽可能少的体力劳动和最小的错误风险来创建此链接。

\n

elasticsearch

4
推荐指数
1
解决办法
1080
查看次数