小编nls*_*bch的帖子

分支管道的“此管道没有阶段/作业”

鉴于以下情况.gitlab-ci.yml

---
stages:
  - .pre
  - test
  - build

compile-build-pipeline:
  stage: .pre
  script: [...]
  artifacts:
    paths: [".artifacts/build.yaml"]

lint-source:
  stage: .pre
  script: [...]

run-tests:
  stage: test
  rules:
    - if: '$CI_COMMIT_BRANCH == "$CI_DEFAULT_BRANCH"'
  trigger:
    strategy: depend
    include:
      artifact: .artifacts/tests.yaml
      job: "compile-test-pipeline"
  needs: ["compile-test-pipeline"]

build-things:
  stage: test
  rules:
    - if: '$CI_COMMIT_BRANCH == "$CI_DEFAULT_BRANCH"'
  trigger:
    strategy: depend
    include:
      artifact: .artifacts/build.yaml
      job: "compile-build-pipeline"
  needs: ["compile-build-pipeline"]
...
Run Code Online (Sandbox Code Playgroud)

配置应该始终运行(任何分支,任何源)。测试和构建作业应仅在默认分支上运行。

但是,不会为合并请求运行任何作业,并且在默认分支以外的分支上手动触发管道会出现错误No Jobs/Stages for this Pipeline

我尝试明确设置用于阶段rules: [{if: '$CI_PIPELINE_SOURCE'}]中作业的始终运行规则.pre,但没有骰子。

我究竟做错了什么?

pipeline gitlab-ci

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

pandas.Series()使用DataFrame Columns创建返回NaN数据条目

我试图使用简化的代码将数据帧转换为一个系列,如下所示:

dates = ['2016-1-{}'.format(i)for i in range(1,21)]
values = [i for i in range(20)]
data = {'Date': dates, 'Value': values}
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'])
ts = pd.Series(df['Value'], index=df['Date'])
print(ts)
Run Code Online (Sandbox Code Playgroud)

但是,打印输出如下所示:

Date
2016-01-01   NaN
2016-01-02   NaN
2016-01-03   NaN
2016-01-04   NaN
2016-01-05   NaN
2016-01-06   NaN
2016-01-07   NaN
2016-01-08   NaN
2016-01-09   NaN
2016-01-10   NaN
2016-01-11   NaN
2016-01-12   NaN
2016-01-13   NaN
2016-01-14   NaN
2016-01-15   NaN
2016-01-16   NaN
2016-01-17   NaN
2016-01-18   NaN
2016-01-19   NaN
2016-01-20   NaN
Name: Value, dtype: float64
Run Code Online (Sandbox Code Playgroud)

哪里NaN来的? …

python time-series dataframe python-3.x pandas

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

更好的方法来检查列表中的所有列表是否都是相同的长度?

目前正在运行:

l1 = [i for i in range(0,10)]
l2 = [i for i in range(0,10)]
l3 = [i for i in range(0,10)]
lists = [l1, l2, l3]
length = len(lists[0])
for l in lists:
    if length != len(l):
        raise ValueErrorr('not all lists have same length!')
Run Code Online (Sandbox Code Playgroud)

有没有比for循环测试更漂亮的方法?是否有更快/更好的方式O(n)

python algorithm python-3.x

6
推荐指数
3
解决办法
3630
查看次数

扩展 requests.Response 类的明智方法?

我正在尝试延长requests.Response,但我不知道如何去做。

我想要的是延长requests.Response。我看到的问题是我必须创建一个全新的库分支,或者至少创建一个自定义适配器并为此实现自定义代码。

我目前正在将响应存储在新类的属性中,但这意味着我的自定义APIResponse实际上并不像扩展requests.Response对象那样运行。

这是我目前的虚拟工作。

class APIResponse:
    def __init__(self, req_response, formatted_json=None):
        self._content = req_response._content
        self._response = req_response

    @property
    def response(self):
        return self._response
Run Code Online (Sandbox Code Playgroud)

如上所述,我希望我的自定义类表现得像一个requests.Response对象,并具有一些额外的功能。由于Response对象是在非常低的级别(即库HTTPAdapter中的模块)生成的requests,因此我还必须编写一个自定义适配器 - 并且从逻辑上讲,还要自定义调用requests.Sessions它的类。

这一切都让我相信我在这里错过了一些东西。

是否有一种明智的方法来扩展request.Response对象,而无需大量代码?

我也尝试过在实例化Response对象周围“包装”一个类,但它看起来很老套:

class APIResponse(Response):
    __attrs__ = ['_content', 'status_code', 'headers', 'url', 'history',
                 'encoding', 'reason', 'cookies', 'elapsed', 'request',
                 '_formatted']

    def __init__(self, req_response):
        self._content = req_response._content
        self._content_consumed = req_response._content_consumed
        self.status_code = req_response.status_code
        self.headers = req_response.headers
        self.url …
Run Code Online (Sandbox Code Playgroud)

python-3.x python-requests

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

通过Python中的global关键字从外部作用域访问变量

根据这个问题的接受答案,我理解我无法创建纯全局变量.好的,很酷.

然而,他继续说:

[..]你所能做的只是在特定范围内制作一个变量.(如果在Python解释器中创建变量,然后导入其他模块,则您的变量位于最外层范围内,因此在Python会话中是全局的.[..]

好的,所以我们不能在原始意义上分配全局变量,但似乎可以通过global关键字从包中访问最外层范围内的变量,对吗?

显然,在我通过命令行参数访问传递给我的python程序的变量的努力中,我显然缺少一些关键的东西.

我的程序有通常的__main__.py,它处理参数解析并从我的python模块执行代码backend.

backend具有依赖于通过命令行参数输入的代码.但是,我似乎无法提供这些参数backend.

我的包的布局是:

mypackage
- __main__.py
- backend/
    -__init__.py
    -direction.py
Run Code Online (Sandbox Code Playgroud)

这是__main__.py:

import argparse

# Setup ArgParser
parser = argparse.ArgumentParser(description="Fancy Description of program.")
parser.add_argument('--tar', nargs=1, dest='target',
                help='Specify output folder.',
                default=['/path/to/output'])

target_dir = args.target[0]

# Import backend now that our variable is set.
from backend.direction import direction
Run Code Online (Sandbox Code Playgroud)

我的backend/direction.py:

global target_dir
print(target_dir)
Run Code Online (Sandbox Code Playgroud)

运行这个提出了一个NameError: 'target_dir' is not defined.那么大便呢?我在这里假设是不可能的,还是我只是搞砸了声明?

python scope global-variables variable-declaration

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