小编Aiv*_*ven的帖子

如果我将默认设置为 None 可以省略 Optional 吗?

例如:

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)

python type-hinting python-3.x mypy python-typing

36
推荐指数
2
解决办法
3403
查看次数

github 操作:如何检查当前推送是否有新标签(是新版本)?

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

如果我同时推送代码和标签会发生什么?

git github github-actions

24
推荐指数
3
解决办法
8119
查看次数

如何缩进python记录器打印的多行消息?

当前行为:

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可以有不同的宽度,因此在将消息发送到记录器之前无法调整消息。

python logging python-logging

10
推荐指数
2
解决办法
3594
查看次数

Numpy:找到掩码边缘的索引

我试图找到掩码段的索引。例如:

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,但它看起来不像我需要的。

python arrays numpy

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

可以制作张量流图摘要吗?

我知道Tensorboard及其强大功能,但我认为带有当前图形摘要的简单控制台输出更好(更快)用于原型设计。也知道我以后能与去年的网络节点,如图只需运行会话生成tensorboard图这里

我要寻找的是与model.summary()Keras 类似的东西。

换句话说:如何遍历tensorflow图并以相同的顺序仅打印出具有其形状和dtypes的自定义高端层?所有这些层是如何生成的?

keras tensorflow tensorboard

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

如何为石墨烯/ django-graphene中的错误返回定制的JSON响应?

我想将状态字段添加到错误响应中,所以要这样做:

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

graphene-python

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

为什么 pip freeze 会返回一些“乱码”而不是 package==VERSION?

这是我所做的:

? 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.

python pip python-poetry

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

Docker:优雅地停止 django 服务器

我正在使用dockerdocker-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

python django docker

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

如何检查指定版本的包是否可用?

例如,函数available('foobar>=1.1')应检查软件包是否foobar已安装且其版本 >= 1.1。

  • importlib.util.find_spec,可以检查模块是否安装。
  • LooseVersionfromdistutils.version比较版本

但是我如何解析字符串foobar>=1.1并将其拆分为模块、版本和比较器?

或者,更有趣的是,也许已经有一些标准方法可以同时完成所有这些事情?pip当它读取包时可能会做同样的事情requirements.txt

python pip

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

如何在docker swarm中同时更新多个服务

docker service update --force --image ${image} ${service} 将只更新一项服务,但我有几个依赖于同一个图像的服务,我需要同时更新它们。

docker docker-swarm

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

python:如何在路径中转义斜杠?

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

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