我刚刚尝试用Pylint lint一些代码,最后剩下的错误是
R0902: too-many-instance-attributes (8/7)
Run Code Online (Sandbox Code Playgroud)
我理解限制实例属性数量的基本原理,但有七个看起来有点低.我也意识到短号不应该有最后一个字.但是,我想知道我应该做什么,而不是:
def __init__(self, output_file=None, output_dir=None):
"""
Set the frobnicator up, along with default geometries
"""
self.margin = 30
self.pos = [0, 0]
self.sep = [5, 5]
self.cell = [20, 20]
self.frobbr = library.Frobbr()
page = self.frobbr.get_settings('page')
self.lim = [page.get_width() - self.margin,
page.get_height() - self.margin]
self.filename = output_file
self.moddir = output_dir
Run Code Online (Sandbox Code Playgroud)
我应该将几何包装到一个字典中,做一些其他的事情来阻止Pylint抱怨,或者只是忽略它(我真的不想这样做)?
python instance-variables pylint code-readability code-structure
我想在我的Gerrit项目中添加一个"已验证"的标签,以允许Jenkins验证代码是否构建并通过其测试等等.
我知道我需要添加一个部分,project.config如下所示:
[label "Verified"]
function = MaxWithBlock
value = -1 Fails
value = 0 No score
value = +1 Verified
Run Code Online (Sandbox Code Playgroud)
但是,我如何访问该文件进行编辑?
我有一个Django网站,其中有许多页面都有自己独特的内容和标记(而不是一个动态填充数据的单个模板).这些页面的模板源自一个通用的"工具"模板,该模板又来自"基础"模板.每个页面还有一个JS文件,用于为该页面编写脚本.每个页面数据分布在3或4个位置:
但是,虽然每个页面都有独特的布局和内容,但我仍然希望能够在页面之间共享常用的参数化HTML"片段".例如,一个页面的输入带有一个下拉按钮,使用Bootstrap,如下所示:
<div class="input-group">
<span class="input-group-btn">
<a class="btn btn-default dropdown-toggle" data-toggle="dropdown" href="#">
Common baudrates
<span class="caret"></span>
</a>
<ul class="dropdown-menu pull-right" id="common-baudrate-list">
<li><a href='#'>9600</a></li>
<li><a href='#'>115200</a></li>
</ul>
</span>
<input class="form-control" type="text" id="baudrate-input" val="115200">
</div>
Run Code Online (Sandbox Code Playgroud)
我想制作一个可重复使用的参数化函数/模板/标签,它允许我输入这样的结构,例如"组ID","条目列表","左/右按钮位置","默认值".
到目前为止我看到的方法是:
['Entry 1', 'Entry 2']这些似乎都不像是一个整洁,可重用和松散耦合的方式来处理这个问题(例如,如果我将来更改为Bootstrap 4,我可能需要重新编写这些组件,而我宁愿这样做做一次).拥有这样的组件库也将使未来的页面更容易构建.是否有规范的"正确"方式来做到这一点,甚至是常用的习惯用法?
编辑以显示解决方案实施
使用Wolph下面回答的包含标签,我避免使用这样的笨重结构
{% with [1,2,3] as items %}
{% my_tag items.split %}
{% endwith %}
Run Code Online (Sandbox Code Playgroud)
如下:
@register.inclusion_tag('components/this_component.html')
def input_with_dropdown(dropdown_title, dropdown_items, default_value, group_id, button_left, *args, **kwargs):
split_char = kwargs['split_char'] if 'split_char' in …Run Code Online (Sandbox Code Playgroud) 我希望能够过滤当前sprint中已解决的问题.通常,这将用于防止在先前sprint中解决的问题,但在我们讨论开发人员实现此sprint的时候出现的测试延迟(不重新打开).
封闭的问题也应该出现,但它们不是问题,好像它们在最后一个冲刺时关闭,它们无论如何都不会翻到这个问题.
在mock-JQL中,它会是这样的:
project = "Project name" AND status in (resolved, closed) AND statusChanged() > startOfWeek()
Run Code Online (Sandbox Code Playgroud)
我见过startofweek()和朋友,但不是这样的startofsprint().
我们有JIRA OnDemand,因此我们无法安装本地Java附加组件.
有什么方法可以获得这些信息?
我正在编写一个Linux块设备驱动程序,我有很多初始化工作.但是,当我最终打电话时add_disk(),模块会挂起insmod.
有问题的片段在这里:
set_capacity(gendisk, dev->nsectors);
add_disk(gendisk);
//this line is never reached
Run Code Online (Sandbox Code Playgroud) 我经常遇到的一种情况是拥有一组类,Base并且Derived,Base类具有基类成员的所有权BaseMember,并且Derived该类具有指向同一对象的引用或指针,但是作为一个DerivedMember.
例如,一个UI面板类,它包含具有某些特殊控制功能的特定类型控件的特定实例,继承自包含常规控件并具有通用控件功能的通用类.
首先,说BaseMember是继承的DerivedMemeber.
不使用智能指针,我可能会这样做:
class Base
{
protected:
// receive ownership but only because we say so,
// someone else can still try to delete as it's "just a pointer"
Base(BaseMember* _bmember):
bmember(_bmember)
{}
public:
virtual ~Base()
{
// perform an owner's duty
delete bmember;
}
// functions that might be based on BaseMember + other base state
void SetMemberId(....)
{
bmember->SetId(baz);
}
private: …Run Code Online (Sandbox Code Playgroud) 我有一个GtkEntry,我想让用户选择字体(或系统默认).我最终得到了像"Monospace 10"这样的Pango描述字符串来描述字体.
我目前正在使用override_font,不赞成使用CSS样式.
我想至少尝试"正确"地做到这一点,但现在从Pango字符串中获取CSS似乎是一个非常复杂和脆弱的工作流程.以下是Github的一个例子:
def _get_editor_font_css():
"""Return CSS for custom editor font."""
font_desc = Pango.FontDescription("monospace")
if (gaupol.conf.editor.custom_font and
gaupol.conf.editor.use_custom_font):
font_desc = Pango.FontDescription(gaupol.conf.editor.custom_font)
# They broke theming again with GTK+ 3.22.
unit = "pt" if Gtk.check_version(3, 22, 0) is None else "px"
css = """
.gaupol-custom-font {{
font-family: {family},monospace;
font-size: {size}{unit};
font-weight: {weight};
}}""".format(
family=font_desc.get_family().split(",")[0],
size=int(round(font_desc.get_size() / Pango.SCALE)),
unit=unit,
weight=int(font_desc.get_weight()))
css = css.replace("font-size: 0{unit};".format(unit=unit), "")
css = css.replace("font-weight: 0;", "")
css = "\n".join(filter(lambda x: x.strip(), …Run Code Online (Sandbox Code Playgroud) 我知道标题有点毛茸茸 - 因此引用!
假设我有一个分支,b_feature分支并合并到主开发分支b_master.还有另一个分支,b_release我希望将这些更改添加到(作为点发布).b_master并且b_release已经分歧,永远不会再合并.
---------Bm----k1-----Mm-----> b_master (k1 isn't to be included in b_release)
\ \ /
\ c1--c2--c3 (b_feature)
\
\----Br---------Mr-----> b_release
\ /
cA-cB-cC
Run Code Online (Sandbox Code Playgroud)
我知道我可以把整个东西作为一个单一的差异来挑选git cherry-pick -m Mm,给予
----Br--Squashed----> b_release
Run Code Online (Sandbox Code Playgroud)
其中Squashed是包含该功能的所有更改的提交,以及合并消息Mm.
但是,如果我想保留更改历史记录和单个提交消息,该怎么办?我总是可以手动挑选这个近似的工作流程:
git checkout b_release
git checkout -b b_release_feature
git cherry-pick c1^..c3
git checkout b_release
git merge b_release_feature
git commit --amend --reedit-message=Mm
git branch -d b_release_feature
Run Code Online (Sandbox Code Playgroud)
但这似乎是一个笨重的解决方案,我不知道更优雅的解决方案!
rebase --onto b_release Bm Mm 也似乎没有产生我正在寻找的结果. …
我有一些C++ 11代码与clang格式规则使用正常的indent(IndentWidth)4和continuation indent(ContinuationIndentWidth)为8.所以一个长函数看起来像这样:
// All indented "correctly"
void this_function_has_a_very_long_name_and_lots_of_parameters(
int parameter_a, int parameter_b, int parameter_c)
{
this_function_has_a_very_long_name_and_lots_of_parameters(
parameter_a, parameter_b, parameter_c);
}
Run Code Online (Sandbox Code Playgroud)
但是,我也有这样的数据(注意最后的逗号,以防止bin-packing并保持每行一项 - 在现实生活中这些数字不仅仅是1,2,3):
static std::vector<std::vector<int>> data{
{
1, // Comment
2,
3, // Comment
},
};
Run Code Online (Sandbox Code Playgroud)
考虑到Cpp11BracedListStyle设置为false,上面是我期望它的外观,所以它应该使用块缩进(4),而不是连续缩进(8).从clang格式的文档中,如果是这样的话true:
"重要区别: - 支撑列表中没有空格. - 在右括号之前没有换行符. - 使用延续缩进缩进,而不是使用块缩进."
所以,我希望看到使用"块缩进"(4).但是,我实际得到的是:
static std::vector<std::vector<int>> data{
{
1, // Comment - indented by 4 + 8!
2,
3, // Comment
}, …Run Code Online (Sandbox Code Playgroud) 我有一个 Hugo 网站,其中有一些翻译的页面。并非所有页面都被翻译,因为我并不总是为每种语言的每个页面都有志愿者。
\n\n在菜单中,我有一些页面的链接,如果本地翻译不存在,我想将这些页面重定向到英语(因此总是有一个链接,但可能不会翻译)。
\n\n# Force to have /en/my-page and /fr/my-page routes, even for default language.\ndefaultContentLanguageInSubdir= true\n\n# English is the default language\ndefaultContentLanguage = "en"\n\n# This page exists in en and fr, but not de\n[[menu.shortcuts]]\nname = "Licence"\nurl = "/licence"\n\n[Languages]\n[Languages.en]\nlanguageName = "English"\n\n[Languages.fr]\nlanguageName = "Fran\xc3\xa7ais"\n\n[Languages.de]\nlanguageName = "Deutsch"\nRun Code Online (Sandbox Code Playgroud)\n\n在英语和法语页面上,这工作正常,菜单链接转到/en/licence和/fr/licence。但在德语页面上,它会转到/de/licence,这是一个 404。
有没有办法将缺失的页面重定向到默认语言的相应页面?
\nc++ ×2
c++11 ×2
agile ×1
clang-format ×1
css ×1
django ×1
fonts ×1
gerrit ×1
git ×1
git-rebase ×1
git-workflow ×1
gtk ×1
gtk3 ×1
html ×1
hugo ×1
indentation ×1
inheritance ×1
insmod ×1
jenkins ×1
jira ×1
jira-agile ×1
jql ×1
merge ×1
pylint ×1
python ×1
raii ×1
styling ×1
toml ×1
translation ×1