Metadata-Version: 1.1
Name: pu
Version: 0.10.2
Summary: Python utils
Home-page: https://github.com/huyx/pu
Author: yuxin
Author-email: ycyuxin@gmail.com
License: GNU Library or Lesser General Public License (LGPL)
Description: Python Utilities
        ================
        
        Python 编程工具集，本着实用、简单的原则，尽量减少对其他模块的依赖。
        
        由于内容比较杂，所以并不过分追求兼容性。
        
        pu.aio
        ------
        
        asyncio 相关扩展和工具。
        
        pu.aio.util
        
        - file_get_contents: 读取文件内容或下载 http 页面内容
        
        pu.aio.timer
        ~~~~~~~~~~~~
        
        提供一个简单的 Timer。
        
        - class Timer
        
        pu.aio.client
        ~~~~~~~~~~~~~
        
        简单的 Client 类和支持重连的 ReconnectingClient
        
        - class Client
        - class ReconnectingClient
        
        pu.aio.dummyprotocol
        ~~~~~~~~~~~~~~~~~~~~
        
        支持动态协议识别，根据收到的数据判断连接实际采用的协议。
        
        - class DummyProtocolFactory
        - class DummyProtocol
        
        pu.aio.virtualprotocol
        ~~~~~~~~~~~~~~~~~~~~~~
        
        !! 请使用 dummyprotocol
        
        支持动态协议识别，根据收到的数据判断连接实际采用的协议，动态协议需要继承自 RealProtocol。
        
        - class VirtualProtocolFactory
        - class VirtualProtocol
        - class RealProtocol
        
        pu.aio.protocols.basic
        ~~~~~~~~~~~~~~~~~~~~~~
        
        class LineReceiver 类似于 twisted.protocols.basic.LineOnlyReceiver，但支持自动检测行分隔符。
        
        pu.util
        -------
        
        - shorten
        
        pu.dictutil
        -----------
        
        - repr_dict
        - Dot
        - DotDict
        - OrderedDict
        - DotOrderedDict
        
        pu.manager
        ----------
        
        - class Manager: 对象管理器
        
        
        用法::
        
            manager = Manager()
        
            manager.register(1, 'ONE')
        
            @manager.register
            def a(): pass
        
            @manager.named('funcb', 'FUNCB')
            def b(): pass
        
            @manager.register
            class A: pass
        
            @manager.named('clsb', 'CLSB')
            class B: pass
        
            assert manager.get(1) == 'ONE'
        
        pu.datatype
        -----------
        
        自定义数据类型
        
        - class pretty_bytes -- 支持 hex 格式
        
        示例::
        
            pb = pretty_bytes(b'\xaa\xbb')
            assert '{0:hex}'.format(pb) == 'aabb'
        
        pu.pcap
        -------
        
        网络抓包工具，参考:
        
        - http://www.binarytides.com/python-packet-sniffer-code-linux/
        
        命令行用法::
        
            python -m pu.pcap				# Windows/Linux
            python -m pu.pcap eth1			# Linux
            python -m pu.pcap lo			# Linux
            python -m pu.pcap 192.168.0.100	# Windows
        
        程序中的用法::
        
            from pu.pcap import pcap
        
            for packet in pcap('eth1'):
                 print(packet)
        
        pu.rcp
        ------
        
        简单的远程调用协议，文档直接看源代码里面的注释。
        
        pu.simplefilter
        ---------------
        
        简单的过滤器，支持的语法::
        
            <filter1> && <filter2> || <filter3> && <filter4> ...
        
        每个 filter 的格式::
        
            <name><op><pattern>
        
        其中 op:
        
        - = -- 存在且相等
        - != -- 不存在或不等于
        - ~= -- 匹配(支持 * ?)
        - !~= -- 不匹配(支持 * ?)
        
        如果 op 加一个前缀 `#`, 表示 pattern 以 hex 字符串格式指定。
        
        示例::
        
            sip = 192.168.0.1 && dport = 80 || dport = 8080
        
        pu.minimist
        -----------
        
        分析命令行参数，源自 `minimist <https://github.com/substack/minimist>`_，目的是
        提供一个简单，有一定通用性的命令行参数分析工具。
        
        
        只提供一个函数接口::
        
            parse(args, *, lists=[], bools=[], strings=[], defaults={})
        
        示例::
        
            # 综合示例
            $ python -m pu.minimist -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
            Namespace(_=['foo', 'bar', 'baz'], a=True, b=True, beep='boop', c=True, n=5, x=3, y=4)
          
            $ python -m pu.minimist -a=a -b=b
            Namespace(_=[], a='a', b='b')
        
            # 参数数组
            $ python -m pu.minimist -a a -a b
            Namespace(_=[], a=['a', 'b'])
          
            # '--' 后面的参数全部保存到 '--'
            $ python -m pu.minimist a -- -b -c d
            Namespace(--=['-b', '-c', 'd'], _=['a'])
        
            # '-' 后面多个选项，则全部为 bool 类型
            $ python -m pu.minimist -a -b -cd
            Namespace(_=[], a=True, b=True, c=True, d=True)
        
            # 用 '.' 结尾表示 bool 类型
            $ python -m pu.minimist --arg. x -a. y
            Namespace(_=['x', 'y'], a=True, arg=True)

        

        

        0.10.2(2014-11-20)
        ------------------
        
        - pu.aio.protocols.cli: 完善异常处理
        
        0.10.1(2014-11-20)
        ------------------
        
        - pu.minimist: 修改分析结果为 dict 类型
        - pu.util: 增加 format_args 函数
        - pu.aio.protocols.cli: 修改参数分析
        
        0.10.0(2014-11-19)
        ------------------
        
        - 增加 pu.aio.protocols.cli.Cli -- 命令行接口协议
        
        
        0.9.2(2014-11-17)
        -----------------
        
        - pu.minimist -- 选项以 . 结尾表示 bool 类型
        
        0.9.1(2014-11-17)
        -----------------
        
        - 整理目录结构
        - BUGFIX: 测试代码中相对 import 改为绝对 import
        
        0.9.0(2014-11-17)
        -----------------
        
        - 添加 pu.aio.protocols.LineReceiver -- 基于行的协议
        
        0.8.0(2014-11-17)
        -----------------
        
        - 添加 pu.minimist -- 命令行参数分析工具
        
        0.7.2(2014-11-14)
        -----------------
        
        - 添加 pu.rcp 的说明
        
        0.7.1(2014-11-14)
        -----------------
        
        - 整理: 移动 test 目录
        
        0.7.0(2014-11-14)
        -----------------
        
        - 添加 pu.rcp -- 一个简单远程调用协议(Remote Call Protocol)
        
        0.6.7(2014-11-12)
        -----------------
        
        - BUGFIX: pu.dictutil.DotOrderedDict 继承类中自定义 __repr__ 引起错误（因为内部异常处理中引用了 %r）
        
        0.6.6(2014-11-12)
        -----------------
        
        - pu.util.deep_encode -- 深入数据结构内部，尽可能把字符串编码
        - pu.util.deep_decode -- 深入数据结构内部，尽可能把 bytes 解码
        
        0.6.5(2014-11-12)
        -----------------
        
        - iterattrs -- 增加参数，控制是否返回保护属性
        
        0.6.4(2014-11-12)
        -----------------
        
        - pu.util.iterattrs -- 返回指定对象的属性列表
        
        0.6.3(2014-11-07)
        -----------------
        
        - BUGFIX: pu.pcap IP 包构造错误
        
        0.6.2(2014-11-07)
        -----------------
        
        - 读取 http 文件出现错误时抛出异常
        
        
        0.6.1(2014-11-07)
        -----------------
        
        - BUGFIX: pu.pcap TCP flags 分析错误
        - 添加 pu.simplefilter -- 简单过滤器
        - 添加 example\pcap.py
        
        0.6.0(2014-11-06)
        -----------------
        
        - 添加 class pu.datatype.pretty_bytes
        - pu.pcap: 网络抓包工具
        
        0.5.5(2014-11-01)
        -----------------
        
        - pu.util.bytes_fromhex: 允许比 bytes.fromhex 更宽松的输入
        
        0.5.4(2014-11-01)
        -----------------
        
        - BUGFIX: pu.aio.timer.Timer 添加类成员 __timer
        
        0.5.3(2014-11-01)
        -----------------
        
        - 添加 pu.aio.util.file_get_contents
        
        
        0.5.2(2014-10-31)
        -----------------
        
        - dictutil: Dot 增加 __contains__
        
        0.5.1(2014-10-31)
        -----------------
        
        - dictutil: 改进 Dot 的 __repr__ 和 __str__
        
        0.5.0(2014-10-31)
        -----------------
        
        - 增加 dummyprotocol, 取代 virtualprotocol
        
        0.4.4(2014-10-30)
        -----------------
        
        - aio 中各个模块采用自己的 logger
        
        0.4.3(2014-10-30)
        -----------------
        
        - dictutil.Dot: 添加 get 和 setdefault 方法
        
        0.4.3(2014-10-30)
        -----------------
        
        - client.Client: 修改 connect 方法为 coroutine
        - 版本: Alpha 改为 Beta
        
        0.4.2(2014-10-29)
        -----------------
        
        - 允许指定 yaml 文件编码（缺省为 utf-8）
        
        0.4.1(2014-10-29)
        -----------------
        
        - virtualprotocol: 允许指定缺省协议，去除原来一个应用只能使用一个虚拟协议的限制
        
        0.4.0(2014-10-28)
        -----------------
        
        - 添加 manager 模块
        
        0.3.2(2014-10-27)
        -----------------
        
        - BUGFIX: dictutil.Dot 应该支持 [key] 方式访问
        
        0.3.1(2014-10-27)
        -----------------
        
        - 完善软件包版本信息
        
        0.3.0(2014-10-26)
        -----------------
        
        - dictutil -- repr_dict, Dot, DotDict, OrderedDict, DotOrderedDict
        
        0.2.0(2014-10-25)
        -----------------
        
        - yamlfile -- add !include tag
        
        0.1.1(2014-10-25)
        -----------------
        
        - Add MANIFEST.in
        
        0.1.0(2014-10-25)
        -----------------
        
        - pu.aio.client
        - pu.aio.timer
        - pu.aio.virtualprotocol
        
        - pu.util.shorten
Keywords: python,util
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
