鉴于以下情况.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,但没有骰子。
我究竟做错了什么?
我试图使用简化的代码将数据帧转换为一个系列,如下所示:
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来的? …
目前正在运行:
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)?
我正在尝试延长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解释器中创建变量,然后导入其他模块,则您的变量位于最外层范围内,因此在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 ×3
python-3.x ×3
algorithm ×1
dataframe ×1
gitlab-ci ×1
pandas ×1
pipeline ×1
scope ×1
time-series ×1