例如:
def foo(bar: int = None):
pass
Run Code Online (Sandbox Code Playgroud)
当我检查barpycharm的类型/注释时,告诉我它是Optional[int].
bar: int = None看起来更干净bar: Optional[int] = None,尤其是当你有 10+ 个参数时。
那么我可以简单地省略Optional吗?像 mypy 或其他 linter 这样的工具是否会将这种情况突出显示为错误?
看起来python本身不喜欢这个想法:
In [1]: from typing import Optional
In [2]: from inspect import signature
In [3]: def foo(a: int = None): pass
In [4]: def bar(a: Optional[int] = None): pass
In [5]: signature(foo).parameters['a'].annotation
Out[5]: int
In [6]: signature(bar).parameters['a'].annotation
Out[6]: typing.Union[int, NoneType]
Run Code Online (Sandbox Code Playgroud) name: test-publish
on: [push]
jobs:
test:
strategy:
...
steps:
...
publish:
needs: test
if: github.event_name == 'push' && github.ref???
steps:
... # eg: publish package to PyPI
Run Code Online (Sandbox Code Playgroud)
我应该输入什么jobs.publish.if来检查这个提交是否是新版本?
可以吗:contains(github.ref, '/tags/')?
如果我同时推送代码和标签会发生什么?
当前行为:
DEBUG:package:123 > message with
multiple lines
foo bar
Run Code Online (Sandbox Code Playgroud)
想要的行为:
DEBUG:package:123 > message with
multiple lines
foo bar
Run Code Online (Sandbox Code Playgroud)
DEBUG:package:123可以有不同的宽度,因此在将消息发送到记录器之前无法调整消息。
我试图找到掩码段的索引。例如:
mask = [1, 0, 0, 1, 1, 1, 0, 0]
segments = [(0, 0), (3, 5)]
Run Code Online (Sandbox Code Playgroud)
当前的解决方案看起来像这样(而且速度很慢,因为我的掩码包含数百万个数字):
segments = []
start = 0
for i in range(len(mask) - 1):
e1 = mask[i]
e2 = mask[i + 1]
if e1 == 0 and e2 == 1:
start = i + 1
elif e1 == 1 and e2 == 0:
segments.append((start, i))
Run Code Online (Sandbox Code Playgroud)
有没有办法用 numpy 有效地做到这一点?
我唯一设法谷歌的是numpy.ma.notmasked_edges,但它看起来不像我需要的。
我知道Tensorboard及其强大功能,但我认为带有当前图形摘要的简单控制台输出更好(更快)用于原型设计。也知道我以后能与去年的网络节点,如图只需运行会话生成tensorboard图这里。
我要寻找的是与model.summary()Keras 类似的东西。
换句话说:如何遍历tensorflow图并以相同的顺序仅打印出具有其形状和dtypes的自定义高端层?所有这些层是如何生成的?
我想将状态字段添加到错误响应中,所以要这样做:
{
"errors": [
{
"message": "Authentication credentials were not provided",
"locations": [
{
"line": 2,
"column": 3
}
]
}
],
"data": {
"viewer": null
}
}
Run Code Online (Sandbox Code Playgroud)
应该是这样的:
{
"errors": [
{
"status": 401, # or 400 or 403 or whatever error status suits
"message": "Authentication credentials were not provided",
"locations": [
{
"line": 2,
"column": 3
}
]
}
],
"data": {
"viewer": null
}
}
Run Code Online (Sandbox Code Playgroud)
我发现只能通过在resolver:中引发Exception来更改消息raise Error('custom error message'),但是如何添加字段?
代码示例:
class Query(UsersQuery, graphene.ObjectType):
me = …Run Code Online (Sandbox Code Playgroud) 这是我所做的:
? pip freeze
aiohttp @ file:///Users/aiven/Library/Caches/pypoetry/artifacts/50/32/0b/b64b02b6cefa4c089d84ab9edf6f0d960ca26cfbe57fe0e693a00912da/aiohttp-3.6.2-py3-none-any.whl
async-timeout @ file:///Users/aiven/Library/Caches/pypoetry/artifacts/0d/5d/3e/630122e534c1b25e36c3142597c4b0b2e9d3f2e0a9cea9f10ac219f9a7/async_timeout-3.0.1-py3-none-any.whl
attrs @ file:///Users/aiven/Library/Caches/pypoetry/artifacts/7f/e7/44/32ca3c400bb4d8a2f1a91d1d3f22bbaee2f4727a037aad898fbf5d36ce/attrs-20.2.0-py2.py3-none-any.whl
chardet @ file:///Users/aiven/Library/Caches/pypoetry/artifacts/c2/02/35/0d93b80c730b360c5e3d9bdc1b8d1929dbd784ffa8e3db025c14c045e4/chardet-3.0.4-py2.py3-none-any.whl
...
Run Code Online (Sandbox Code Playgroud)
点子版本:
? pip -V
pip 20.2.3 from /Users/aiven/projects/foobar/venv/lib/python3.8/site-packages/pip (python 3.8)
Run Code Online (Sandbox Code Playgroud)
我期待这样的事情:
> pip freeze
foo==1.1.1
bar==0.2.1
Run Code Online (Sandbox Code Playgroud)
pip freeze -h 不是很有帮助...
对于上下文:我使用poetry.
我正在使用docker和docker-compose。在里面docker-compose.yml我有启动django服务器的命令:
command: ["./run/web.sh"]
Run Code Online (Sandbox Code Playgroud)
json 格式的命令应该在 exec 模式下运行。内部web.sh:
#!/usr/bin/env bash
exec python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
当我尝试停止服务时,docker-compose stop它等待了 10 秒(默认超时)然后终止服务。在我发现的日志中project_web_1 exited with code 137。
如何优雅地停止 django runserver docker stop?
例如,函数available('foobar>=1.1')应检查软件包是否foobar已安装且其版本 >= 1.1。
importlib.util.find_spec,可以检查模块是否安装。LooseVersionfromdistutils.version比较版本但是我如何解析字符串foobar>=1.1并将其拆分为模块、版本和比较器?
或者,更有趣的是,也许已经有一些标准方法可以同时完成所有这些事情?pip当它读取包时可能会做同样的事情requirements.txt
docker service update --force --image ${image} ${service} 将只更新一项服务,但我有几个依赖于同一个图像的服务,我需要同时更新它们。
temp_dir = 'spam'
dir_name = 'foo/bar/baz.xyz' # should be escaped somehow
dir = os.path.join(temp_dir, dir_name)
os.mkdir(dir)
Run Code Online (Sandbox Code Playgroud)
我需要temp_dir用name 创建目录dir_name.但是当前的代码会产生3个嵌套目录temp_dir.
我试图替换每个削减在dir_name用\/,但os.mkdir忽略与逃避\,并把它作为嵌套的目录名称的一部分.
python ×7
docker ×2
pip ×2
arrays ×1
django ×1
docker-swarm ×1
git ×1
github ×1
keras ×1
logging ×1
mypy ×1
numpy ×1
python-3.x ×1
tensorboard ×1
tensorflow ×1
type-hinting ×1