小编uni*_*ion的帖子

字符串从包含字符串的Iterable和(NoneType/Undefined)连接

我正在寻找一种干净的方法,将变量组合成一个带有预定义分隔符的单个字符串.问题是有时这些变量中的一些不会总是存在或者可以设置为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

9
推荐指数
3
解决办法
9371
查看次数

Python setuptools 从命令行覆盖版本

我正在为一个 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)

python setuptools thoughtworks-go

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

Rust 和 serde 使用泛型反序列化

我正在尝试使用泛型从文件中反序列化结构,以便与 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)

generics traits rust serde

4
推荐指数
2
解决办法
3896
查看次数

标签 统计

python ×2

generics ×1

rust ×1

serde ×1

setuptools ×1

thoughtworks-go ×1

traits ×1