小编ano*_*spp的帖子

如何让 Pydantic 区分 List[Union[TypeA, TypeB]] 中的字段?

我正在尝试使用 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)

pydantic

12
推荐指数
1
解决办法
1万
查看次数

如何为开发工具设置为源映射的缩小包的 webpack 生产环境获取可读的堆栈跟踪?

是否可以为开发工具设置为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进行以下观察:

  • 名称保持最小化,例如w、b 和e。
  • 报告最小化的错误位置,例如行号和列号。

javascript runtime-error stack-trace

11
推荐指数
1
解决办法
3554
查看次数

关闭/断开 ASP.NET Core signalR 客户端连接的正确方法是什么?

我是一名新用户,正在努力从 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

8
推荐指数
1
解决办法
1万
查看次数

Union[int, float] 类型的 Pydantic 模型字段:使用 float 值初始化时如何防止字段舍入为 int?

我有以下 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。

我如何让 …

python-3.x pydantic

7
推荐指数
2
解决办法
6139
查看次数

Jest: How to merge coverage reports from different jest test runs

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.

jestjs

6
推荐指数
2
解决办法
4837
查看次数

如何在 Go 中将日期转换为带有毫秒的 RFC3339 扩展日期字符串?

如何将“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)

go

6
推荐指数
1
解决办法
1万
查看次数

仅 React 组件堆栈跟踪开发?

我正在尝试使用 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 ),但它仅显示缩小的堆栈跟踪。

error-handling typescript reactjs

3
推荐指数
1
解决办法
1万
查看次数

GitLab CI 如何使用此处的文档将 JSON 数据发布到 CI 作业中的 url?

希望有人能帮忙。我在使用来自 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)

gitlab gitlab-ci

3
推荐指数
1
解决办法
2464
查看次数

Alpine Linux - sed - 使用 Alpine sed 实用程序时 -z 或 --null-data 开关的等效项是什么?

在之前的项目中,我使用 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

sed alpine-linux

3
推荐指数
1
解决办法
4037
查看次数

是否有 FastAPI 库可用于将端点标记为受保护并验证 HTTP Only Cookie 中的身份验证 JWT 令牌?

我正在尝试学习和使用 AWS Cognito 用户池,并与 Python FastAPI 实现的 API 集成。到目前为止,我正在使用授权代码流,将我的 Cognito 用户池重定向到 FastAPI 上的端点来解决代码挑战。源代码附加在此查询的末尾。

该 API 具有以下端点:

  1. 根终端节点 [ / ]:将浏览器重定向到我的 AWS Cognito 用户池的登录页面。
  2. 重定向端点 [ /aws_cognito_redirect ]:成功登录用户池后激活。接收来自 cognito 用户池的代码质询。在下面显示的代码中,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 应用程序,并在成功登录时返回仅 …

openid python-3.x openid-connect amazon-cognito fastapi

2
推荐指数
1
解决办法
2189
查看次数

如何配置 kube-prometheus-stack helm 安装来抓取 Kubernetes 服务?

我已经将 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不支持服务的基于注解的发现。相反,读者被称为概念ServiceMonitorsPodMonitors

因此,我已将我的服务配置如下:

---
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)

kubernetes prometheus kubernetes-helm prometheus-operator

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