小编JL *_*ret的帖子

npm - 如何实际使用package-lock.json进行基于锁定版本的安装?

刚刚从3点到5点更新,以使用此功能.

对不起,我一定错过了一些非常明显的东西,但是如何在安装时让npm尊重package-lock.json文件中的固定版本?

假设我有package.json一些过时的套餐.做一个npm install会吸引新的东西,打破我的应用程序.

例如,我想要稳定的主要包是bootstrap- 我想暂时bootstrap@4.0.0-alpha.6上阻止它的版本,但是npm install找到4.0.0-beta.28.

如果我有npm update任何包,package-lock.json会更新.

我们去我的开发目录.

这是我的boot.rap的package.json条目:

"bootstrap": "^4.0.0-alpha.6"

这就是我对已安装的软件包和元数据的看法:

$ npm list 2>/dev/null | grep bootstrap
??? bootstrap@4.0.0-alpha.6
??? bootstrap-vue@0.16.1
? ??? bootstrap@4.0.0-alpha.6 deduped


(env) jluc@py$ grep bootstrap package.json package-lock.json
package.json:    "bootstrap": "^4.0.0-alpha.6",
package.json:    "bootstrap-vue": "^0.16.1",
package-lock.json:    "bootstrap": {
package-lock.json:      "version": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-alpha.6.tgz",
package-lock.json:    "bootstrap-vue": {
package-lock.json:      "version": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-0.16.1.tgz",
package-lock.json:        "bootstrap": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-alpha.6.tgz",
Run Code Online (Sandbox Code Playgroud)

看起来不错.Lock是bootstrap-4.0.0-alpha.6.

但我如何使用实际使用 …

npm

27
推荐指数
2
解决办法
8654
查看次数

使用 Cypress.io 以编程方式登录 Django 服务器(不使用 UI)

肯定遗漏了一些明显的东西,但由于它的 CSRF 保护,我非常坚持登录到 Django。

查看了使用 cy.getCookie() 来测试使用 HTML Web 表单登录的示例食谱,但如果它推荐的第一件事是禁用 CSRF,那确实没有多大帮助。

Django 想要什么:

这是正常的、受 CSRF 保护的 Django 登录视图在其传入的 POST 数据中所期望的:

csrfmiddlewaretoken=Y5WscShtwZn3e1eCyahdqPURbfHczLyXfyPRsEOWacdUcGNYUn2EK6pWyicTLSXT
username=guest
password=password
next
Run Code Online (Sandbox Code Playgroud)

它不是在请求头中寻找 CSRF,也不x-csrf-token是在响应头上设置。

在此处输入图片说明

而且,使用我的代码,我从不传入让 Django 返回 403 错误的 csrf 令牌。

Cypress.Commands.add("login", (username, password) => {
    var login_url = Cypress.env("login_url");

    cy.visit(login_url)

    var hidden_token = cy.get("input[name='csrfmiddlewaretoken']").value;
    console.log(`hidden_token:${hidden_token}:`)

    console.log(`visited:${login_url}`)
    var cookie = cy.getCookie('csrftoken');
    // debugger;

    var csrftoken = cy.getCookie('csrftoken').value;
    console.log(`csrftoken:${csrftoken}:`) 
    console.log(`request.POST`)

    cy.request({
        method: 'POST',
        form: true,
        url: login_url,
        // body: {'username': 'guest', 'password': 'password', 'csrfmiddlewaretoken': cy.getCookie('csrftoken').value} …
Run Code Online (Sandbox Code Playgroud)

django cypress

8
推荐指数
2
解决办法
3405
查看次数

在Python中调用方法后如何在方法内部访问类型提示

我开始在大型代码库中实现类型提示,该代码库由多个开发人员进行工作,以提高函数应作为参数的透明度。

我还想验证传递给函数的参数是否为正确的类型。

这在函数内部很容易做到,但这似乎不是pythonic。我想制作一个可以从函数传递args和类型的实用程序,如果为对应的arg传递了错误的类型,则会引发异常。

例:

def find_integer_sum(a: int, b: int):
    utility.validate_args(args, types)
    return a + b
Run Code Online (Sandbox Code Playgroud)

我想要的是以某种方式将args和类型传递给函数,而无需始终手动插入,utility.validate_args({a: int, b: int})因为这样会很麻烦。

有没有一种方法可以使用其类型提示访问args?

python type-hinting python-3.x

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

属性注解,用于检查分配给初始设置为无的保护值

我有一个属性,每个实例仅计算一次,并None用作保护值。这是带有属性的非常常见的模式。

注释的最佳方法是什么?

编辑/说明:

这个问题是关于如何使用mypy来验证我物业的代码。与如何重构代码无关。作为非可选的int,属性的类型就是我想要的方式。例如,假设下游代码将执行print(book.the_answer+1)

不正确的字符串分配和None完全是为了破坏按物业期望定义的合同,我希望mypy对其进行标记。

尝试#1

class Book:

    def __init__(self, title):
        self.title = title

    _the_answer = None #line 6
    # _the_answer : int = None #line 7

    def __str__(self):
        return "%s => %s" % (self.title, self.the_answer)

    @property
    def the_answer(self)->int:
        """always should be an int.  Not an Optional int"""
        if self._the_answer is None:
            if "Guide" in self.title:
                #this is OK
                self._the_answer = 42
            elif "Woolf" in self.title:
                #this is wrong, mypy should flag it.
                self._the_answer = "?, …
Run Code Online (Sandbox Code Playgroud)

python type-hinting mypy

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

python Pathlib,如何删除前导目录以获取相对路径?

假设我有这个目录结构。

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 root1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 root2\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file1\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 file2\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file3\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 zoom\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 z1\n\xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file41\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想隔离相对于 的路径组件root1/root2,即去掉前导root部分,给出相对目录:

\n\n
  bar/file1\n  foo/file3\n  zoom/z1/file41\n
Run Code Online (Sandbox Code Playgroud)\n\n

根深度可以是任意的,文件(该树的节点)也可以驻留在不同的级别。

\n\n

这段代码可以做到这一点,但我正在寻找 Pathlib\'s pythonic 方式来做到这一点。

\n\n
from pathlib import Path\nimport os\n\n#these would come from os.walk or some glob...\nfile1 = Path("root1/root2/bar/file1")\nfile2 = Path("root1/root2/foo/file3")\nfile41 = Path("root1/root2/zoom/z1/file41")\n\nroot = Path("root1/root2")\n\n#take out the root prefix by string replacement.\nfor file_ in [file1, file2, file41]:\n\n    #is there a PathLib …
Run Code Online (Sandbox Code Playgroud)

python path

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

postgresql 11 - 使用 ICU 语言环境创建数据库

我想使用 ICU 系统不敏感的排序规则,以避免 postgres11-on-mac 与 postgres11-on-Ubuntu 之间的排序差异。我的第一个测试是转储现有的Collate=en_US.UTF-8并将它们 pg_restore 到使用创建的数据库中Collate=en-US-x-icu

创建数据库文档有这样的内容:

要创建具有不同语言环境的数据库音乐:

创建数据库音乐 LC_COLLATE 'sv_SE.utf8' LC_CTYPE 'sv_SE.utf8' 模板 template0;

我似乎已经有了所需的 icu 区域设置:

select collname, collprovider from pg_collation where collname like 'en_US%';

        collname        | collprovider
------------------------+--------------
 en_US.UTF-8            | c
 en_US                  | c
 en_US.ISO8859-15       | c
 en_US.ISO8859-1        | c
 en_US                  | c
 en_US                  | c
 en-US-x-icu            | i 
 en-US-u-va-posix-x-icu | i 
(8 rows)
Run Code Online (Sandbox Code Playgroud)

但使用任一 icu 语言环境创建数据库时都没有运气。

CREATE DATABASE test LC_COLLATE = 'en-US-x-icu' TEMPLATE template0;
ksysdb=# CREATE DATABASE test LC_COLLATE …
Run Code Online (Sandbox Code Playgroud)

postgresql locale collation icu postgresql-11

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

在类上“存储”函数而不绑定它的最简单方法?

我正在编写一些支持代码以加快通过 RequestFactory 调用 Django 视图(在别处声明的函数)。我将大部分测试属性直接存储在类上,而不是它们的实例上。

我必须做的一件事是在类中存储我感兴趣的函数,以便稍后调用它(使用检查为其提供正确的参数)。

这是我的总体意图:

def to_test(var1, var2, var3):
    "this function has nothing to do with MyTest"
    assert isinstance(var1, basestring), "not an instance"

class MyTest(unittest.TestCase):

    #only using this attribute to store the function to 
    #test, not to bind that function
    func_under_test = to_test

    def test_with_abc(self):
        self.func_under_test("a","b", "c")

    def test_with_def(self):
        self.func_under_test("d","e", "f")
Run Code Online (Sandbox Code Playgroud)

但是一旦我将一个函数分配给一个类,它就会绑定到该类。

这在 99% 的情况下都很棒。只是不在这里,因为它在调用时得到了错误的参数。相反,在每个类上我都重新声明了一些东西,以便我可以将函数分配给它,而不是直接在类上。即使是元类也无济于事。

一些示例代码

我想要的是 FunctionStore1/2 的语法。我实际上最接近的是 FunctionStore3/4/6,但它们要求您记住_每次都复制和粘贴小声明。没什么大不了的,只是hacky。

def regular_function(*args, **kwds):
    print ("    regular_function(%s)" % (locals()))

def regular_function2(*args, **kwds):
    print …
Run Code Online (Sandbox Code Playgroud)

python metaprogramming

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

django和python请求 - 在发布请求时获得403

我正在使用requests登录我的Django网站进行测试(是的,我知道Django TestClient,但我需要简单的http).我可以登录,只要我收到请求,一切都OK.

当我尝试使用post时,我从csrf中间件获得403.我现在通过在我的视图中使用@crsf_exempt来解决这个问题,但更喜欢长期解决方案.

这是我的代码:

with requests.Session() as ses:

    try:

        data = {
            'username': self.username,
            'password': self.password,
        }

        ses.get(login_url)
        try:
            csrftoken = ses.cookies["csrftoken"]
        except Exception, e:
            raise
        data.update(csrfmiddlewaretoken=csrftoken)

        _login_response = ses.post(login_url, data=data)

        logger.info("ses.cookies:%s" % (ses.cookies))

        assert 200 <= _login_response.status_code < 300, "_login_response.status_code:%s" % (_login_response.status_code)

        response = ses.post(
            full_url,
            data=data,
            )

        return self._process_response(response)
Run Code Online (Sandbox Code Playgroud)

登录工作正常,我可以在这里看到csrf令牌.

 INFO:tests.helper_fetch:ses.cookies:<RequestsCookieJar[<Cookie csrftoken=TmM97gnNHs4YCgQPzfNztrAWY3KcysAg for localhost.local/>, <Cookie sessionid=kj6wfmta
Run Code Online (Sandbox Code Playgroud)

但是,中间件将cookie视为空.

INFO:django.middleware.csrf:request.COOKIES:{}
Run Code Online (Sandbox Code Playgroud)

我已经将日志代码添加到它:

def process_view(self, request, callback, callback_args, callback_kwargs):

    if getattr(request, 'csrf_processing_done', False):
        return None

    try: …
Run Code Online (Sandbox Code Playgroud)

django django-csrf python-requests

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

Vue:针对Vuex绑定的计算与数据()。

(注意:我并不是在问如何使用watch)。

我有此表单模板,并想将其绑定到一些变量,例如objectvalue3,在Vuex存储中跟踪的变量(注意:一页上可能存在不同的表单,所以props.formname告诉表单要在哪里查看)。

<template>
    <div>
    Tracking formname_:{{formname_}}:
        <form method="post" autocomplete="off">
            <input type="text" name="objectvalue3" :value="objectvalue3" />
            <input type="submit" class="btn btn-primary btn-success" value="Track" @click.prevent="write">        
        </form>
    </div>
</template>
....
props: {
    formname: {
        type: String,
        default: "main"
    }
},
Run Code Online (Sandbox Code Playgroud)

在跟踪它data确实没有工作-即形式没有更新-它只是不断的vuex被初始化为值:

data: function() {
    return {
        formname_: this.formname
        ,objectvalue3: this.$store.state.tracker[this.formname].objectvalue3
},
Run Code Online (Sandbox Code Playgroud)

但是使用computed作品。

computed: {
    objectvalue3: function() {
        return this.$store.state.tracker[this.formname].objectvalue3
    }
Run Code Online (Sandbox Code Playgroud)

我知道computed需要计算时必须使用。但是这里没有真正的计算。除非,是不是通过哈希查找this.formname告诉表单tracker要看哪个属性导致直线data失败?这是vuex特有的吗?

vue.js vuex

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

javascript 有什么等同于 Python 的 `id` 函数的东西吗?

我正在努力解决一些d3.js v4故障排除问题,我怀疑我认为相同的一些对象实际上并不是同一个对象。

在 Python 中,我可以做到print("obj1:%s" % (id(obj1))), print("obj2:%s" % (id(obj2))).

这为我提供了对象的 Python 内存分配,如果它们匹配,我就知道它们是相同的对象。JS 中有什么等价的东西吗?

这与How to know that javascript variable point to the same memory address 有关,但与这种情况不同,两个引用不在同一时间范围内,所以我不能===

javascript python

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