小编jos*_*faz的帖子

如何更改Go模块路径?

我有一个 github 仓库github.com/user/somerepo

我通过这样做来初始化它go mod init **github.com/user/somerepo**

我需要更改此依赖关系并使其指向另一个 github 存储库。比方说:github.com/user/a- Different-repo

是否有任何 go 命令可以更新所有文件中的所有导入语句?

go go-modules

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

React Hooks Form:提交时未定义值

我从文档中获取了示例:

import React from "react";
import { useForm } from "react-hook-form";

export default function App() {
  const { register, handleSubmit, watch, formState: { errors } } = useForm();
  const onSubmit = data => console.log(data);

  console.log(watch("example")); 

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <input defaultValue="test" {...register("example")} />
      <input type="submit" />
    </form>
  );
}
Run Code Online (Sandbox Code Playgroud)

但在每次更改或提交时,我都会得到undefined每个字段

在此输入图像描述

我尝试再次安装该库,但没有任何变化,并且到处都未定义......似乎是注册功能的问题。有人遇到同样的问题吗?

javascript reactjs react-hooks react-hook-form

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

Pydantic 设置属性/字段以动态建模

根据文档

允许突变

模型是否是假不可变的,即是否允许setattr (默认值:True)

好吧,我有一堂课:

class MyModel(BaseModel):

    field1:int

    class Config:
        allow_mutation = True
Run Code Online (Sandbox Code Playgroud)

如果我尝试动态添加字段:

model1 = MyModel(field1=1)
model1.field2 = 2
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

  File "pydantic/main.py", line 347, in pydantic.main.BaseModel.__setattr__
ValueError: "MyModel" object has no field "field2"
Run Code Online (Sandbox Code Playgroud)

显然,使用setattr方法会导致同样的错误。

  File "pydantic/main.py", line 347, in pydantic.main.BaseModel.__setattr__
ValueError: "MyModel" object has no field "field2"
Run Code Online (Sandbox Code Playgroud)

输出:

setattr(model1, 'field2', 2)
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

python pydantic

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

Python Enum 和 Pydantic:接受枚举成员的组合

我有一个枚举:

from enum import Enum

class MyEnum(Enum):
    val1 = "val1"
    val2 = "val2"
    val3 = "val3"
Run Code Online (Sandbox Code Playgroud)

我想根据该枚举验证 pydantic 字段。

from pydantic import BaseModel

class MyModel(BaseModel):
    my_enum_field: MyEnum
Run Code Online (Sandbox Code Playgroud)

但我希望此验证也接受由枚举成员组成的字符串。

例如:“val1_val2_val3”或“val1_val3”是有效输入。

我无法将此字段设置为带有验证器的字符串字段,因为我使用需要此类型的测试库(假设pydantic-factories)以便呈现枚举中的值之一(用于模拟随机输入)

所以这 :

from pydantic import BaseModel, validator

class MyModel(BaseModel):
    my_enum_field: str

    @validator('my_enum_field', pre=True)
    def validate_my_enum_field(cls, value):
        split_val = str(value).split('_')
        if not all(v in MyEnum._value2member_map_ for v in split_val):
            raise ValueError()
        return value
Run Code Online (Sandbox Code Playgroud)

可以工作,但会破坏我的测试套件,因为该字段不再是枚举类型。

如何将此字段保留为枚举类型(以使我的模拟结构仍然有效)并使 pydantic 同时接受复合值?

到目前为止,我尝试动态扩展枚举,但没有成功。

python enums metaprogramming pydantic

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

使用 starlette TestClient 会导致 AttributeError :“_UnixSelectorEventLoop”对象没有属性“_compute_internal_coro”

使用 FastAPI :0.101.1

我运行这个test_read_aynsc并且它通过了。

# app.py
from fastapi import FastAPI


app =  FastAPI()
app.get("/")
def read_root():
    return {"Hello": "World"}

# conftest.py

import pytest
from typing import Generator
from fastapi.testclient import TestClient

from server import app
@pytest.fixture(scope="session")
def client() -> Generator:
    with TestClient(app) as c:
        yield c

# test_root.py

def test_read_aynsc(client):
    response = client.get("/item")
Run Code Online (Sandbox Code Playgroud)

但是,在 DEBUG 模式(在 pycharm 中)执行此测试会导致错误。这是回溯:

test setup failed
cls = <class 'anyio._backends._asyncio.AsyncIOBackend'>
func = <function start_blocking_portal.<locals>.run_portal at 0x1555c51b0>
args = (), kwargs = {}, …
Run Code Online (Sandbox Code Playgroud)

python pycharm python-asyncio starlette fastapi

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

我们可以在不强制类实现接口的情况下使用多态吗?

假设我们有一个interface叫做Animal有所谓的两种方法move()makeSound()

这意味着我们可以发送消息move()makeSound()类型的变量Animal,并且我们只能将实现的类的对象分配给Animal类型的变量Animal

现在我的问题是,Java 是否可以不强制想要使用多态的类来实现interface?

例如,为什么 Java 没有像下面这样实现多态:

我们只需创建一个Animal interface,然后我们就可以将我们想要的任何对象分配给一个类型的变量,Animal只要该对象具有方法move()and makeSound(),例如:

Animal animal1;

/* The Java compiler will check if Dog have the methods move() and makeSound(), if yes then 
   compile, if no then show a compilation error */
animal1 = new Dog(); 

animal1.move();
animal1.makeSound();
Run Code Online (Sandbox Code Playgroud)

注意:我以 Java 为例,但我一般是在谈论所有 OOP 语言。另外,我知道我们可以使用继承自超类的子类来实现多态(但这与使用 的想法基本相同interface)。

java oop language-design

5
推荐指数
2
解决办法
603
查看次数

即使在 PATH 中,也找不到 Docker Alpine 可执行二进制文件

我有一个高山运行容器,其中包含一些二进制文件 usr/local/bin

当我得到这个输出ls的内容时usr/local/bin

/usr/local/bin # ls
dwg2SVG     dwg2dxf     dwgadd      dwgbmp      dwgfilter   dwggrep     dwglayers   dwgread     dwgrewrite  dwgwrite    dxf2dwg     dxfwrite
Run Code Online (Sandbox Code Playgroud)

这是我所期望的。但是,如果我通过调用它来执行这些二进制文件之一,则会not found从 shell收到错误消息:

/usr/local/bin # dwg2dxf
sh: dwgread: not found
/usr/local/bin # ./dwg2dxf
sh: ./dwgread: not found
Run Code Online (Sandbox Code Playgroud)

我测试了我的$PATH似乎是正确的:

/usr/local/bin # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

如何使这些二进制文件可调用或“可找到”?我在 Dockerfile 构建中遗漏了什么吗?我想ldconfigalpine 中的命令有问题,但我不确定。

编辑

正如这里的一个答案中所建议的,我执行了file命令,这是输出:

/usr/local/bin # file dwg2dxf
dwgread: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, …
Run Code Online (Sandbox Code Playgroud)

linux shell docker alpine-linux

5
推荐指数
2
解决办法
4353
查看次数

在python类中创建pybullet客户端的多个实例

我在 python 类中使用 pybullet。我将其导入为import pybullet as p. 当我使用 pybullet 有多个类p的实例时,每个实例的类是否相同,还是每个实例的“变量”p 都是唯一的?

文件

import pybullet as p

class Foo:
    def __init__(self, counter):
        physicsClient = p.connect(p.DIRECT)
    def setGravity(self):
        p.setGravity(0, 0, -9.81)
(more code)
Run Code Online (Sandbox Code Playgroud)

和 main.py

from foo import Foo

foo1 = Foo(1)
foo2 = Foo(2)
foo1.setGravity()
Run Code Online (Sandbox Code Playgroud)

setGravity()影响pfoo1 和 foo2 还是只影响 foo1?

python bullet python-3.7 python-class

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

将 SQLAlchemy 声明性基础与 SQL 模型结合使用

在我们的一个项目中,我们多年来一直在所有模型中使用 SQL Alchemy 声明性基础(并且有很多)。我们想尝试使用新的SQLModel 库来进行最新的模型声明。

为此,我们尝试将其与 Base 对象分开声明,并调用create_all两者的方法。

即: Base.metadata.create_all()SQLModel.metadata.create_all()

但是用 SQLModel 声明的模型不能识别用 Base 声明的表。

此时,我们无法将所有先前的模型声明从 Base 更改为 SQLModel。

这是一个可重现的代码:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column
from sqlalchemy import Integer
from typing import Optional
from sqlmodel import Field, SQLModel
from sqlalchemy import String

# Declarative base object
Base = declarative_base()

class DummySATable(Base):
    __tablename__ = 'dummy_table'
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(32))


class DummyModelTable(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True) …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy python-3.x sqlmodel

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

有没有办法改变 tkcalendar 的颜色?

我正在尝试使 tkcalendar 与我的窗口融为一体。

import tkinter
from tkcalendar import Calendar



window = tkinter.Tk()
window.configure(background = "black")



cal = Calendar(window, background = "black" , disabledbackground = "black" , borderbackground = "black" , headersbackground = "black" , normalbackground = "black" )
cal.config(background = "black")
cal.pack()


window.mainloop()
Run Code Online (Sandbox Code Playgroud)

我已阅读 tkcalendar 文档并尝试通过调用小部件类的配置方法来更改所有样式元素:

cal.configure(background = "black")
Run Code Online (Sandbox Code Playgroud)

; 但是,我的日历仍然保持灰色,而不是融入黑色窗口背景。是否可以更改日历的实际背景颜色?

在此输入图像描述

python tkinter tkcalendar

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

如何使用 axios 管理 ReactJS 中的不同 API 端点

这里我有我的第一个表单,它从控制台中的提交按钮给出值 userid 和值 1、2 或 3,就像这样 {userId: "1243", Submit: "1"} 所以他们将值发布到api(codesandbox 中的第 124 行)

  `.post(`https://jsonplaceholder.typicode.com/posts`, payload)` 
Run Code Online (Sandbox Code Playgroud)

然后我有另一个表单,其中三个按钮 nSubmit1、nSubmit2 和 nSubmit3 也假设以相同的格式发送值(就像这样{userId:“1243”,submit:“1”}),

PostForm.jsx 文件中的第 168 行

  <form>
   <button
            value={submit1}
            onClick={() => this.submitHandler(this.state.submit1)}
          >
            nSubmit1
          </button>
          <button
            value={submit2}
            onClick={() => this.submitHandler(this.state.submit2)}
          >
            nSubmit2
          </button>
          <button
            value={submit3}
            onClick={() => this.submitHandler(this.state.submit3)}
          >
            nSubmit3
          </button>
   </form>
Run Code Online (Sandbox Code Playgroud)

但是对于 diff api,我在哪里以及如何定义第二个 api 并将我的提交值映射到它...userId 应该是两个 api 的通用值

https://codesandbox.io/s/vigorous-ptolemy-p1s4i?file=/src/components/PostForm.js

我还需要以“jsonplaceholder.typicode.com/posts?loadId=${this.userId}&eventName=${this.eventName}”的格式发送有效负载

reactjs

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

Pytest:如何在测试中创建和读取文件

我有环境可以测试。因此,我的测试调用了一个在内部生成文件的函数output_file,并且我需要在测试期间检查该文件。

但我不知道为什么我的文件在output_filepytest 完成工作后保存在里面,而我的测试总是失败。

我有两个测试函数:第一个是调用函数生成我需要检查的文件。第二个功能是阅读它。

发生这种情况,如果我只运行第一个测试函数 - 一切正常...该文件保存在output_file目录中但是如果我运行所有脚本(使用两个test_functions),第二个函数找不到第一个函数的文件测试,当所有脚本完成时,我的文件被保存。

这是有原因的吗?我无法更改将文件保存到其他位置的功能。pytest 如何允许我的函数在执行测试期间以我可以读取的方式将文件保存在 output_file 中?有固定装置吗?

|-teste
|--输出文件
|--mytest

test_function_one()
   pid = os.getpid()
   call_function_to_test('cliente',pid)
   assert 
test_function_second()
   with open('output_file/'mydoc.csv')as ...
Run Code Online (Sandbox Code Playgroud)

引发 FileNotFoundError

testing pytest

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