我希望仅对某些特定模块使用这些选项disable_error_code = ["name-defined"],ignore_missing_imports = true但我正在努力使其工作。以下是我的非工作pyproject.toml文件的摘录:
[tool.mypy]
python_version = "3.9"
disallow_untyped_defs = true
show_error_codes = true
no_implicit_optional = true
warn_return_any = true
warn_unused_ignores = true
exclude = ["scripts", "docs", "test"]
[[tool.mypy.overrides]]
module = [
"firstmodule",
"secondmodule",
"utils",
"config",
]
disable_error_code = ["name-defined"]
ignore_missing_imports = true
Run Code Online (Sandbox Code Playgroud)
更具体地说,如果我disable_error_code = ["name-defined"]按照上面的指示进行操作,那么我会收到以下错误:
pyproject.toml:[module =“utils”]:每个模块部分应该只指定每个模块标志(disable_error_code)
如果我ignore_missing_imports = true按照上面的指示保留,那么它会被忽略,并且会发出由于缺少导入而导致的错误。
相反,如果我将上述两个选项移至[tool.mypy]一切正常下方。
我的中有以下内容pyproject.toml
[tool.pytest.ini_options]
markers = [
"plot: marks SLOW plot tests (deselect with '-m \"not plot\"')",
"open_tutorial: marks the open_tutorial (which opens VSCode all the times)"
]
Run Code Online (Sandbox Code Playgroud)
我有一堆相应标记的测试方法。
如果我跑
coverage run --branch -m pytest -m "not open_tutorial"
Run Code Online (Sandbox Code Playgroud)
或者
coverage run --branch -m pytest -m "not plot"
Run Code Online (Sandbox Code Playgroud)
我得到了想要的结果,即跳过了标记的测试,但我不知道如何pytest跳过这两个测试。我尝试了以下方法
coverage run --branch -m pytest -m "not open_tutorial" -m "not plot"
coverage run --branch -m pytest -m "not open_tutorial" "not plot"
coverage run --branch -m pytest -m ["not open_tutorial","not plot"]
Run Code Online (Sandbox Code Playgroud)
但它们都不起作用。
说我有
def foo(x: Union[str, list[str]], y: Union[str, list[str]]) -> tuple[list[str], list[str]]:
x = cast(Union[list[str], tuple[list[str], ...]], str2list(x))
y = cast(Union[list[str], tuple[list[str], ...]], str2list(y))
return x,y
def str2list(*args: Union[str, list[str]]) -> Union[list[str], tuple[list[str], ...]]:
vals = []
for x in args:
if not isinstance(x, list):
x = [x]
vals.append(x)
if len(args) == 1:
return vals[0]
else:
return tuple(vals)
x = 'My name is x'
y = ['First element', 'Second element']
z = str2list(x,y)
Run Code Online (Sandbox Code Playgroud)
如您所见,有两个cast调用foo,但仍然mypy抱怨
error: …Run Code Online (Sandbox Code Playgroud) 注意这个问题涉及hatch(不是setuptools也不是distutils)。
我正在开发我的第一个包,并且正在遵循本指南。
\n我的项目结构如下:
\nmypackage\n\xe2\x94\x82 LICENSE\n\xe2\x94\x82 pyproject.toml\n\xe2\x94\x82 README.md\n\xe2\x94\x82 requiremets.txt \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80docs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80scripts \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80src\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80mypackage\n\xe2\x94\x82 config.py\n\xe2\x94\x82 first_module.py\n\xe2\x94\x82 datatypes.py\n\xe2\x94\x82 utils.py\n\xe2\x94\x82 first_module.py\n\xe2\x94\x82 __init__.py \n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80tests\nRun Code Online (Sandbox Code Playgroud)\n但是,我注意到其中只有上面树的C:\\Users\\<User>\\Miniconda3\\envs\\myenv\\Lib\\site-packages\\mypackage内容。./mypackage/scr/mypackage
我想要实现的是还安装脚本文件夹,因为在源代码中我定义了一个函数
\ndef open_tutorial() -> None:\n site_packages = next(\n p for p in sys.path if "site-packages" in p\n )\n open(site_packages+"\\\\mypackage\\\\scripts\\\\tutorial.py")\nRun Code Online (Sandbox Code Playgroud)\n这将允许用户运行如下代码
\nimport mypackage as mpkg\n\nmpkg.open_tutorial()\nRun Code Online (Sandbox Code Playgroud)\n我期望的是scripts/tutorial.py在用户编辑器中打开。
如何实现我的目标?我想我应该编辑文件中的某些内容pyproject.toml,或者我必须hatch以某种方式进行设置,但我不知道如何设置。有什么建议吗?
相关问题:我希望它适用于任何操作系统,因此open_tutorial()欢迎任何关于如何更改我的功能的提示!:)
我使用Git Bash,并且错误地创建了一个名为-D的分支。在通过Google搜索之后,我尝试了
git branch -d -- -D
Run Code Online (Sandbox Code Playgroud)
获得
error: branch '-D' not found.
Run Code Online (Sandbox Code Playgroud)
而且我也试图从gitk中删除它,但没有成功。
另一方面,我注意到如果git branch从控制台键入或在gitk上显示分支名称,则分支名称会更改。例如,分支在控制台中为-D,但在gitk上用奇怪的字符命名。
此时,我将怪异的名字从gitk复制/粘贴到控制台,然后发出
git branch -d â?"D
Run Code Online (Sandbox Code Playgroud)
没有成功。
但是,我收到警告消息:“警告:您的控制台字体可能不支持Unicode。如果在输出中遇到奇怪的字符,请考虑切换到TrueType字体,例如Lucida Console!”
作为最后一次尝试,我尝试从gitk中删除该分支,但出现一个弹出窗口,显示“错误:分支,但找不到另一个奇怪且较长的名称 ”。
这次,由于无法从弹出窗口复制,因此无法从弹出框复制另一个粘贴又长又怪异的名称到控制台。
我有一台装有 Git Bash 的 Windows 7 机器。我相当满意,但我希望以更好的方式查看提交历史。我试过了
log --oneline --graph --decorate --all
Run Code Online (Sandbox Code Playgroud)
但我觉得读起来有点困难。或者,我使用 gitk 以一种很好的方式显示提交历史,但是显示图表的窗口太小了。我在谷歌上搜索了一些替代品,比如 gitg 或 gitx 但它们似乎不适用于 git bash - 至少在我的理解中。
有什么方法可以扩展 gitk 窗口以显示提交图,或者您能建议我一些其他解决方案吗?如果可能,我希望坚持使用 Git Bash。
假设我有一个函数foo,允许它接受如下参数
foo(a,b) -> It is OK
foo(None,b) -> It is OK
foo (a, None) -> It is OK
foo(None,None) -> It is NOT OK!!!
Run Code Online (Sandbox Code Playgroud)
如何编写它的签名,包括它的类型提示?
目前我已将类型提示写为
def foo(a:Optional[str], b:Optional[str]) -> str
Run Code Online (Sandbox Code Playgroud)
但这是错误的,因为这样的签名对于调用来说是没问题的foo(None,None)。
假设我有以下列表
L = [("a0","a1"),("b0",),("b1","a1","b0"),("a0","a1"),("b0",)]
M = ["u0", "u1", "u2", "u3", "u4", "u5", "u6", "u7" , "u8"]
Run Code Online (Sandbox Code Playgroud)
我想将 的元素分组M到一个元组列表中,N使其N具有相同的结构L,即
N = [("u0", "u1"), ("u2",), ("u3", "u4", "u5"), ("u6", "u7") , ("u8",)]
Run Code Online (Sandbox Code Playgroud)
或者,更准确地说,[len(L[ii]) == len(N[ii]) for ii, t in enumerate(L)]具有所有True元素 和M == Q,其中Q = [item for t in N for item in t]
怎么做?