首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pweave能和流氓玩得很好吗?

Pweave能和流氓玩得很好吗?
EN

Stack Overflow用户
提问于 2012-01-10 01:08:13
回答 2查看 373关注 0票数 2

我对开发自文档化管道很感兴趣。

我可以在Pweave块中包装Ruffus任务吗?

代码语言:javascript
复制
Pweave and Ruffus
==============================================================

**Let's see if Pweave and ruffus can play nice**


<<load_imports>>=
import time
from ruffus import *
@

**Do this**
<<task1>>=
task1_param = [
                    [ None, 'job1.stage1'], # 1st job
                    [ None, 'job2.stage1'], # 2nd job
              ]
@files(task1_param)
def first_task(no_input_file, output_file):
    open(output_file, "w")
@

我有一种感觉,Ruffus的装饰者正在抛弃Pweave:

代码语言:javascript
复制
$ Pweave ruffus.Pnw
Processing chunk 1 named load_imports
Processing chunk 2 named task1
<type 'exceptions.TypeError'>
("unsupported operand type(s) for +: 'NoneType' and 'str'",)

也许有变通的办法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-15 01:53:54

我是Ruffus的作者,刚刚签入了ruffus的更改,以允许它与pweave合作进入google源代码存储库。我将在下一个版本中使用。

如果您没有耐心,可以使用以下命令行获取最新的(修复的)源代码:

代码语言:javascript
复制
hg clone https://bunbun68@code.google.com/p/ruffus/ 

狮子座

详情如下:

Ruffus使用每个ruffus任务函数的全限定名(带有模块名称)来唯一标识代码,以便可以通过名称引用管道任务。

Pweave代码非常简单。好的!Pweave一次将代码块发送到python解释器,使其成为逐个块的exec-ed。当然,块不属于任何“模块”,任务函数的function.__module__值为None,而不是任何string。

None转换为"None"的一个明智的str()似乎已经解决了这个问题。

狮子座

票数 2
EN

Stack Overflow用户

发布于 2012-01-10 04:38:32

需要说明的是,pweave与装饰器配合得很好。

这与ruffus如何识别哪个函数有关--函数实际上必须属于一个模块文件,因为使用了function.__module__属性。我不确定您是否能诱使它包含创建这些函数标识符所需的所有信息。

如果编辑pweave附带的pweb.py脚本,使pweave()函数中的try:...except:语句更冗长(最简单的方法是注释掉tryexcept部分),您可以自己看到错误。你得到的错误是在ruffus的最深处。

出于教学目的,我建议远离像ruffus这样的复杂库,因为ruffus特别使用了许多技巧(如果您愿意,可以使用语法糖)来提供简单的用户界面。如果你决意要使用它来达到这个目的,你可以尝试联系对我的特性请求做出了很大响应的作者。他可能对如何做到这一点有一些想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8792278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档