我正在寻找一种干净的方法,将变量组合成一个带有预定义分隔符的单个字符串.问题是有时这些变量中的一些不会总是存在或者可以设置为None.我不能让分隔符字符串重复.问题示例:
# This works because I have all strings
str('-').join(('productX', 'deployment-package', '1.2.3.4'))
# 'productX-deployment-package-1.2.3.4'
# But I have more args that might be None / or not exist like and that breaks
str('-').join(('productX', 'deployment-package', '1.2.3.4', idontexist, alsonotexist))
str('-').join(('productX', 'deployment-package', '1.2.3.4', None, None, None))
# If I set the other missing variables to empty strings, I get duplicated joiners
str('-').join(('productX', 'deployment-package', '1.2.3.4', '', '', ''))
# 'productX-deployment-package-1.2.3.4---'
Run Code Online (Sandbox Code Playgroud)
有一个很好的干净方法吗?
我正在为一个 python 项目设置一个持续交付系统,并且我正在尝试弄清楚如何通过 Egg_info 设置项目构建的整个版本字符串。
我使用的是thoughtworks GO,它有一个内置的版本跟踪标签,名为GO_PIPELINE_LABEL。我想使用此版本作为参数来调用 setup_tools Egg 构建命令,以完全覆盖 setup.py 中的版本。
例如:
GO_PIPELINE_LABEL='1.2.3.4' python setup.py egg_info --tag-build=$GO_PIPELINE_LABEL bdist_egg
Run Code Online (Sandbox Code Playgroud)
似乎导致
'dist/myproject-0.0.01.2.3.4-py2.7.egg'
Run Code Online (Sandbox Code Playgroud)
它似乎总是将 setup.py 版本和命令行版本连接起来。我的 setup.py 看起来像这样:
import os
from setuptools import setup, find_packages
from setuptools.command.install import install
ROOT_DIR = os.path.dirname(__file__)
SOURCE_DIR = os.path.join(ROOT_DIR)
# python setup.py egg_info -rb14 bdist_egg rotate -m.egg -k5
# python setup.py egg_info --tag-build=1.2.3.4 bdist_egg
version = ''
setup(name='myproject',
version=version,
description='baa',
author='Me',
author_email='irrelevant@domain.com',
packages=['submodule', 'another.submodule'],
package_data = {
'': ['*.xsd'],
},
install_requires=['cmd2',
'dnspython',
'ordereddict',
'prettyprint',
'pycontrol',
'simplejson', …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用泛型从文件中反序列化结构,以便与 Swagger 生成的 API 一起使用。所以我把这个几乎可以工作,但我无法从“Owned”指针解压外部 Struct 对象,正如你在测试中看到的那样。
这可能是错误的策略,但问题是我有各种 yaml 文件,我想读入并反序列化暗示正确的结构来反序列化。我不想为每个 Struct 实现一个“readfile”函数,因为有很多。所以我试图让这个通用库工作,它应该反序列化为正确的结构,并与 Swagger API 一起使用。
这是非常接近的工作,但我似乎无法解开的Outer<ExternalStructA>逼到了ExternalStructA。
Owned(ExternalStructA { x: 1, y: 2 })
Owned(ExternalStructB { a: 1, b: 2 })
Run Code Online (Sandbox Code Playgroud)
lib.rs:
#[cfg(test)]
mod tests {
use crate::generics_yaml_deserializer::Outer;
use serde::{de, Deserialize, Deserializer, Serialize, Serializer};
#[derive(Debug, Serialize, Deserialize)]
pub struct ExternalStructA {
x: u32,
y: u32,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ExternalStructB {
a: u64,
b: u64,
}
#[test]
fn deserialize() {
let a = r#"--- …Run Code Online (Sandbox Code Playgroud)