在docker docs 入门教程第 2 部分中,它有一个制作 Dockerfile。它指示添加以下行:
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
Run Code Online (Sandbox Code Playgroud)
什么是/app,为什么这是一个必要的步骤?
我正在尝试设置被测目标@pytest.fixture并在模块中的所有测试中使用它。我能够正确修补测试,但是在我添加@pytest.fixture返回模拟对象并在其他单元测试中调用模拟对象后,该对象开始引用回原始函数。
以下是我拥有的代码。我期望mocked_worker单元测试中的 引用返回值,但它正在调用实际os.getcwd方法。
请帮我更正代码:
import os
import pytest
from unittest.mock import patch
class Worker:
def work_on(self):
path = os.getcwd()
print(f'Working on {path}')
return path
@pytest.fixture()
def mocked_worker():
with patch('test.test_module.os.getcwd', return_value="Testing"):
result = Worker()
return result
def test_work_on(mocked_worker):
ans = mocked_worker.work_on()
assert ans == "Testing"
Run Code Online (Sandbox Code Playgroud) 今天我深入研究了 Liskov 的替换原则和协方差/逆变。
我被困在以下之间的区别上:
T = TypeVar("T", bound=Union[A, B])T = TypeVar("T", A, B, covariant=True)我对#1 的理解
TypeVar('T', A, B) 和 TypeVar('T', bound=Union[A, B]) 的区别
这个答案明确指出T可以是:
Union[A, B](或任何亚型的联合A和B如Union[A, BChild])A(或 的任何子类型A)B(或 的任何子类型B)
这对我来说很有意义。
我有缺陷的理解#2
MyPy 不允许受约束的 TypeVar 是协变的?定义具有约束但协变的键值类型的通用字典
重新提及bound=Union[A, B]案例,但没有理解选项#2 的含义,A, B, covariant=True。
我试过玩弄mypy,但似乎无法弄清楚。
谁能指出这是什么意思?
我认为这意味着:
A(或 的任何子类型A)B(或 …我有一个environment.yml文件,但不想使用 Conda:
name: foo
channels:
- defaults
dependencies:
- matplotlib=2.2.2
Run Code Online (Sandbox Code Playgroud)
是否可以像文件一样pip安装依赖项?environment.ymlrequirements.txt
我尝试过pip install -r environment.yml,但它不适用于pip==22.1.2.
我正在尝试过滤 Kibana 以查找包含字符串“pH”的字段。该字段称为extra.monitor_value_name. 潜在值的示例有Temperature_ABC01、DO_ABC01、 或pH_ABC01。
Kibana 的 Elasticsearch Query DSL 似乎没有“包含字符串”,因此我需要自定义查询。
我是 Query DSL 的新手,您能帮我创建查询吗?
另外,将其称为 Query DSL 是否合适?我什至不确定措辞是否正确。
我刚刚了解到新的 walrus 运算符 ( :=) 不能用于设置实例属性,它应该是无效的语法(引发 a SyntaxError)。
为什么是这样? (你能提供一个提到这个的官方文档的链接吗?)
我查看了PEP 572,找不到是否/在哪里记录了这一点。
研究
这个答案在没有解释或来源的情况下提到了这个限制:
您不能在对象属性上使用 walrus 运算符
示例代码
class Foo:
def __init__(self):
self.foo: int = 0
def bar(self, value: int) -> None:
self.spam(self.foo := value) # Invalid syntax
def baz(self, value: int) -> None:
self.spam(temp := value)
self.foo = temp
def spam(self, value: int) -> None:
"""Do something with value."""
Run Code Online (Sandbox Code Playgroud)
尝试导入Foo结果为SyntaxError:
self.spam(self.foo := value)
^
SyntaxError: cannot use assignment expressions with …Run Code Online (Sandbox Code Playgroud) 我flake8与一堆插件一起使用(,,flake8-docstrings)。我已将它们全部预安装到.flake8-isortflake8-blackvenv
我的仓库要检查pre-commit:
pyproject.toml(配置black和isort)setup.cfg(配置flake8和pydocstyle)\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 (the package)\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 (the package)\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 venv\nRun Code Online (Sandbox Code Playgroud)\n我想为这两个包调用flake8via 。pre-commit
这是我目前的做法:
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 (the package)\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 (the package)\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 venv\n …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个包添加到我的requirements.txt文件中,即:
ssh配置了私人仓库master,其名称中带有斜杠ssh协议互联网上到处都是关于这个话题的问题。以下是关于此的pip文档:
pip install -e "vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir"
以及来自如何在requirements.txt中声明直接github源的GitHub答案
git+git://github.com/path/to/package-two@master#egg=package-two
尝试方法#1
我试图在我的requirements.txt文件中使用这个答案:
-e git+ssh://github.com/Organization/repo-name.git@branch/name#egg=foo
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ERROR: Command errored out with exit status 128: git clone -q ssh://github.com/Organization/repo-name.git /path/to/venv/src/foo Check the logs for full command output.
Run Code Online (Sandbox Code Playgroud)
当我使用以下选项查看日志时--log:
-e git+ssh://github.com/Organization/repo-name.git@branch/name#egg=foo
Run Code Online (Sandbox Code Playgroud)
尝试方法#2
我尝试的另一种方法requirements.txt:
-e git+git@github.com:Organization/repo-name.git#egg=foo
Run Code Online (Sandbox Code Playgroud)
这里面的克隆确实有效!它还打印此警告:DEPRECATION: This form of VCS requirement is being deprecated
不幸的是,我无法弄清楚如何以这种格式指定分支名称。
我究竟做错了什么?我错过了什么吗?
仅供参考,我的版本:
ERROR: …Run Code Online (Sandbox Code Playgroud) 我正在尝试.tar.gz使用upload-archive命令 ( docs )将一些文件上传到 AWS S3 Glacier 。
upload-archive一天前,我在一个 29 GB 的.tar.gz文件上运行了该命令,如下所示:
aws glacier upload-archive --vault-name my-vault --account-id - --archive-description "my description" --body my-file.tar.gz
Run Code Online (Sandbox Code Playgroud)
今天查了一下,发现还没有执行完。
我的问题是两部分:
upload-archive?仅供参考,我正在使用aws-cli==2.0.17. 预先感谢您的任何帮助!
**编辑**
运行两天后,该upload-archive命令出错并显示以下消息:
An error occurred (InvalidParameterValueException) when calling the UploadArchive operation: Invalid Content-Length: 30957118
Run Code Online (Sandbox Code Playgroud)
这导致aws-cli #3413. 那里的帖子与以下所有答案一致。
首先,我想说如果有人可以在这里提供帮助,您真是不可思议。
一般问题
我的Python程序需要与MSMQ进行交互。基本上,我想窥视一个队列,如果队列中没有任何内容,则指定一个超时。
但是,尽管我已尽力而为,但当队列中先前没有任何值时,我无法让Peek()等待超时间隔。 您能否指出此代码中缺少的内容?
我当前的代码
现在是我的代码:
from socket import gethostname
import win32com.client
import pythoncom
import clr
clr.AddReference("System")
clr.AddReference("System.Messaging")
from System import TimeSpan
from System.Messaging import MessageQueue
# Source: [1]
# [1] https://docs.microsoft.com/en-us/previous-versions/windows/desktop/msmq/ms707027%28v%3dvs.85%29
MQ_DENY_NONE = 0x0
MQ_PEEK_ACCESS = 0x1
MQ_SEND_ACCESS = 0x2
# Set up queue
pythoncom.CoInitialize()
qinfo = win32com.client.Dispatch("MSMQ.MSMQQueueInfo")
qinfo.FormatName = f"direct=os:{gethostname()}\\PRIVATE$\\MyQueue"
queue = qinfo.Open(MQ_PEEK_ACCESS, MQ_DENY_NONE)
# Receive a value
timeout_sec = 1.0
timespan = TimeSpan.FromSeconds(timeout_sec)
label, body = "", ""
# TODO: timeout value does not appear working. …Run Code Online (Sandbox Code Playgroud) python ×6
pip ×2
amazon-s3 ×1
aws-cli ×1
conda ×1
covariance ×1
docker ×1
dockerfile ×1
flake8 ×1
git ×1
github ×1
msmq ×1
msmq-wcf ×1
mypy ×1
oop ×1
pre-commit ×1
pytest ×1
python-3.8 ×1
python-3.x ×1
pythoncom ×1
syntax-error ×1
tar ×1
unit-testing ×1
win32com ×1