小编Ind*_*oad的帖子

如何处理Pylint的"太多实例属性"消息?

我刚刚尝试用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

46
推荐指数
3
解决办法
3万
查看次数

在Gerrit项目中编辑project.config

我想在我的Gerrit项目中添加一个"已验证"的标签,以允许Jenkins验证代码是否构建并通过其测试等等.

我知道我需要添加一个部分,project.config如下所示:

[label "Verified"]
       function = MaxWithBlock
       value = -1 Fails
       value =  0 No score
       value = +1 Verified
Run Code Online (Sandbox Code Playgroud)

但是,我如何访问该文件进行编辑?

gerrit jenkins

21
推荐指数
2
解决办法
2万
查看次数

Django中可重用的HTML组件库

我有一个Django网站,其中有许多页面都有自己独特的内容和标记(而不是一个动态填充数据的单个模板).这些页面的模板源自一个通用的"工具"模板,该模板又来自"基础"模板.每个页面还有一个JS文件,用于为该页面编写脚本.每个页面数据分布在3或4个位置:

  • 模板
  • 页面脚本(可能还有其他特定于页面的静态)
  • 一个中央的"工具注册表",其中包含工具名称,描述和类别之类的内容
  • 对于某些工具,一组模板标签用于执行特定于该页面的某些HTML构造(例如,要在表格中显示的数据).

但是,虽然每个页面都有独特的布局和内容,但我仍然希望能够在页面之间共享常用的参数化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']
  • 作为一个模板,通过视图将数据传递到上下文中(因为我将页面内容传播得更多,所以并不吸引人).
  • 作为模板标记,将HTML构建为一个令人讨厌的大字符串
  • 作为使用像lxml这样的XML库的模板标签,这是一种非常灵活的方法,但是语法冗长,过于复杂,我仍然可以从模板中获取数据!

这些似乎都不像是一个整洁,可重用和松散耦合的方式来处理这个问题(例如,如果我将来更改为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)

html django django-templates

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

JIRA JQL:当前sprint中解决的问题

我希望能够过滤当前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附加组件.

有什么方法可以获得这些信息?

agile jira jql jira-agile

7
推荐指数
3
解决办法
8250
查看次数

add_disk()在insmod上挂起

我正在编写一个Linux块设备驱动程序,我有很多初始化工作.但是,当我最终打电话时add_disk(),模块会挂起insmod.

有问题的片段在这里:

set_capacity(gendisk, dev->nsectors);
add_disk(gendisk);

//this line is never reached
Run Code Online (Sandbox Code Playgroud)

insmod linux-device-driver

6
推荐指数
1
解决办法
1086
查看次数

在派生类中使用/存储派生成员与存储基本成员的基类

我经常遇到的一种情况是拥有一组类,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)

c++ inheritance smart-pointers raii c++11

6
推荐指数
1
解决办法
459
查看次数

从Pango.FontDescription设置GtkEntry字体

我有一个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)

css gtk fonts styling gtk3

6
推荐指数
1
解决办法
599
查看次数

"樱桃选择合并"的最简单方法

我知道标题有点毛茸茸 - 因此引用!

假设我有一个分支,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 也似乎没有产生我正在寻找的结果. …

git merge git-rebase git-workflow

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

Clang-format用连续缩进缩进内部初始化器

我有一些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)

c++ code-formatting indentation c++11 clang-format

5
推荐指数
0
解决办法
220
查看次数

重定向 Hugo 网站上缺失的翻译

我有一个 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"\n
Run Code Online (Sandbox Code Playgroud)\n\n

在英语和法语页面上,这工作正常,菜单链接转到/en/licence/fr/licence。但在德语页面上,它会转到/de/licence,这是一个 404。

\n\n

有没有办法将缺失的页面重定向到默认语言的相应页面?

\n

translation internationalization hugo toml

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