simple_cov
在Rails应用程序中使用gem,我们可以在报告中包含我们未测试的文件吗?
如果有,怎么样?
如果不是,那些文件应该计入覆盖百分比,对吧?
我正在开发一个代码库,其中有很多由以前的开发人员编写的类型提示。在某些时候,我注意到这些提示没有进行类型检查,如果我想检查它们,我需要在构建中添加一个步骤。我对 python 很熟悉,但从未使用过类型提示,所以我读了很多关于它们的文章,但我仍然有很多东西需要理解。最终我得出结论,mypy 是用于对这些类型提示进行类型检查的主程序。所以我 pip 安装了 mypy 并运行mypy .
。我遇到了很多这样的错误;
error: Skipping analyzing 'setuptools': found module but no type hints or library stubs
error: Skipping analyzing 'numpy': found module but no type hints or library stubs
error: Skipping analyzing 'tensorflow.compat.v1': found module but no type hints or library stubs
error: Skipping analyzing 'tensorflow': found module but no type hints or library stubs
Run Code Online (Sandbox Code Playgroud)
我很惊讶这些默认情况下被视为错误,因为我读到的有关类型提示的所有内容都强调它们是可选的。所以我的第一个问题是,为什么 mypy 将上述内容视为显示停止错误而不是简单的警告?
然后我用谷歌搜索错误消息并找到mypy 文档的此页面。这可以说是非常清楚的,但令我困惑的是,它似乎表明这个错误是一个应该解决的大问题。它提供了多个选项来解决它,增加工作量,然后它们最终告诉您 CLI 标志将消除所有错误。当然,大多数项目都会导入不使用类型提示的库,并且需要使用此标志?
由于这些线索,我决定我应该继续尝试,寻找包裹。接下来让我困惑的是,它似乎无法找到我所有导入的类型提示。我不希望更多晦涩的库有书面类型提示,但肯定有人为 numpy 或 pytest 编写了它们?types- …
我正在使用 delve go 调试器来调试一些代码。当我尝试打印字符串变量时,它给了我一个缩写版本。
(dlv) print myString
"my string...+539 more"
Run Code Online (Sandbox Code Playgroud)
我如何让它打印完整的字符串?
在玩了对象id之后我发现了这个.
ObjectSpace._id2ref(2648)
=> :**
ObjectSpace._id2ref(6688)
=> :**
ObjectSpace._id2ref(2648) == ObjectSpace._id2ref(6688)
=> false
Run Code Online (Sandbox Code Playgroud)
第一个是求幂运算符的符号;
2.send(ObjectSpace._id2ref(2648), 3)
=> 8
2.send(ObjectSpace._id2ref(6688), 3)
NoMethodError: undefined method `**' for 2:Fixnum
Run Code Online (Sandbox Code Playgroud)
但第二个不知何故不是?我认为它们在传递给#print之后看起来一样.但是,什么是区别?其中一个是某种形式的unicode符号吗?
更新:第二个可能是关键字参数的新双splat,但我似乎无法验证这一点.
我在一个团队中使用alembic来管理数据库迁移.我最近拉了主人,并试图跑alembic upgrade heads
.我收到以下消息;
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
ERROR [alembic.util.messaging] Requested revision a04c53fd8c74 overlaps with other requested revisions 453d88f67d34
FAILED: Requested revision a04c53fd8c74 overlaps with other requested revisions 453d88f67d34
Run Code Online (Sandbox Code Playgroud)
我试图跑的时候得到了同样的信息alembic downgrade -1
.跑步alembic history
打印这个;
453d88f67d34 -> a04c53fd8c74 (label_1, label_2) (head), Create such and such tables.
2f15c778e709, 9NZSZX -> 453d88f67d34 (label_1, label_2) (mergepoint), empty message
b1861bb8b23f, b8aa3acdf260 -> 2f15c778e709 (label_1, label_2) (mergepoint), Merge heads b18 and b8a
(...many more old …
Run Code Online (Sandbox Code Playgroud) 我想要一个单元测试来验证特定命令行标志是否在枚举中.
这是我想编写测试的代码:
var formatType string
const (
text = "text"
json = "json"
hash = "hash"
)
func init() {
const (
defaultFormat = "text"
formatUsage = "desired output format"
)
flag.StringVar(&formatType, "format", defaultFormat, formatUsage)
flag.StringVar(&formatType, "f", defaultFormat, formatUsage+" (shorthand)")
}
func main() {
flag.Parse()
}
Run Code Online (Sandbox Code Playgroud)
只有当-format等于上面给出的一个const值时,所需的测试才会通过.此值可在formatType中使用.一个正确的调用示例是:program -format text
测试所需行为的最佳方法是什么?
注意:也许我的措辞很差,但显示的代码不是单元测试本身,而是我想编写单元测试的代码.这是我正在编写的工具中的一个简单示例,并且想要询问是否有一种很好的方法来测试该工具的有效输入.
这是一个很简单的问题,但我无法在任何地方找到它...如何使用nose2为运行测试的输出添加颜色?例如,我希望失败显示为红色.
在从手册中学习Julia时,我想看看是否可以让Julia同时在我的所有四个CPU核心上运行硬计算.我用这个命令启动了朱莉娅;
julia -p 4
Run Code Online (Sandbox Code Playgroud)
然后我定义了以下函数,只是为了进行大量的算术运算.mod 13就在那里,因此它最终不会打印出庞大的数字.
@everywhere function hard_computation()
bigexp = BigInt(999)^99999999
bigexp % 13
end
Run Code Online (Sandbox Code Playgroud)
然后我告诉朱莉娅在四个不同的过程中这样做.
for i in 1:4
push!(r, remotecall(i, hard_computation))
end
Run Code Online (Sandbox Code Playgroud)
当我fetch
在r中编辑值时,我得到了[5, 6, 5, 5]
.我试了几次,然后得到了; 5, 5, 5, 5, 5, 1, 5, 5, 5, 2, 0, 5, 5, 5, 5, 7
.正确的答案是5
.
那么......出了什么问题?
系统信息;
比方说,我有两个枚举,enum1
而enum2
必须通过懒洋洋地迭代(因为他们有副作用).如何构建第三枚举enum3
,其中enum3.each{|x| x}
就懒洋洋地返回相当于enum1 + enum2
?
在我的真实世界用例中,我在两个文件中流式传输,需要流式传输串联.
我认为答案是肯定的,但我似乎无法找到明确的主张.我有以下情况;
def decorated_function(function):
@functools.wraps(function)
def my_function():
print "Hello %s" % function.__name__
return my_function
for attr, value in dct.iteritems():
dct[attr] = decorated_function(value)
Run Code Online (Sandbox Code Playgroud)
而我真正想要的是这样的;
def my_function(function):
print "Hello %s" % function.__name__
for attr, value in dct.iteritems():
dct[attr] = functools.wraps(my_function, value)
Run Code Online (Sandbox Code Playgroud)
删除decor_function令人困惑的shell.装饰器只能在定义函数时应用吗?
我正在运行一个etcd
进程,它一直保持活动直到你杀死它.(它不提供守护进程模式选项.)我想分离它,以便我可以继续运行更多的python.
我会在shell中做什么;
etcd & next_cmd
Run Code Online (Sandbox Code Playgroud)
我正在使用python的sh
库,在整个互联网的热情推荐下.我宁愿不沉浸于,subprocess
或者Popen
我也没有找到使用它们的解决方案.
我想要的是;
sh.etcd(detach=True)
sh.next_cmd()
Run Code Online (Sandbox Code Playgroud)
要么
sh.etcd("&")
sh.next_cmd()
Run Code Online (Sandbox Code Playgroud)
不幸的是detach
不是一个kwarg和sh
对待"&"
的一个标志etcd
.
我在这里错过了什么吗?这样做的好方法是什么?
我正在使用名为dbt的命令行工具。整个项目有点复杂,所以我将尝试描述基本布局。
这是我的缩写文件树;
dbt_project.yml
.user.yml
dbt_modules
models/baz/subdir/baz_mytable.sql
models/sources/baz/baz_myinfo.sql
profiles.yml
Run Code Online (Sandbox Code Playgroud)
以下是 的简短内容dbt_project.yml
。引用两个相关 .sql 文件的目录,并选取并行文件夹结构内的依赖项。
name: 'my_proj'
version: '1.0'
source-paths: ["models"]
modules-path: "dbt_modules"
...
models:
my_proj:
...
baz:
subdir:
materialized: table
schema: baz_final
sources:
baz:
materialized: view
schema: baz_cleaned
...
Run Code Online (Sandbox Code Playgroud)
以下是 的简短内容baz_myinfo.sql
;
{{ config(alias='myinfo') }}
SELECT ...
Run Code Online (Sandbox Code Playgroud)
以下是 的简短内容baz_mytable.sql
;
WITH sometable AS (
SELECT ... FROM {{ ref('myinfo') }} ...
Run Code Online (Sandbox Code Playgroud)
鉴于这一切,当我运行 dbt 命令时,我收到错误“Model 'model.my_proj.baz_mytable' depends on model 'myinfo' which was not found or is disabled …
python ×4
go ×2
ruby ×2
alembic ×1
dbt ×1
debugging ×1
delve ×1
detach ×1
enumerator ×1
etcd ×1
julia ×1
mypy ×1
nose2 ×1
objectid ×1
simplecov ×1
splat ×1
subprocess ×1
symbols ×1
type-hinting ×1
unit-testing ×1