我正在尝试使用 Pydantic 验证 Rest API 的 POST 请求负载。申请人列表可以包含主要申请人和可选的其他申请人。到目前为止,我已经编写了下面列出的 Pydantic 模型,以尝试反映这一点。Rest API json 有效负载使用布尔字段isPrimary来区分主要申请人和其他申请人。
from datetime import date
from pydantic import BaseModel, validator
from typing import List, Literal, Optional, Union
class PrimaryApplicant(BaseModel):
isPrimary: Literal[True]
dateOfBirth: Optional[date]
class OtherApplicant(BaseModel):
isPrimary: Literal[False]
dateOfBirth: date
relationshipStatus: Literal["family", "friend", "other", "partner"]
class Application(BaseModel):
applicants: List[Union[PrimaryApplicant, OtherApplicant]]
@validator("applicants")
def validate(
cls,
v: List[Union[PrimaryApplicant, OtherApplicant]]
) -> List[Union[PrimaryApplicant, OtherApplicant]]:
list_count = len(v)
primary_count = len(
list(
filter(lambda item: item.isPrimary, v)
)
)
secondary_count = list_count …Run Code Online (Sandbox Code Playgroud) 是否可以为开发工具设置为source-map的缩小包的webpack生产环境获取可读的堆栈跟踪?我正在运行 Typescript 并与 Webpack 构建做出反应。下面的清单显示了引发异常的示例:
http://localhost:8080/vendors~course-list.3042c44300bc08021f63.bundle.js:2:6029
http://localhost:8080/vendors~course-list.3042c44300bc08021f63.bundle.js:2:5067
in w in b in withRouter(b) in e in e in Suspense in div in e in e in S
Run Code Online (Sandbox Code Playgroud)
在上面的堆栈跟踪中,可以通过将 devtool 选项设置为source-map进行以下观察:
我是一名新用户,正在努力从 ASP.NET Core Blazor 服务器页面正常关闭辅助 signalR 客户端。
我正在 Blazor 服务器页面的首次渲染上设置辅助 signalR 客户端连接。当通过浏览器选项卡关闭页面时,我试图关闭此辅助 signalR 客户端连接。
在撰写本文时,DisposeAsync通过浏览器选项卡关闭页面时似乎不会触发。然而,该Dispose方法被触发。此外,在 Safari 13.0.5 中,Dispose关闭浏览器选项卡时不会触发该方法?Opera、Firefox 和 Chrome 都Dispose在关闭浏览器选项卡时触发。通过 macOS Catalina v10.15.7 将 Safari 更新至 v14.0(15610.1.28.9、15610)修复了此问题。
目前,我正在调用DisposeAsyncfromDispose以关闭 signalR 连接。我使用以下代码关闭客户端连接:
...
Logger.LogInformation("Closing secondary signalR connection...");
await hubConnection.StopAsync();
Logger.LogInformation("Closed secondary signalR connection");
...
Run Code Online (Sandbox Code Playgroud)
该StopAsync方法似乎被阻止,即没有输出“关闭辅助信号R连接”的消息。尽管如此,OnDisconnectedAsync我的服务器集线器的处理程序显示连接已断开。这与本期中描述的行为类似。
如何在ASP.NET Core 3.1中正确处理 signalR 连接?
完整的代码清单如下所示:
处理 signalR 连接
#region …Run Code Online (Sandbox Code Playgroud) signalr signalr.client asp.net-core asp.net-core-signalr blazor-server-side
我有以下 pydantic 模型,其中包含Union[int,float]如下所示键入的结果。
from typing import Union
from pydantic import BaseModel
class Calculation(BaseModel):
arg1: int
arg2: int
class CalculationResult(Calculation):
op: str
result: Union[int, float]
if __name__ == "__main__":
arg1 = 1
arg2 = 2
result = arg1 / arg2
# this displays type of result := <class 'float'> when program is run
print(f"type of result := {type(result)}")
x = CalculationResult(**{"arg1": arg1, "arg2": arg2, "op": "divide", "result": result})
print(f"result := {x.result}")
Run Code Online (Sandbox Code Playgroud)
当 的结果属性的CalculationResult值为 0.5 时,它会舍入为 0。
我如何让 …
Has anyone managed to combine test coverage report from two separate jest test runs?
I am newbie trying to use the default jest coverage reporters : ["json", "lcov", "text", "clover"]
I have tried using nyc to combine coverage-final*.json files from tmp folder and output to full-test-coverage folder.
npx nyc report --report-dir=full-test-coverage/ --reporter=html -t tmp
Run Code Online (Sandbox Code Playgroud)
The full-test-coverage folder is created with index.html etc. However, the combined report is empty.
如何将“2005-06-13 04:40:51”格式的日期字符串转换为 RFC3339 日期字符串 UTC,例如“2005-06-13T04:40:51.000Z”?
也在 Go 论坛上询问过这个问题,因为之前已经收到了有用且有建设性的反馈。
我能得到的最近的是:
createdOn, err := time.Parse("2006-01-02 15:04:05", p.CreatedOn)
self.CreatedOn = createdOn.Format(time.RFC3339)
Run Code Online (Sandbox Code Playgroud)
例如,这将给出以下格式的日期字符串:
1970-02-13T10:31:13Z
Run Code Online (Sandbox Code Playgroud)
除了使用 time.RFC3339 生成字符串,然后使用正则表达式解析结果并在 Z 字符之前标记 .000 之外,如何获取格式为 1970-02-13T10:31:13.000Z 的日期!?
看起来 time.RFC3339 仅包括秒,而 time.RFC3339Nano 包括纳秒。然而time.RFC333Milli,即毫秒。RFC3339Milli = "2006-01-02T15:04:05.000Z07:00"
erm..... 当使用 go 编程语言执行这样的任务时,我是否必须定义自己的格式?
起初,我以为我犯了一个基本的拼写错误或其他错误,基于从 go stack Overflow 社区收到的关于此问题的 2 个紧密链接反馈帖子。
然而,看起来在这种情况下,在 go! 中开发时确实需要自定义格式!另一位开发人员在遇到类似问题时在 golang 存储库中提出了问题。该问题可以在官方 golang 存储库中找到,此处。
根据问题反馈(阅读下面问题的关闭链接),我在 go Playground 上添加了可重现的示例,并包含以下代码:
package main
import (
"fmt"
"time"
)
func main() {
createdOn, err := time.Parse("2006-01-02 15:04:05", "2016-07-23 12:43:01") …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Typescript 学习 React 并寻求建议。我已经成功地获得了适用于开发和生产(带有源映射的缩小版 js)环境的 Webpack 构建。
我有一个错误边界组件,它实现了带有签名的componentDidCatch方法:
componentDidCatch(error: Error, info: ErrorInfo)
Run Code Online (Sandbox Code Playgroud)
我已成功使用sourcemapped-stacktrace从缩小的包和源映射中呈现可读的堆栈跟踪。这对于 Error 对象来说效果很好。
根据React文档,组件堆栈跟踪应仅在开发环境中记录/呈现。
组件堆栈跟踪是否对应于作为componentDidCatch方法中的参数的ErrorInfo对象的componentStack属性?
如果是这样,当环境变量设置了指示开发环境正在运行的值时,是否将错误边界仅记录/显示ErrorInfo.componentStack视为最佳实践?
目前,我正在显示/记录开发和生产版本的 ErrorInfo.componentStack。
在生产中,尽管使用了包(例如sourcemapped-stacktrace ),但它仅显示缩小的堆栈跟踪。
希望有人能帮忙。我在使用来自 gitlab CI 作业的 JSON 数据发出 curl POST 请求时遇到困难。
curl 请求在本地终端会话中工作正常,(注意我没有在终端会话中使用双引号)。如果我没有在 gitlab CI yaml 中转义双引号,我会收到错误curl: (3) [globbing] nested brace in column 112
如果我在 GitLab CI 作业中转义双引号,如下所示,我会收到错误消息:
curl: (3) [globbing] unmatched brace in column 1
在所有情况下,我都收到错误 /bin/bash: line 134: warning: here-document at line 134 delimited by end-of-file (wanted `EOF')
是否可以使用来自 GitLab CI 作业的 here-documents POST JSON 数据?
.gitlab-ci.yml 作业摘录
release:
image: node:12-stretch-slim
stage: release
before_script:
- apt-get update && apt-get install -y curl git jq
script:
- version=$(git describe --tags …Run Code Online (Sandbox Code Playgroud) 在之前的项目中,我使用 sed 实用程序将换行符替换为 NUL 字符,以与在 CI 服务器上添加发行说明的 API 兼容。
sed -zE 's/\r\n|\n/\\n/g' < CHANGELOG.md
Run Code Online (Sandbox Code Playgroud)
但是,在另一个项目中,我使用基于 alpine 的 docker 映像 ( mcr.microsoft.com/dotnet/core/sdk:3.1-alpine),并且在使用该实用程序时,alpine linux 上无法识别-z或映像。--null-datased
如何实现与 Alpine Linux实用程序中的-z或等效的功能?--null-datased
我正在尝试学习和使用 AWS Cognito 用户池,并与 Python FastAPI 实现的 API 集成。到目前为止,我正在使用授权代码流,将我的 Cognito 用户池重定向到 FastAPI 上的端点来解决代码挑战。源代码附加在此查询的末尾。
该 API 具有以下端点:
aws_cognito_redirect终端节点通过将代码质询、redirect_uri、client_id 等发送到 AWS Cognito 用户池oauth2/token终端节点来解决代码质询。我可以在控制台日志输出中看到身份、访问和刷新令牌已成功检索。FastAPI 另外还有一些受保护的端点,这些端点将从 Web 应用程序中调用。此外,还将有一个 Web 表单与端点进行交互。
在此阶段,我可以使用 FastAPI jinja2 模板来实现和托管 Web 表单。如果我选择此选项,大概我可以让/aws_cognito_redirect端点在仅 HTTP 会话 cookie 中返回令牌。这样,每个后续的客户端请求都会自动包含 cookie,而不会在浏览器本地存储中暴露任何令牌。我知道我必须使用此选项来处理 XSRF/CSRF。
或者,我可以使用 Angular/React 来实现前端。据推测,推荐的做法似乎是我必须将授权流程重新配置为使用 PKCE 的身份验证代码?在这种情况下,Angular/React Web 客户端将直接与 AWS Cognito 通信,以检索将转发到 FastAPI 端点的令牌。这些令牌将存储在浏览器的本地存储中,然后在每个后续请求的授权标头中发送。我知道这种方法容易受到 XSS 攻击。
在这两者中,考虑到我的要求,我认为我倾向于使用 jinja2 模板在 FastAPI 上托管 Web 应用程序,并在成功登录时返回仅 …
我已经将 kube-prometheus-stack 作为我的掌舵图中的依赖项安装在 Mac Kubernetes 集群 v1.19.7 的本地 docker 上。我可以查看 kube-prometheus-stack 提供的默认 prometheus 目标。
我有一个 python flask 服务,它提供了我可以在 kubernetes 集群中使用kubectl port forward.
但是,我无法在 prometheus 目标 Web 界面上显示这些指标。
该KUBE-普罗米修斯堆栈文档指出Prometheus.io/scrape不支持服务的基于注解的发现。相反,读者被称为概念ServiceMonitors和PodMonitors。
因此,我已将我的服务配置如下:
---
kind: Service
apiVersion: v1
metadata:
name: flask-api-service
labels:
app: flask-api-service
spec:
ports:
- protocol: TCP
port: 4444
targetPort: 4444
name: web
selector:
app: flask-api-service
tier: backend
type: ClusterIP
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: flask-api-service
spec:
selector:
matchLabels:
app: …Run Code Online (Sandbox Code Playgroud) pydantic ×2
python-3.x ×2
alpine-linux ×1
asp.net-core ×1
fastapi ×1
gitlab ×1
gitlab-ci ×1
go ×1
javascript ×1
jestjs ×1
kubernetes ×1
openid ×1
prometheus ×1
reactjs ×1
sed ×1
signalr ×1
stack-trace ×1
typescript ×1