小编Chr*_*raf的帖子

如何将类型提示添加到现有模块类的猴子修补函数中?

我想知道如何将类型提示(用于 PyCharm IDE 代码完成支持)添加到def links(self) -> List[str]我通过猴子修补到现有模块的类的方法:

我的功能

def issue_links(self) -> List[str]:
    links = []
    # ...
    return links
Run Code Online (Sandbox Code Playgroud)

将函数猴子修补到Issuepython-jira 类

from jira.resources import Issue

# {...} my defined function code is somewhere here

Issue.links = issue_links
Run Code Online (Sandbox Code Playgroud)

现在我遇到的问题是,当我在Issue对象上调用该方法时,PyCharm 显然无法识别该方法。我尝试遵循PEP 484 存根文件并使用文件typing中的模块.pyi来让 IDE 找到我的猴子修补函数的定义。

问题.pyi

from typing import List

class Issue:
    def links(self) -> List[str]: ...
Run Code Online (Sandbox Code Playgroud)

然而,这是行不通的。我的假设是文件结构在某种程度上不正确:

文件位置

jira-python module>> 站点包(使用pip install jira)下载

myFile.py …

python monkeypatching type-hinting pycharm pyi

14
推荐指数
1
解决办法
2484
查看次数

显示键盘后离开应用程序时出现快照错误(需要 afterScreenUpdates:YES)

我目前正在启动一个新的测试项目,用于通过单独的(模式)视图导入客户端证书。该应用程序始终以视图“主视图”(Main View)开始,其中我有一些虚拟元素来测试连接是否有效。一旦用户将文件添加到我的应用程序(例如,在邮件中打开它或在模拟器中拖放),“证书导入”视图就会通过 Segue 显示。当用户点击“输入证书密码”文本字段时,会弹出键盘。返回时,如果输入的密码对于导入的 p12 客户端证书正确,则调用 .resignFirstResponder() 并通过标签调用应用程序。我希望当应用程序关闭或多任务处理被激活时,我的“证书导入”视图(证书导入视图)会被关闭。我通过在CertificateImportViewController 上的应用程序委托的applicationWillResignActive(application:) 方法中调用dismiss(animated:completion:) 来实现这一点。

现在,当我关闭应用程序或仅在“证书导入视图”中显示键盘后才切换到多任务处理时,就会出现问题。

当我在以下状态下关闭/多任务应用程序时,我会在调试器控制台中获得相应的条目:

  1. 当显示键盘并且我处于证书导入视图时: [Snapshotting] Snapshotting a view (0x7fa91506b200, UIKeyboardImpl) that is not in a visible window requires afterScreenUpdates:YES.

  2. 即使当我离开证书导入视图并返回“主视图”时:[Snapshotting] Snapshotting a view (0x7fa91506b200, UIKeyboardImpl) that is not in a visible window requires afterScreenUpdates:YES.

  3. 在证书导入视图中显示键盘后,离开应用程序,再次打开应用程序,然后关闭/多任务应用程序:[Snapshotting] Snapshotting a view (0x7f99e3821600, UIKeyboardImpl) that has not been rendered at least once requires afterScreenUpdates:YES.

我试图找出是什么让操作系统认为它必须拍摄包括键盘的快照,即使主视图从未显示键盘。我还试图找出为什么键盘认为它必须在键盘被关闭后对其进行快照(resignFirstResponder())。我不确定如何调试将我的证书导入视图保留在堆栈上的原因(我认为这可能是一个原因)。

AppDelegate.swift

func applicationWillResignActive(_ application: UIApplication) {

    guard let rv = window?.rootViewController as? UINavigationController …
Run Code Online (Sandbox Code Playgroud)

iphone uikit ios swift

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

使用点符号作为键无法从数组的对象创建修改后的数组

为什么我不能key像这样在新创建的对象中设置 a :

const baseObject = {key: "a", val: "b"}
const modifiedObject = {baseObject.val: baseObject.key} // SyntaxError: Unexpected token '.'
Run Code Online (Sandbox Code Playgroud)

但是使用括号是可以的:

const modifiedObject = {[baseObject.val]: baseObject.key} // OK
Run Code Online (Sandbox Code Playgroud)

根据我的理解,[baseObject.val]应该从里面创建一个baseObject.val只有那个项目的新数组。你能解释一下为什么会这样吗?这是key从对象的嵌套属性设置 a 的最佳实践方法吗?

我尝试在 MDN 和其他来源上查找信息,但找不到任何信息。我认为我的搜索短语是错误的,因为应该有一个非常基本的解释。如果您可以将我链接到已提供的答案,请随意标记为重复。

javascript arrays object

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

在过滤器函数中用逻辑&&连接谓词

我刚刚在learnyouahaskell.com 上偶然发现了这句话:

在列表推导式中应用多个谓词的过滤器等效于多次过滤某些内容或将谓词与逻辑 && 函数连接起来。

有人可以为最后一部分(将谓词与逻辑 && 函数连接起来)举个例子吗?

作者的意思是这样的吗(不起作用):

filter ((>3) && (<10)) [5,3]
Run Code Online (Sandbox Code Playgroud)

haskell

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

詹金斯:“sh npm i ...”在 docker 代理中不起作用

意图

我正在尝试构建一个Jenkinsfile基于最新nodedocker 镜像的非常简单的声明。我想安装的依赖Node.js通过调用应用程序sh 'npm install ...'Jenkinsfilenpm在没有 Jenkins 的情况下从 Docker 容器安装 with很有魅力,但在使用 Jenkins Pipeline 时则不然。

詹金斯档案

pipeline {
   agent { 
       docker {
           image 'node:latest'
       }
   }
   stages {
      stage('Install Dependencies') {
         steps {
            sh 'npm -v' // sanity check
            sh 'ls -lart' // debugging filesystem
            sh 'npm i axios' // this leads to the error
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

Jenkins 中的控制台登录

+ npm install axios
npm ERR! code EACCES …
Run Code Online (Sandbox Code Playgroud)

node.js npm jenkins docker npm-install

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

等效于 Python 中的 Haskell 列表理解示例

我想知道List comprehension来自learnyouahaskell.com的以下示例是否可以复制到Python

[ if x < 10 then "BOOM!" else "BANG!" | x <- xs, odd x]   
Run Code Online (Sandbox Code Playgroud)

我尝试了这样的事情,但无法获得else与 Python 列表理解中的工作路径等效的路径:

["BOOM!" for x in range(7,13) if x < 10] # else "BANG!"
Run Code Online (Sandbox Code Playgroud)

python haskell list-comprehension list

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